diff --git a/src/main/java/biomesoplenty/api/item/BOPItems.java b/src/main/java/biomesoplenty/api/item/BOPItems.java index 9b95f05c8..a54bc1708 100644 --- a/src/main/java/biomesoplenty/api/item/BOPItems.java +++ b/src/main/java/biomesoplenty/api/item/BOPItems.java @@ -48,6 +48,23 @@ public class BOPItems public static Item pinecone; public static Item other_slab; + public static Item boat_sacred_oak; + public static Item boat_cherry; + public static Item boat_umbran; + public static Item boat_fir; + public static Item boat_ethereal; + public static Item boat_magic; + public static Item boat_mangrove; + public static Item boat_palm; + public static Item boat_redwood; + public static Item boat_willow; + public static Item boat_pine; + public static Item boat_hellbark; + public static Item boat_jacaranda; + public static Item boat_mahogany; + public static Item boat_ebony; + public static Item boat_eucalyptus; + public static Item sacred_oak_door; public static Item cherry_door; public static Item umbran_door; diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BOPOverworldBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/BOPOverworldBiome.java index 7aa811e75..1e1ec17c7 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BOPOverworldBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BOPOverworldBiome.java @@ -82,7 +82,7 @@ public class BOPOverworldBiome extends BOPBiome IBlockPosQuery suitableStonePosition = BlockQuery.buildAnd().withAltitudeBetween(0, 55).blocks(Blocks.STONE).create(); this.addGenerator("miners_delight", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.25F).generationAttempts(64).with(BOPFlowers.MINERS_DELIGHT).placeOn(suitableStonePosition).scatterYMethod(ScatterYMethod.BELOW_GROUND).create()); this.addGenerator("glowshrooms", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.5F).generationAttempts(64).placeOn(suitableStonePosition).with(BOPBlocks.mushroom.getDefaultState().withProperty(BlockBOPMushroom.VARIANT, BlockBOPMushroom.MushroomType.GLOWSHROOM)).scatterYMethod(ScatterYMethod.BELOW_GROUND).create()); - this.addGenerator("stone_formations", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(30.0F).generationAttempts(32).placeOn(suitableStonePosition).with(BOPBlocks.stone_formations.getDefaultState()).minHeight(1).maxHeight(5).randomDirection(true).scatterYMethod(ScatterYMethod.BELOW_GROUND).create()); + this.addGenerator("stone_formations", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(30.0F).generationAttempts(16).placeOn(suitableStonePosition).with(BOPBlocks.stone_formations.getDefaultState()).minHeight(1).maxHeight(5).randomDirection(true).scatterYMethod(ScatterYMethod.BELOW_GROUND).create()); } @Override diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenBog.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenBog.java index bf821f21b..e8862cf27 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenBog.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenBog.java @@ -97,8 +97,8 @@ public class BiomeGenBog extends BOPOverworldBiome // other plants this.addGenerator("koru", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.KORU).create()); this.addGenerator("river_cane", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(1.0F).generationAttempts(24).placeOn(BlockQueries.litFertileWaterside).with(BlockBOPPlant.paging.getVariantState(BOPPlants.RIVERCANE)).minHeight(1).maxHeight(3).create()); - this.addGenerator("bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(2.0F).with(BOPPlants.BUSH).create()); - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.SHRUB).create()); + this.addGenerator("bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.5F).with(BOPPlants.BUSH).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.4F).with(BOPPlants.SHRUB).create()); this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).create()); this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.6F).placeOn(BlockQueries.fertile).with(BOPPlants.DEADLEAFPILE).create()); this.addGenerator("poison_ivy", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).generationAttempts(16).with(BOPPlants.POISONIVY).create()); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenBorealForest.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenBorealForest.java index f1d5db561..9963b662f 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenBorealForest.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenBorealForest.java @@ -76,7 +76,7 @@ public class BiomeGenBorealForest extends BOPOverworldBiome flowerGenerator.add("poppy", 1, (new GeneratorFlora.Builder().with(BlockFlower.EnumFlowerType.POPPY).create())); // other plants - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.SHRUB).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.SHRUB).create()); this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).placeOn(BlockQueries.fertile).with(BOPPlants.DEADLEAFPILE).create()); this.addGenerator("flax", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPDoublePlant.DoublePlantType.FLAX).create()); this.addGenerator("poison_ivy", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).generationAttempts(16).with(BOPPlants.POISONIVY).create()); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenBrushland.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenBrushland.java index 56951bd92..587fa1d44 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenBrushland.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenBrushland.java @@ -66,8 +66,8 @@ public class BiomeGenBrushland extends BOPOverworldBiome grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create()); // other plants - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.SHRUB).create()); - this.addGenerator("thorns", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.THORN).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.25F).with(BOPPlants.SHRUB).create()); + this.addGenerator("thorns", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.25F).with(BOPPlants.THORN).create()); // gem this.addGenerator("ruby", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.RUBY).create()); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenChaparral.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenChaparral.java index 5dc58e12d..64ced64ff 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenChaparral.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenChaparral.java @@ -99,7 +99,7 @@ public class BiomeGenChaparral extends BOPOverworldBiome // other plants this.addGenerator("berry_bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.BERRYBUSH).create()); - this.addGenerator("bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.BUSH).create()); + this.addGenerator("bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.75F).with(BOPPlants.BUSH).create()); this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.SHRUB).create()); this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).create()); this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).placeOn(BlockQueries.fertile).with(BOPPlants.DEADLEAFPILE).create()); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenFen.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenFen.java index c0fcf17fd..74bbfa2f6 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenFen.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenFen.java @@ -99,7 +99,7 @@ public class BiomeGenFen extends BOPOverworldBiome this.addGenerator("double_cattail", GeneratorStage.FLOWERS,(new GeneratorDoubleFlora.Builder()).amountPerChunk(4.0F).with(BlockBOPDoublePlant.DoublePlantType.TALL_CATTAIL).create()); this.addGenerator("river_cane", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(1.0F).generationAttempts(24).placeOn(BlockQueries.litFertileWaterside).with(BlockBOPPlant.paging.getVariantState(BOPPlants.RIVERCANE)).minHeight(1).maxHeight(3).create()); this.addGenerator("koru", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.KORU).create()); - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).with(BOPPlants.SHRUB).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create()); this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).placeOn(BlockQueries.fertile).with(BOPPlants.DEADLEAFPILE).generationAttempts(64).create()); // water plants diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenFlowerIsland.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenFlowerIsland.java index e4350688f..a829230f2 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenFlowerIsland.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenFlowerIsland.java @@ -39,7 +39,7 @@ public class BiomeGenFlowerIsland extends BOPOverworldBiome public BiomeGenFlowerIsland() { - super("flower_island", new PropsBuilder("Flower Island").withGuiColour(0x74D374).withTemperature(0.6F).withRainfall(0.8F)); + super("flower_island", new PropsBuilder("Flower Island").withGuiColour(0x74D374).withTemperature(0.85F).withRainfall(0.8F)); // terrain this.terrainSettings.avgHeight(70).heightVariation(10, 15).octaves(0, 0, 1, 1, 2, 2); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMangrove.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMangrove.java index a04d3be73..8ab3a10c0 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMangrove.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMangrove.java @@ -37,7 +37,7 @@ public class BiomeGenMangrove extends BOPOverworldBiome { public BiomeGenMangrove() { - super("mangrove", new PropsBuilder("Mangrove").withTemperature(0.8F).withRainfall(0.3F).withGuiColour(7251289).withWaterColor(0xCDFF51)); + super("mangrove", new PropsBuilder("Mangrove").withTemperature(0.85F).withRainfall(0.3F).withGuiColour(7251289).withWaterColor(0xCDFF51)); // terrain this.terrainSettings.avgHeight(62).heightVariation(8, 2).octaves(0, 1, 2, 2, 1, 0); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMapleWoods.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMapleWoods.java index ec2ac0b95..ba44b2096 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMapleWoods.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMapleWoods.java @@ -68,7 +68,7 @@ public class BiomeGenMapleWoods extends BOPOverworldBiome flowerGenerator.add("poppy", 1, (new GeneratorFlora.Builder().with(BlockFlower.EnumFlowerType.POPPY).create())); // other plants - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.SHRUB).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create()); this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(8.0F).placeOn(BlockQueries.fertile).with(BOPPlants.DEADLEAFPILE).create()); // water plants diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMeadow.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMeadow.java index 118eadd4c..3f4c1def2 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMeadow.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMeadow.java @@ -82,7 +82,7 @@ public class BiomeGenMeadow extends BOPOverworldBiome // other plants this.addGenerator("bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.BUSH).create()); this.addGenerator("flax", GeneratorStage.FLOWERS,(new GeneratorDoubleFlora.Builder()).amountPerChunk(0.1F).with(BlockBOPDoublePlant.DoublePlantType.FLAX).generationAttempts(6).create()); - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).with(BOPPlants.SHRUB).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create()); this.addGenerator("clover_patches", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).generationAttempts(128).with(BOPPlants.CLOVERPATCH).create()); this.addGenerator("sprouts", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.4F).with(BOPPlants.SPROUT).create()); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMountain.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMountain.java index 99c640652..8f6c37f29 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMountain.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMountain.java @@ -126,7 +126,7 @@ public class BiomeGenMountain extends BOPOverworldBiome grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).generationAttempts(128).create()); // other plants - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.SHRUB).generationAttempts(type == MountainType.MOUNTAIN_FOOTHILLS ? 64 : 32).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).generationAttempts(type == MountainType.MOUNTAIN_FOOTHILLS ? 64 : 32).create()); this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.8F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).create()); this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.2F).placeOn(BlockQueries.fertile).with(BOPPlants.DEADLEAFPILE).create()); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMysticGrove.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMysticGrove.java index 0d99ef63c..87cff2a82 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMysticGrove.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMysticGrove.java @@ -113,7 +113,7 @@ public class BiomeGenMysticGrove extends BOPOverworldBiome //other plants this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).create()); - this.addGenerator("sprouts", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.SPROUT).create()); + this.addGenerator("sprouts", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.25F).with(BOPPlants.SPROUT).create()); this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create()); this.addGenerator("clover_patches", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).generationAttempts(128).with(BOPPlants.CLOVERPATCH).create()); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenOutback.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenOutback.java index 2199e97d0..da5da7c49 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenOutback.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenOutback.java @@ -68,7 +68,7 @@ public class BiomeGenOutback extends BOPOverworldBiome grassGenerator.add("tallgrass", 1, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create()); // other plants - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.SHRUB).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.SHRUB).create()); this.addGenerator("tiny_cacti", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.TINYCACTUS).create()); this.addGenerator("dead_bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(2.0F).with(Blocks.DEADBUSH.getDefaultState()).create()); this.addGenerator("cacti", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(0.5F).generationAttempts(24).placeOn(this.topBlock).with(Blocks.CACTUS.getDefaultState()).minHeight(1).maxHeight(2).create()); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenOvergrownCliffs.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenOvergrownCliffs.java index f832a68ff..29cc41ac2 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenOvergrownCliffs.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenOvergrownCliffs.java @@ -79,8 +79,8 @@ public class BiomeGenOvergrownCliffs extends BOPOverworldBiome treeGenerator.add("jungle_twiglet", 2, (new GeneratorTwigletTree.Builder()).minHeight(2).maxHeight(2).log(BlockPlanks.EnumType.JUNGLE).leaves(BlockPlanks.EnumType.JUNGLE).trunkFruit(Blocks.COCOA.getDefaultState()).create()); // other plants - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.4F).with(BOPPlants.SHRUB).create()); - this.addGenerator("sprouts", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.SPROUT).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.25F).with(BOPPlants.SHRUB).create()); + this.addGenerator("sprouts", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.25F).with(BOPPlants.SPROUT).create()); // flowers GeneratorWeighted flowerGenerator = new GeneratorWeighted(1.5F); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenPrairie.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenPrairie.java index f671fb395..da3ad18f0 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenPrairie.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenPrairie.java @@ -70,7 +70,7 @@ public class BiomeGenPrairie extends BOPOverworldBiome flowerGenerator.add("poppy", 1, (new GeneratorFlora.Builder().with(BlockFlower.EnumFlowerType.POPPY).create())); // other plants - this.addGenerator("berry_bushes", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(0.4F).with(BOPPlants.BERRYBUSH).generationAttempts(8).create()); + this.addGenerator("berry_bushes", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(0.25F).with(BOPPlants.BERRYBUSH).generationAttempts(8).create()); this.addGenerator("shrubs", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create()); this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(1).with(BOPPlants.REED).generationAttempts(32).create()); this.addGenerator("leaf_piles", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(5).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).generationAttempts(32).create()); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenRainforest.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenRainforest.java index 6a40c9639..4a8d73e1e 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenRainforest.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenRainforest.java @@ -77,10 +77,10 @@ public class BiomeGenRainforest extends BOPOverworldBiome flowerGenerator.add("poppy", 1, (new GeneratorFlora.Builder().with(BlockFlower.EnumFlowerType.POPPY).create())); // other plants - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.4F).with(BOPPlants.SHRUB).create()); - this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).generationAttempts(64).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create()); + this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).generationAttempts(64).create()); this.addGenerator("clover_patches", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).generationAttempts(128).with(BOPPlants.CLOVERPATCH).create()); - this.addGenerator("rafflesia", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.RAFFLESIA).create()); + this.addGenerator("rafflesia", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.RAFFLESIA).create()); this.addGenerator("melons", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(0.015625F).placeOn(this.topBlock).with(Blocks.MELON_BLOCK.getDefaultState()).create()); // water plants diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenRedwoodForest.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenRedwoodForest.java index cd40c5244..91d6a5fb7 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenRedwoodForest.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenRedwoodForest.java @@ -47,9 +47,9 @@ public class BiomeGenRedwoodForest extends BOPOverworldBiome treeGenerator.add("redwood_thin", 1, (new GeneratorRedwoodTreeThin.Builder()).log(BOPWoods.REDWOOD).leaves(BOPTrees.REDWOOD).create()); // other plants - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).with(BOPPlants.SHRUB).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create()); this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).placeOn(BlockQueries.fertile).with(BOPPlants.DEADLEAFPILE).create()); - this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).generationAttempts(64).create()); + this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).generationAttempts(64).create()); this.addGenerator("double_fern", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(8.0F).with(BlockDoublePlant.EnumPlantType.FERN).create()); // shrooms diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenSacredSprings.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenSacredSprings.java index ed202ac1b..142f22648 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenSacredSprings.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenSacredSprings.java @@ -36,7 +36,7 @@ public class BiomeGenSacredSprings extends BOPOverworldBiome { public BiomeGenSacredSprings() { - super("sacred_springs", new PropsBuilder("Sacred Springs").withGuiColour(39259).withTemperature(0.8F).withRainfall(0.9F)); + super("sacred_springs", new PropsBuilder("Sacred Springs").withGuiColour(39259).withTemperature(0.85F).withRainfall(0.9F)); // terrain this.terrainSettings.avgHeight(64).heightVariation(10, 10); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenShield.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenShield.java index 83cbf90c9..fa48355c7 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenShield.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenShield.java @@ -92,7 +92,7 @@ public class BiomeGenShield extends BOPOverworldBiome flowerGenerator.add("poppy", 1, (new GeneratorFlora.Builder().with(BlockFlower.EnumFlowerType.POPPY).create())); // other plants - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.SHRUB).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create()); this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).create()); this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).placeOn(BlockQueries.fertile).with(BOPPlants.DEADLEAFPILE).create()); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenSnowyConiferousForest.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenSnowyConiferousForest.java index 0a615e861..36f6e175b 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenSnowyConiferousForest.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenSnowyConiferousForest.java @@ -54,9 +54,9 @@ public class BiomeGenSnowyConiferousForest extends BOPOverworldBiome treeGenerator.add("mega_fir", 2, (new GeneratorTaigaTree.Builder()).log(BOPWoods.FIR).leaves(BOPTrees.FIR).minHeight(20).maxHeight(40).trunkWidth(2).create()); // other plants - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.05F).with(BOPPlants.SHRUB).create()); this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(2.0F).placeOn(BlockQueries.fertile).with(BOPPlants.DEADLEAFPILE).create()); - this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).generationAttempts(64).create()); + this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).generationAttempts(64).create()); // shrooms this.addGenerator("brown_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).generationAttempts(16).with(Blocks.BROWN_MUSHROOM.getDefaultState()).create()); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenSnowyForest.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenSnowyForest.java index 5b1a8b06c..7813cb62d 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenSnowyForest.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenSnowyForest.java @@ -62,8 +62,8 @@ public class BiomeGenSnowyForest extends BOPOverworldBiome grassGenerator.add("tallgrass", 1, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create()); // other plants - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create()); - this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.05F).with(BOPPlants.SHRUB).create()); + this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).create()); this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.4F).placeOn(BlockQueries.fertile).with(BOPPlants.DEADLEAFPILE).create()); // flowers diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenTemperateRainforest.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenTemperateRainforest.java index ffcaa438e..615a9f36f 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenTemperateRainforest.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenTemperateRainforest.java @@ -66,7 +66,7 @@ public class BiomeGenTemperateRainforest extends BOPOverworldBiome treeGenerator.add("willow", 1, (new GeneratorBasicTree.Builder()).log(BOPWoods.WILLOW).leaves(BlockBOPLeaves.paging.getVariantState(BOPTrees.WILLOW).withProperty(BlockOldLeaf.CHECK_DECAY, Boolean.valueOf(false))).minHeight(8).maxHeight(12).maxLeavesRadius(2).vine(BOPBlocks.willow_vine.getDefaultState()).leavesOffset(0).create()); // other plants - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.6F).with(BOPPlants.SHRUB).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.SHRUB).create()); this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).placeOn(BlockQueries.fertile).with(BOPPlants.DEADLEAFPILE).create()); this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).generationAttempts(64).create()); this.addGenerator("flax", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPDoublePlant.DoublePlantType.FLAX).create()); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenTundra.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenTundra.java index 5d357e10d..cc16be207 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenTundra.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenTundra.java @@ -71,7 +71,7 @@ public class BiomeGenTundra extends BOPOverworldBiome this.addGenerator("trees", GeneratorStage.TREE, (new GeneratorBush.Builder()).amountPerChunk(0.7F).maxHeight(2).create()); // other plants - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).with(BOPPlants.SHRUB).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create()); this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).generationAttempts(64).create()); this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).placeOn(BlockQueries.fertile).with(BOPPlants.DEADLEAFPILE).generationAttempts(64).create()); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenWoodland.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenWoodland.java index c5732e3ef..cea0cdc1f 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenWoodland.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenWoodland.java @@ -80,7 +80,7 @@ public class BiomeGenWoodland extends BOPOverworldBiome // other plants this.addGenerator("berry_bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.BERRYBUSH).create()); - this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.SHRUB).create()); + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create()); this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).generationAttempts(64).create()); this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(2.0F).placeOn(BlockQueries.fertile).with(BOPPlants.DEADLEAFPILE).generationAttempts(64).create()); this.addGenerator("flax", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(0.1F).with(BlockBOPDoublePlant.DoublePlantType.FLAX).create()); diff --git a/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtBirchForest.java b/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtBirchForest.java index 545011065..ce5f8eea3 100644 --- a/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtBirchForest.java +++ b/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtBirchForest.java @@ -40,17 +40,17 @@ public class BiomeExtBirchForest extends ExtendedBiomeWrapper this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).placeOn(BlockQueries.fertile).with(BOPPlants.DEADLEAFPILE).create()); this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).generationAttempts(64).create()); this.addGenerator("flax", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(0.1F).with(BlockBOPDoublePlant.DoublePlantType.FLAX).create()); - this.addGenerator("clover_patches", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).generationAttempts(128).with(BOPPlants.CLOVERPATCH).create()); + this.addGenerator("clover_patches", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.05F).generationAttempts(128).with(BOPPlants.CLOVERPATCH).create()); this.addGenerator("poison_ivy", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).generationAttempts(16).with(BOPPlants.POISONIVY).create()); // shrooms this.addGenerator("toadstools", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).generationAttempts(16).with(BlockBOPMushroom.MushroomType.TOADSTOOL).create()); // flowers - GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.15F); + GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.1F); this.addGenerator("flowers", GeneratorStage.FLOWERS, flowerGenerator); flowerGenerator.add("clover", 1, (new GeneratorFlora.Builder().with(BOPFlowers.CLOVER).create())); - flowerGenerator.add("lily_of_the_valley", 1, (new GeneratorFlora.Builder().with(BOPFlowers.LILY_OF_THE_VALLEY)).generationAttempts(128).create()); + flowerGenerator.add("lily_of_the_valley", 1, (new GeneratorFlora.Builder().with(BOPFlowers.LILY_OF_THE_VALLEY)).create()); // gem this.addGenerator("amber", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.AMBER).create()); diff --git a/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtBirchForestHills.java b/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtBirchForestHills.java index 00bf32d10..f02e6ce56 100644 --- a/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtBirchForestHills.java +++ b/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtBirchForestHills.java @@ -40,17 +40,17 @@ public class BiomeExtBirchForestHills extends ExtendedBiomeWrapper this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).placeOn(BlockQueries.fertile).with(BOPPlants.DEADLEAFPILE).create()); this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).placeOn(BlockQueries.fertile).with(BOPPlants.LEAFPILE).generationAttempts(64).create()); this.addGenerator("flax", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(0.1F).with(BlockBOPDoublePlant.DoublePlantType.FLAX).create()); - this.addGenerator("clover_patches", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.12F).generationAttempts(128).with(BOPPlants.CLOVERPATCH).create()); + this.addGenerator("clover_patches", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.05F).generationAttempts(128).with(BOPPlants.CLOVERPATCH).create()); this.addGenerator("poison_ivy", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).generationAttempts(16).with(BOPPlants.POISONIVY).create()); // shrooms this.addGenerator("toadstools", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).generationAttempts(16).with(BlockBOPMushroom.MushroomType.TOADSTOOL).create()); // flowers - GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.15F); + GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.1F); this.addGenerator("flowers", GeneratorStage.FLOWERS, flowerGenerator); flowerGenerator.add("clover", 1, (new GeneratorFlora.Builder().with(BOPFlowers.CLOVER).create())); - flowerGenerator.add("lily_of_the_valley", 1, (new GeneratorFlora.Builder().with(BOPFlowers.LILY_OF_THE_VALLEY)).generationAttempts(128).create()); + flowerGenerator.add("lily_of_the_valley", 1, (new GeneratorFlora.Builder().with(BOPFlowers.LILY_OF_THE_VALLEY)).create()); // gem this.addGenerator("amber", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.AMBER).create()); diff --git a/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtForest.java b/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtForest.java index 1edd0fcda..cf31d8191 100644 --- a/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtForest.java +++ b/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtForest.java @@ -60,7 +60,7 @@ public class BiomeExtForest extends ExtendedBiomeWrapper this.addGenerator("blue_milk_caps", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).generationAttempts(16).with(BlockBOPMushroom.MushroomType.BLUE_MILK_CAP).create()); // flowers - GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.2F); + GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.15F); this.addGenerator("flowers", GeneratorStage.FLOWERS, flowerGenerator); flowerGenerator.add("white_anemones", 1, (new GeneratorFlora.Builder().with(BOPFlowers.WHITE_ANEMONE).create())); flowerGenerator.add("blue_hydrangeas", 2, (new GeneratorFlora.Builder().with(BOPFlowers.BLUE_HYDRANGEA).create())); diff --git a/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtForestHills.java b/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtForestHills.java index ed5106ddb..ff031d2f3 100644 --- a/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtForestHills.java +++ b/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtForestHills.java @@ -60,7 +60,7 @@ public class BiomeExtForestHills extends ExtendedBiomeWrapper this.addGenerator("blue_milk_caps", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).generationAttempts(16).with(BlockBOPMushroom.MushroomType.BLUE_MILK_CAP).create()); // flowers - GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.2F); + GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.15F); this.addGenerator("flowers", GeneratorStage.FLOWERS, flowerGenerator); flowerGenerator.add("white_anemones", 1, (new GeneratorFlora.Builder().with(BOPFlowers.WHITE_ANEMONE).create())); flowerGenerator.add("blue_hydrangeas", 2, (new GeneratorFlora.Builder().with(BOPFlowers.BLUE_HYDRANGEA).create())); diff --git a/src/main/java/biomesoplenty/common/biome/vanilla/ExtendedBiomeWrapper.java b/src/main/java/biomesoplenty/common/biome/vanilla/ExtendedBiomeWrapper.java index 2bc692ac5..1d786c26c 100644 --- a/src/main/java/biomesoplenty/common/biome/vanilla/ExtendedBiomeWrapper.java +++ b/src/main/java/biomesoplenty/common/biome/vanilla/ExtendedBiomeWrapper.java @@ -47,7 +47,7 @@ public class ExtendedBiomeWrapper implements IExtendedBiome IBlockPosQuery suitableStonePosition = BlockQuery.buildAnd().withAltitudeBetween(0, 55).blocks(Blocks.STONE).create(); this.addGenerator("miners_delight", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.25F).generationAttempts(64).with(BOPFlowers.MINERS_DELIGHT).placeOn(suitableStonePosition).scatterYMethod(ScatterYMethod.BELOW_GROUND).create()); this.addGenerator("glowshrooms", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.5F).generationAttempts(64).placeOn(suitableStonePosition).with(BOPBlocks.mushroom.getDefaultState().withProperty(BlockBOPMushroom.VARIANT, BlockBOPMushroom.MushroomType.GLOWSHROOM)).scatterYMethod(ScatterYMethod.BELOW_GROUND).create()); - this.addGenerator("stone_formations", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(30.0F).generationAttempts(32).placeOn(suitableStonePosition).with(BOPBlocks.stone_formations.getDefaultState()).minHeight(1).maxHeight(7).randomDirection(true).scatterYMethod(ScatterYMethod.BELOW_GROUND).create()); + this.addGenerator("stone_formations", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(30.0F).generationAttempts(16).placeOn(suitableStonePosition).with(BOPBlocks.stone_formations.getDefaultState()).minHeight(1).maxHeight(7).randomDirection(true).scatterYMethod(ScatterYMethod.BELOW_GROUND).create()); } @Override diff --git a/src/main/java/biomesoplenty/common/entities/ai/EntityAIEatBOPGrass.java b/src/main/java/biomesoplenty/common/entities/ai/EntityAIEatBOPGrass.java index 1e958557e..6cd597e76 100644 --- a/src/main/java/biomesoplenty/common/entities/ai/EntityAIEatBOPGrass.java +++ b/src/main/java/biomesoplenty/common/entities/ai/EntityAIEatBOPGrass.java @@ -111,7 +111,7 @@ public class EntityAIEatBOPGrass extends EntityAIEatGrass { if (this.world.getGameRules().getBoolean("mobGriefing")) { - this.world.playEvent(2001, posDown, Block.getIdFromBlock(BOPBlocks.grass)); + this.world.playEvent(2001, posDown, Block.getIdFromBlock(Blocks.GRASS)); this.world.setBlockState(posDown, BlockBOPGrass.getDirtBlockState(stateDown), 2); } @@ -119,7 +119,7 @@ public class EntityAIEatBOPGrass extends EntityAIEatGrass { if (this.world.getGameRules().getBoolean("mobGriefing")) { - this.world.playEvent(2001, posDown, Block.getIdFromBlock(BOPBlocks.grass)); + this.world.playEvent(2001, posDown, Block.getIdFromBlock(Blocks.GRASS)); this.world.setBlockState(posDown, Blocks.DIRT.getDefaultState(), 2); } } diff --git a/src/main/java/biomesoplenty/common/entities/item/EntityBOPBoat.java b/src/main/java/biomesoplenty/common/entities/item/EntityBOPBoat.java new file mode 100644 index 000000000..d241bfdea --- /dev/null +++ b/src/main/java/biomesoplenty/common/entities/item/EntityBOPBoat.java @@ -0,0 +1,1083 @@ +/******************************************************************************* + * Copyright 2015-2016, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ + +package biomesoplenty.common.entities.item; + +import java.util.List; + +import javax.annotation.Nullable; + +import com.google.common.collect.Lists; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.api.enums.BOPWoods; +import biomesoplenty.api.item.BOPItems; +import net.minecraft.block.BlockLiquid; +import net.minecraft.block.material.Material; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.MoverType; +import net.minecraft.entity.item.EntityBoat; +import net.minecraft.entity.passive.EntityAnimal; +import net.minecraft.entity.passive.EntityWaterMob; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.init.SoundEvents; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.datasync.DataParameter; +import net.minecraft.network.datasync.DataSerializers; +import net.minecraft.network.datasync.EntityDataManager; +import net.minecraft.network.play.client.CPacketSteerBoat; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EntityDamageSourceIndirect; +import net.minecraft.util.EntitySelectors; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.SoundEvent; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +public class EntityBOPBoat extends EntityBoat +{ + private static final DataParameter TIME_SINCE_HIT = EntityDataManager.createKey(EntityBOPBoat.class, DataSerializers.VARINT); + private static final DataParameter FORWARD_DIRECTION = EntityDataManager.createKey(EntityBOPBoat.class, DataSerializers.VARINT); + private static final DataParameter DAMAGE_TAKEN = EntityDataManager.createKey(EntityBOPBoat.class, DataSerializers.FLOAT); + private static final DataParameter BOAT_TYPE = EntityDataManager.createKey(EntityBOPBoat.class, DataSerializers.VARINT); + private static final DataParameter[] DATA_ID_PADDLE = new DataParameter[] {EntityDataManager.createKey(EntityBOPBoat.class, DataSerializers.BOOLEAN), EntityDataManager.createKey(EntityBOPBoat.class, DataSerializers.BOOLEAN)}; + private final float[] paddlePositions; + private float momentum; + private float outOfControlTicks; + private float deltaRotation; + private int lerpSteps; + private double lerpX; + private double lerpY; + private double lerpZ; + private double lerpYaw; + private double lerpPitch; + private boolean leftInputDown; + private boolean rightInputDown; + private boolean forwardInputDown; + private boolean backInputDown; + private double waterLevel; + private float boatGlide; + private EntityBOPBoat.Status status; + private EntityBOPBoat.Status previousStatus; + private double lastYd; + + public EntityBOPBoat(World worldIn) + { + super(worldIn); + this.paddlePositions = new float[2]; + this.preventEntitySpawning = true; + this.setSize(1.375F, 0.5625F); + } + + public EntityBOPBoat(World worldIn, double x, double y, double z) + { + this(worldIn); + this.setPosition(x, y, z); + this.motionX = 0.0D; + this.motionY = 0.0D; + this.motionZ = 0.0D; + this.prevPosX = x; + this.prevPosY = y; + this.prevPosZ = z; + } + + @Override + protected boolean canTriggerWalking() + { + return false; + } + + @Override + protected void entityInit() + { + this.dataManager.register(TIME_SINCE_HIT, Integer.valueOf(0)); + this.dataManager.register(FORWARD_DIRECTION, Integer.valueOf(1)); + this.dataManager.register(DAMAGE_TAKEN, Float.valueOf(0.0F)); + this.dataManager.register(BOAT_TYPE, Integer.valueOf(EntityBOPBoat.Type.SACRED_OAK.ordinal())); + + for (DataParameter dataparameter : DATA_ID_PADDLE) + { + this.dataManager.register(dataparameter, Boolean.valueOf(false)); + } + } + + @Nullable + @Override + public AxisAlignedBB getCollisionBox(Entity entityIn) + { + return entityIn.canBePushed() ? entityIn.getEntityBoundingBox() : null; + } + + @Nullable + @Override + public AxisAlignedBB getCollisionBoundingBox() + { + return this.getEntityBoundingBox(); + } + + @Override + public boolean canBePushed() + { + return true; + } + + @Override + public double getMountedYOffset() + { + return -0.1D; + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) + { + if (this.isEntityInvulnerable(source)) + { + return false; + } + else if (!this.world.isRemote && !this.isDead) + { + if (source instanceof EntityDamageSourceIndirect && source.getTrueSource() != null && this.isPassenger(source.getTrueSource())) + { + return false; + } + else + { + this.setForwardDirection(-this.getForwardDirection()); + this.setTimeSinceHit(10); + this.setDamageTaken(this.getDamageTaken() + amount * 10.0F); + this.markVelocityChanged(); + boolean flag = source.getTrueSource() instanceof EntityPlayer && ((EntityPlayer)source.getTrueSource()).capabilities.isCreativeMode; + + if (flag || this.getDamageTaken() > 40.0F) + { + if (!flag && this.world.getGameRules().getBoolean("doEntityDrops")) + { + this.dropItemWithOffset(this.getItemBoat(), 1, 0.0F); + } + + this.setDead(); + } + + return true; + } + } + else + { + return true; + } + } + + @Override + public void applyEntityCollision(Entity entityIn) + { + if (entityIn instanceof EntityBoat) + { + if (entityIn.getEntityBoundingBox().minY < this.getEntityBoundingBox().maxY) + { + super.applyEntityCollision(entityIn); + } + } + else if (entityIn.getEntityBoundingBox().minY <= this.getEntityBoundingBox().minY) + { + super.applyEntityCollision(entityIn); + } + } + + @Override + public Item getItemBoat() + { + switch (this.getBOPBoatType()) + { + case SACRED_OAK: + default: + return BOPItems.boat_sacred_oak; + case CHERRY: + return BOPItems.boat_cherry; + case UMBRAN: + return BOPItems.boat_umbran; + case FIR: + return BOPItems.boat_fir; + case ETHEREAL: + return BOPItems.boat_ethereal; + case MAGIC: + return BOPItems.boat_magic; + case MANGROVE: + return BOPItems.boat_mangrove; + case PALM: + return BOPItems.boat_palm; + case REDWOOD: + return BOPItems.boat_redwood; + case WILLOW: + return BOPItems.boat_willow; + case PINE: + return BOPItems.boat_pine; + case HELLBARK: + return BOPItems.boat_hellbark; + case JACARANDA: + return BOPItems.boat_jacaranda; + case MAHOGANY: + return BOPItems.boat_mahogany; + case EBONY: + return BOPItems.boat_ebony; + case EUCALYPTUS: + return BOPItems.boat_eucalyptus; + } + } + + @SideOnly(Side.CLIENT) + @Override + public void performHurtAnimation() + { + this.setForwardDirection(-this.getForwardDirection()); + this.setTimeSinceHit(10); + this.setDamageTaken(this.getDamageTaken() * 11.0F); + } + + @Override + public boolean canBeCollidedWith() + { + return !this.isDead; + } + + @SideOnly(Side.CLIENT) + @Override + public void setPositionAndRotationDirect(double x, double y, double z, float yaw, float pitch, int posRotationIncrements, boolean teleport) + { + this.lerpX = x; + this.lerpY = y; + this.lerpZ = z; + this.lerpYaw = (double)yaw; + this.lerpPitch = (double)pitch; + this.lerpSteps = 10; + } + + @Override + public EnumFacing getAdjustedHorizontalFacing() + { + return this.getHorizontalFacing().rotateY(); + } + + @Override + public void onUpdate() + { + this.previousStatus = this.status; + this.status = this.getBoatStatus(); + + if (this.status != EntityBOPBoat.Status.UNDER_WATER && this.status != EntityBOPBoat.Status.UNDER_FLOWING_WATER) + { + this.outOfControlTicks = 0.0F; + } + else + { + ++this.outOfControlTicks; + } + + if (!this.world.isRemote && this.outOfControlTicks >= 60.0F) + { + this.removePassengers(); + } + + if (this.getTimeSinceHit() > 0) + { + this.setTimeSinceHit(this.getTimeSinceHit() - 1); + } + + if (this.getDamageTaken() > 0.0F) + { + this.setDamageTaken(this.getDamageTaken() - 1.0F); + } + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + super.onUpdate(); + this.tickLerp(); + + if (this.canPassengerSteer()) + { + if (this.getPassengers().isEmpty() || !(this.getPassengers().get(0) instanceof EntityPlayer)) + { + this.setPaddleState(false, false); + } + + this.updateMotion(); + + if (this.world.isRemote) + { + this.controlBoat(); + this.world.sendPacketToServer(new CPacketSteerBoat(this.getPaddleState(0), this.getPaddleState(1))); + } + + this.move(MoverType.SELF, this.motionX, this.motionY, this.motionZ); + } + else + { + this.motionX = 0.0D; + this.motionY = 0.0D; + this.motionZ = 0.0D; + } + + for (int i = 0; i <= 1; ++i) + { + if (this.getPaddleState(i)) + { + if (!this.isSilent() && (double)(this.paddlePositions[i] % ((float)Math.PI * 2F)) <= (Math.PI / 4D) && ((double)this.paddlePositions[i] + 0.39269909262657166D) % (Math.PI * 2D) >= (Math.PI / 4D)) + { + SoundEvent soundevent = this.getPaddleSound(); + + if (soundevent != null) + { + Vec3d vec3d = this.getLook(1.0F); + double d0 = i == 1 ? -vec3d.z : vec3d.z; + double d1 = i == 1 ? vec3d.x : -vec3d.x; + this.world.playSound((EntityPlayer)null, this.posX + d0, this.posY, this.posZ + d1, soundevent, this.getSoundCategory(), 1.0F, 0.8F + 0.4F * this.rand.nextFloat()); + } + } + + this.paddlePositions[i] = (float)((double)this.paddlePositions[i] + 0.39269909262657166D); + } + else + { + this.paddlePositions[i] = 0.0F; + } + } + + this.doBlockCollisions(); + List list = this.world.getEntitiesInAABBexcluding(this, this.getEntityBoundingBox().grow(0.20000000298023224D, -0.009999999776482582D, 0.20000000298023224D), EntitySelectors.getTeamCollisionPredicate(this)); + + if (!list.isEmpty()) + { + boolean flag = !this.world.isRemote && !(this.getControllingPassenger() instanceof EntityPlayer); + + for (int j = 0; j < list.size(); ++j) + { + Entity entity = list.get(j); + + if (!entity.isPassenger(this)) + { + if (flag && this.getPassengers().size() < 2 && !entity.isRiding() && entity.width < this.width && entity instanceof EntityLivingBase && !(entity instanceof EntityWaterMob) && !(entity instanceof EntityPlayer)) + { + entity.startRiding(this); + } + else + { + this.applyEntityCollision(entity); + } + } + } + } + } + + @Nullable + @Override + protected SoundEvent getPaddleSound() + { + switch (this.getBoatStatus()) + { + case IN_WATER: + case UNDER_WATER: + case UNDER_FLOWING_WATER: + return SoundEvents.ENTITY_BOAT_PADDLE_WATER; + case ON_LAND: + return SoundEvents.ENTITY_BOAT_PADDLE_LAND; + case IN_AIR: + default: + return null; + } + } + + private void tickLerp() + { + if (this.lerpSteps > 0 && !this.canPassengerSteer()) + { + double d0 = this.posX + (this.lerpX - this.posX) / (double)this.lerpSteps; + double d1 = this.posY + (this.lerpY - this.posY) / (double)this.lerpSteps; + double d2 = this.posZ + (this.lerpZ - this.posZ) / (double)this.lerpSteps; + double d3 = MathHelper.wrapDegrees(this.lerpYaw - (double)this.rotationYaw); + this.rotationYaw = (float)((double)this.rotationYaw + d3 / (double)this.lerpSteps); + this.rotationPitch = (float)((double)this.rotationPitch + (this.lerpPitch - (double)this.rotationPitch) / (double)this.lerpSteps); + --this.lerpSteps; + this.setPosition(d0, d1, d2); + this.setRotation(this.rotationYaw, this.rotationPitch); + } + } + + @Override + public void setPaddleState(boolean left, boolean right) + { + this.dataManager.set(DATA_ID_PADDLE[0], Boolean.valueOf(left)); + this.dataManager.set(DATA_ID_PADDLE[1], Boolean.valueOf(right)); + } + + @SideOnly(Side.CLIENT) + @Override + public float getRowingTime(int side, float limbSwing) + { + return this.getPaddleState(side) ? (float)MathHelper.clampedLerp((double)this.paddlePositions[side] - 0.39269909262657166D, (double)this.paddlePositions[side], (double)limbSwing) : 0.0F; + } + + private EntityBOPBoat.Status getBoatStatus() + { + EntityBOPBoat.Status entitybopboat$status = this.getUnderwaterStatus(); + + if (entitybopboat$status != null) + { + this.waterLevel = this.getEntityBoundingBox().maxY; + return entitybopboat$status; + } + else if (this.checkInWater()) + { + return EntityBOPBoat.Status.IN_WATER; + } + else + { + float f = this.getBoatGlide(); + + if (f > 0.0F) + { + this.boatGlide = f; + return EntityBOPBoat.Status.ON_LAND; + } + else + { + return EntityBOPBoat.Status.IN_AIR; + } + } + } + + @Override + public float getWaterLevelAbove() + { + AxisAlignedBB axisalignedbb = this.getEntityBoundingBox(); + int i = MathHelper.floor(axisalignedbb.minX); + int j = MathHelper.ceil(axisalignedbb.maxX); + int k = MathHelper.floor(axisalignedbb.maxY); + int l = MathHelper.ceil(axisalignedbb.maxY - this.lastYd); + int i1 = MathHelper.floor(axisalignedbb.minZ); + int j1 = MathHelper.ceil(axisalignedbb.maxZ); + BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain(); + + try + { + label108: + + for (int k1 = k; k1 < l; ++k1) + { + float f = 0.0F; + int l1 = i; + + while (true) + { + if (l1 >= j) + { + if (f < 1.0F) + { + float f2 = (float)blockpos$pooledmutableblockpos.getY() + f; + return f2; + } + + break; + } + + for (int i2 = i1; i2 < j1; ++i2) + { + blockpos$pooledmutableblockpos.setPos(l1, k1, i2); + IBlockState iblockstate = this.world.getBlockState(blockpos$pooledmutableblockpos); + + if (iblockstate.getMaterial() == Material.WATER) + { + f = Math.max(f, BlockLiquid.getBlockLiquidHeight(iblockstate, this.world, blockpos$pooledmutableblockpos)); + } + + if (f >= 1.0F) + { + continue label108; + } + } + + ++l1; + } + } + + float f1 = (float)(l + 1); + return f1; + } + finally + { + blockpos$pooledmutableblockpos.release(); + } + } + + @Override + public float getBoatGlide() + { + AxisAlignedBB axisalignedbb = this.getEntityBoundingBox(); + AxisAlignedBB axisalignedbb1 = new AxisAlignedBB(axisalignedbb.minX, axisalignedbb.minY - 0.001D, axisalignedbb.minZ, axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ); + int i = MathHelper.floor(axisalignedbb1.minX) - 1; + int j = MathHelper.ceil(axisalignedbb1.maxX) + 1; + int k = MathHelper.floor(axisalignedbb1.minY) - 1; + int l = MathHelper.ceil(axisalignedbb1.maxY) + 1; + int i1 = MathHelper.floor(axisalignedbb1.minZ) - 1; + int j1 = MathHelper.ceil(axisalignedbb1.maxZ) + 1; + List list = Lists.newArrayList(); + float f = 0.0F; + int k1 = 0; + BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain(); + + try + { + for (int l1 = i; l1 < j; ++l1) + { + for (int i2 = i1; i2 < j1; ++i2) + { + int j2 = (l1 != i && l1 != j - 1 ? 0 : 1) + (i2 != i1 && i2 != j1 - 1 ? 0 : 1); + + if (j2 != 2) + { + for (int k2 = k; k2 < l; ++k2) + { + if (j2 <= 0 || k2 != k && k2 != l - 1) + { + blockpos$pooledmutableblockpos.setPos(l1, k2, i2); + IBlockState iblockstate = this.world.getBlockState(blockpos$pooledmutableblockpos); + iblockstate.addCollisionBoxToList(this.world, blockpos$pooledmutableblockpos, axisalignedbb1, list, this, false); + + if (!list.isEmpty()) + { + f += iblockstate.getBlock().getSlipperiness(iblockstate, this.world, blockpos$pooledmutableblockpos, this); + ++k1; + } + + list.clear(); + } + } + } + } + } + } + finally + { + blockpos$pooledmutableblockpos.release(); + } + + return f / (float)k1; + } + + private boolean checkInWater() + { + AxisAlignedBB axisalignedbb = this.getEntityBoundingBox(); + int i = MathHelper.floor(axisalignedbb.minX); + int j = MathHelper.ceil(axisalignedbb.maxX); + int k = MathHelper.floor(axisalignedbb.minY); + int l = MathHelper.ceil(axisalignedbb.minY + 0.001D); + int i1 = MathHelper.floor(axisalignedbb.minZ); + int j1 = MathHelper.ceil(axisalignedbb.maxZ); + boolean flag = false; + this.waterLevel = Double.MIN_VALUE; + BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain(); + + try + { + for (int k1 = i; k1 < j; ++k1) + { + for (int l1 = k; l1 < l; ++l1) + { + for (int i2 = i1; i2 < j1; ++i2) + { + blockpos$pooledmutableblockpos.setPos(k1, l1, i2); + IBlockState iblockstate = this.world.getBlockState(blockpos$pooledmutableblockpos); + + if (iblockstate.getMaterial() == Material.WATER) + { + float f = BlockLiquid.getLiquidHeight(iblockstate, this.world, blockpos$pooledmutableblockpos); + this.waterLevel = Math.max((double)f, this.waterLevel); + flag |= axisalignedbb.minY < (double)f; + } + } + } + } + } + finally + { + blockpos$pooledmutableblockpos.release(); + } + + return flag; + } + + @Nullable + private EntityBOPBoat.Status getUnderwaterStatus() + { + AxisAlignedBB axisalignedbb = this.getEntityBoundingBox(); + double d0 = axisalignedbb.maxY + 0.001D; + int i = MathHelper.floor(axisalignedbb.minX); + int j = MathHelper.ceil(axisalignedbb.maxX); + int k = MathHelper.floor(axisalignedbb.maxY); + int l = MathHelper.ceil(d0); + int i1 = MathHelper.floor(axisalignedbb.minZ); + int j1 = MathHelper.ceil(axisalignedbb.maxZ); + boolean flag = false; + BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain(); + + try + { + for (int k1 = i; k1 < j; ++k1) + { + for (int l1 = k; l1 < l; ++l1) + { + for (int i2 = i1; i2 < j1; ++i2) + { + blockpos$pooledmutableblockpos.setPos(k1, l1, i2); + IBlockState iblockstate = this.world.getBlockState(blockpos$pooledmutableblockpos); + + if (iblockstate.getMaterial() == Material.WATER && d0 < (double)BlockLiquid.getLiquidHeight(iblockstate, this.world, blockpos$pooledmutableblockpos)) + { + if (((Integer)iblockstate.getValue(BlockLiquid.LEVEL)).intValue() != 0) + { + EntityBOPBoat.Status entitybopboat$status = EntityBOPBoat.Status.UNDER_FLOWING_WATER; + return entitybopboat$status; + } + + flag = true; + } + } + } + } + } + finally + { + blockpos$pooledmutableblockpos.release(); + } + + return flag ? EntityBOPBoat.Status.UNDER_WATER : null; + } + + private void updateMotion() + { + double d0 = -0.03999999910593033D; + double d1 = this.hasNoGravity() ? 0.0D : -0.03999999910593033D; + double d2 = 0.0D; + this.momentum = 0.05F; + + if (this.previousStatus == EntityBOPBoat.Status.IN_AIR && this.status != EntityBOPBoat.Status.IN_AIR && this.status != EntityBOPBoat.Status.ON_LAND) + { + this.waterLevel = this.getEntityBoundingBox().minY + (double)this.height; + this.setPosition(this.posX, (double)(this.getWaterLevelAbove() - this.height) + 0.101D, this.posZ); + this.motionY = 0.0D; + this.lastYd = 0.0D; + this.status = EntityBOPBoat.Status.IN_WATER; + } + else + { + if (this.status == EntityBOPBoat.Status.IN_WATER) + { + d2 = (this.waterLevel - this.getEntityBoundingBox().minY) / (double)this.height; + this.momentum = 0.9F; + } + else if (this.status == EntityBOPBoat.Status.UNDER_FLOWING_WATER) + { + d1 = -7.0E-4D; + this.momentum = 0.9F; + } + else if (this.status == EntityBOPBoat.Status.UNDER_WATER) + { + d2 = 0.009999999776482582D; + this.momentum = 0.45F; + } + else if (this.status == EntityBOPBoat.Status.IN_AIR) + { + this.momentum = 0.9F; + } + else if (this.status == EntityBOPBoat.Status.ON_LAND) + { + this.momentum = this.boatGlide; + + if (this.getControllingPassenger() instanceof EntityPlayer) + { + this.boatGlide /= 2.0F; + } + } + + this.motionX *= (double)this.momentum; + this.motionZ *= (double)this.momentum; + this.deltaRotation *= this.momentum; + this.motionY += d1; + + if (d2 > 0.0D) + { + double d3 = 0.65D; + this.motionY += d2 * 0.06153846016296973D; + double d4 = 0.75D; + this.motionY *= 0.75D; + } + } + } + + private void controlBoat() + { + if (this.isBeingRidden()) + { + float f = 0.0F; + + if (this.leftInputDown) + { + this.deltaRotation += -1.0F; + } + + if (this.rightInputDown) + { + ++this.deltaRotation; + } + + if (this.rightInputDown != this.leftInputDown && !this.forwardInputDown && !this.backInputDown) + { + f += 0.005F; + } + + this.rotationYaw += this.deltaRotation; + + if (this.forwardInputDown) + { + f += 0.04F; + } + + if (this.backInputDown) + { + f -= 0.005F; + } + + this.motionX += (double)(MathHelper.sin(-this.rotationYaw * 0.017453292F) * f); + this.motionZ += (double)(MathHelper.cos(this.rotationYaw * 0.017453292F) * f); + this.setPaddleState(this.rightInputDown && !this.leftInputDown || this.forwardInputDown, this.leftInputDown && !this.rightInputDown || this.forwardInputDown); + } + } + + @Override + public void updatePassenger(Entity passenger) + { + if (this.isPassenger(passenger)) + { + float f = 0.0F; + float f1 = (float)((this.isDead ? 0.009999999776482582D : this.getMountedYOffset()) + passenger.getYOffset()); + + if (this.getPassengers().size() > 1) + { + int i = this.getPassengers().indexOf(passenger); + + if (i == 0) + { + f = 0.2F; + } + else + { + f = -0.6F; + } + + if (passenger instanceof EntityAnimal) + { + f = (float)((double)f + 0.2D); + } + } + + Vec3d vec3d = (new Vec3d((double)f, 0.0D, 0.0D)).rotateYaw(-this.rotationYaw * 0.017453292F - ((float)Math.PI / 2F)); + passenger.setPosition(this.posX + vec3d.x, this.posY + (double)f1, this.posZ + vec3d.z); + passenger.rotationYaw += this.deltaRotation; + passenger.setRotationYawHead(passenger.getRotationYawHead() + this.deltaRotation); + this.applyYawToEntity(passenger); + + if (passenger instanceof EntityAnimal && this.getPassengers().size() > 1) + { + int j = passenger.getEntityId() % 2 == 0 ? 90 : 270; + passenger.setRenderYawOffset(((EntityAnimal)passenger).renderYawOffset + (float)j); + passenger.setRotationYawHead(passenger.getRotationYawHead() + (float)j); + } + } + } + + @Override + protected void applyYawToEntity(Entity entityToUpdate) + { + entityToUpdate.setRenderYawOffset(this.rotationYaw); + float f = MathHelper.wrapDegrees(entityToUpdate.rotationYaw - this.rotationYaw); + float f1 = MathHelper.clamp(f, -105.0F, 105.0F); + entityToUpdate.prevRotationYaw += f1 - f; + entityToUpdate.rotationYaw += f1 - f; + entityToUpdate.setRotationYawHead(entityToUpdate.rotationYaw); + } + + @SideOnly(Side.CLIENT) + @Override + public void applyOrientationToEntity(Entity entityToUpdate) + { + this.applyYawToEntity(entityToUpdate); + } + + @Override + protected void writeEntityToNBT(NBTTagCompound compound) + { + compound.setString("Type", this.getBOPBoatType().getName()); + } + + @Override + protected void readEntityFromNBT(NBTTagCompound compound) + { + if (compound.hasKey("Type", 8)) + { + this.setBoatType(EntityBOPBoat.Type.getTypeFromString(compound.getString("Type"))); + } + } + + @Override + public boolean processInitialInteract(EntityPlayer player, EnumHand hand) + { + if (player.isSneaking()) + { + return false; + } + else + { + if (!this.world.isRemote && this.outOfControlTicks < 60.0F) + { + player.startRiding(this); + } + + return true; + } + } + + @Override + protected void updateFallState(double y, boolean onGroundIn, IBlockState state, BlockPos pos) + { + this.lastYd = this.motionY; + + if (!this.isRiding()) + { + if (onGroundIn) + { + if (this.fallDistance > 3.0F) + { + if (this.status != EntityBOPBoat.Status.ON_LAND) + { + this.fallDistance = 0.0F; + return; + } + + this.fall(this.fallDistance, 1.0F); + + if (!this.world.isRemote && !this.isDead) + { + this.setDead(); + + if (this.world.getGameRules().getBoolean("doEntityDrops")) + { + for (int i = 0; i < 3; ++i) + { + this.entityDropItem(new ItemStack(Item.getItemFromBlock(BOPBlocks.planks_0), 1, this.getBOPBoatType().getMetadata()), 0.0F); + } + + for (int j = 0; j < 2; ++j) + { + this.dropItemWithOffset(Items.STICK, 1, 0.0F); + } + } + } + } + + this.fallDistance = 0.0F; + } + else if (this.world.getBlockState((new BlockPos(this)).down()).getMaterial() != Material.WATER && y < 0.0D) + { + this.fallDistance = (float)((double)this.fallDistance - y); + } + } + } + + @Override + public boolean getPaddleState(int side) + { + return ((Boolean)this.dataManager.get(DATA_ID_PADDLE[side])).booleanValue() && this.getControllingPassenger() != null; + } + + @Override + public void setDamageTaken(float damageTaken) + { + this.dataManager.set(DAMAGE_TAKEN, Float.valueOf(damageTaken)); + } + + @Override + public float getDamageTaken() + { + return ((Float)this.dataManager.get(DAMAGE_TAKEN)).floatValue(); + } + + @Override + public void setTimeSinceHit(int timeSinceHit) + { + this.dataManager.set(TIME_SINCE_HIT, Integer.valueOf(timeSinceHit)); + } + + @Override + public int getTimeSinceHit() + { + return ((Integer)this.dataManager.get(TIME_SINCE_HIT)).intValue(); + } + + @Override + public void setForwardDirection(int forwardDirection) + { + this.dataManager.set(FORWARD_DIRECTION, Integer.valueOf(forwardDirection)); + } + + @Override + public int getForwardDirection() + { + return ((Integer)this.dataManager.get(FORWARD_DIRECTION)).intValue(); + } + + public void setBoatType(EntityBOPBoat.Type boatType) + { + this.dataManager.set(BOAT_TYPE, Integer.valueOf(boatType.ordinal())); + } + + public void setBoatType(int boatType) + { + this.dataManager.set(BOAT_TYPE, Integer.valueOf(boatType)); + } + + public EntityBOPBoat.Type getBOPBoatType() + { + return EntityBOPBoat.Type.byId(((Integer)this.dataManager.get(BOAT_TYPE)).intValue()); + } + + @Override + protected boolean canFitPassenger(Entity passenger) + { + return this.getPassengers().size() < 2; + } + + @Nullable + @Override + public Entity getControllingPassenger() + { + List list = this.getPassengers(); + return list.isEmpty() ? null : (Entity)list.get(0); + } + + @SideOnly(Side.CLIENT) + @Override + public void updateInputs(boolean p_184442_1_, boolean p_184442_2_, boolean p_184442_3_, boolean p_184442_4_) + { + this.leftInputDown = p_184442_1_; + this.rightInputDown = p_184442_2_; + this.forwardInputDown = p_184442_3_; + this.backInputDown = p_184442_4_; + } + + public static enum Status + { + IN_WATER, + UNDER_WATER, + UNDER_FLOWING_WATER, + ON_LAND, + IN_AIR; + } + + public static enum Type + { + SACRED_OAK(BOPWoods.SACRED_OAK.ordinal(), "sacred_oak"), + CHERRY(BOPWoods.CHERRY.ordinal(), "cherry"), + UMBRAN(BOPWoods.UMBRAN.ordinal(), "umbran"), + FIR(BOPWoods.FIR.ordinal(), "fir"), + ETHEREAL(BOPWoods.ETHEREAL.ordinal(), "ethereal"), + MAGIC(BOPWoods.MAGIC.ordinal(), "magic"), + MANGROVE(BOPWoods.MAGIC.ordinal(), "mangrove"), + PALM(BOPWoods.MAGIC.ordinal(), "palm"), + REDWOOD(BOPWoods.MAGIC.ordinal(), "redwood"), + WILLOW(BOPWoods.MAGIC.ordinal(), "willow"), + PINE(BOPWoods.MAGIC.ordinal(), "pine"), + HELLBARK(BOPWoods.MAGIC.ordinal(), "hellbark"), + JACARANDA(BOPWoods.MAGIC.ordinal(), "jacaranda"), + MAHOGANY(BOPWoods.MAGIC.ordinal(), "mahogany"), + EBONY(BOPWoods.MAGIC.ordinal(), "ebony"), + EUCALYPTUS(BOPWoods.MAGIC.ordinal(), "eucalyptus"); + + private final String name; + private final int metadata; + + private Type(int metadataIn, String nameIn) + { + this.name = nameIn; + this.metadata = metadataIn; + } + + public String getName() + { + return this.name; + } + + public int getMetadata() + { + return this.metadata; + } + + public String toString() + { + return this.name; + } + + public static EntityBOPBoat.Type byId(int id) + { + if (id < 0 || id >= values().length) + { + id = 0; + } + + return values()[id]; + } + + public static EntityBOPBoat.Type getTypeFromString(String nameIn) + { + for (int i = 0; i < values().length; ++i) + { + if (values()[i].getName().equals(nameIn)) + { + return values()[i]; + } + } + + return values()[0]; + } + } + + // Forge: Fix MC-119811 by instantly completing lerp on board + @Override + protected void addPassenger(Entity passenger) + { + super.addPassenger(passenger); + if(this.canPassengerSteer() && this.lerpSteps > 0) + { + this.lerpSteps = 0; + this.posX = this.lerpX; + this.posY = this.lerpY; + this.posZ = this.lerpZ; + this.rotationYaw = (float)this.lerpYaw; + this.rotationPitch = (float)this.lerpPitch; + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/entities/item/ModelBOPBoat.java b/src/main/java/biomesoplenty/common/entities/item/ModelBOPBoat.java new file mode 100644 index 000000000..15b4f1d6d --- /dev/null +++ b/src/main/java/biomesoplenty/common/entities/item/ModelBOPBoat.java @@ -0,0 +1,117 @@ +/******************************************************************************* + * Copyright 2015-2016, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ + +package biomesoplenty.common.entities.item; + +import net.minecraft.client.model.IMultipassModel; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.entity.Entity; +import net.minecraft.util.math.MathHelper; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class ModelBOPBoat extends ModelBase implements IMultipassModel +{ + public ModelRenderer[] boatSides = new ModelRenderer[5]; + public ModelRenderer[] paddles = new ModelRenderer[2]; + public ModelRenderer noWater; + private final int patchList = GLAllocation.generateDisplayLists(1); + + public ModelBOPBoat() + { + this.boatSides[0] = (new ModelRenderer(this, 0, 0)).setTextureSize(128, 64); + this.boatSides[1] = (new ModelRenderer(this, 0, 19)).setTextureSize(128, 64); + this.boatSides[2] = (new ModelRenderer(this, 0, 27)).setTextureSize(128, 64); + this.boatSides[3] = (new ModelRenderer(this, 0, 35)).setTextureSize(128, 64); + this.boatSides[4] = (new ModelRenderer(this, 0, 43)).setTextureSize(128, 64); + int i = 32; + int j = 6; + int k = 20; + int l = 4; + int i1 = 28; + this.boatSides[0].addBox(-14.0F, -9.0F, -3.0F, 28, 16, 3, 0.0F); + this.boatSides[0].setRotationPoint(0.0F, 3.0F, 1.0F); + this.boatSides[1].addBox(-13.0F, -7.0F, -1.0F, 18, 6, 2, 0.0F); + this.boatSides[1].setRotationPoint(-15.0F, 4.0F, 4.0F); + this.boatSides[2].addBox(-8.0F, -7.0F, -1.0F, 16, 6, 2, 0.0F); + this.boatSides[2].setRotationPoint(15.0F, 4.0F, 0.0F); + this.boatSides[3].addBox(-14.0F, -7.0F, -1.0F, 28, 6, 2, 0.0F); + this.boatSides[3].setRotationPoint(0.0F, 4.0F, -9.0F); + this.boatSides[4].addBox(-14.0F, -7.0F, -1.0F, 28, 6, 2, 0.0F); + this.boatSides[4].setRotationPoint(0.0F, 4.0F, 9.0F); + this.boatSides[0].rotateAngleX = ((float)Math.PI / 2F); + this.boatSides[1].rotateAngleY = ((float)Math.PI * 3F / 2F); + this.boatSides[2].rotateAngleY = ((float)Math.PI / 2F); + this.boatSides[3].rotateAngleY = (float)Math.PI; + this.paddles[0] = this.makePaddle(true); + this.paddles[0].setRotationPoint(3.0F, -5.0F, 9.0F); + this.paddles[1] = this.makePaddle(false); + this.paddles[1].setRotationPoint(3.0F, -5.0F, -9.0F); + this.paddles[1].rotateAngleY = (float)Math.PI; + this.paddles[0].rotateAngleZ = 0.19634955F; + this.paddles[1].rotateAngleZ = 0.19634955F; + this.noWater = (new ModelRenderer(this, 0, 0)).setTextureSize(128, 64); + this.noWater.addBox(-14.0F, -9.0F, -3.0F, 28, 16, 3, 0.0F); + this.noWater.setRotationPoint(0.0F, -3.0F, 1.0F); + this.noWater.rotateAngleX = ((float)Math.PI / 2F); + } + + public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale) + { + GlStateManager.rotate(90.0F, 0.0F, 1.0F, 0.0F); + EntityBOPBoat entitybopboat = (EntityBOPBoat)entityIn; + this.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale, entityIn); + + for (int i = 0; i < 5; ++i) + { + this.boatSides[i].render(scale); + } + + this.renderPaddle(entitybopboat, 0, scale, limbSwing); + this.renderPaddle(entitybopboat, 1, scale, limbSwing); + } + + public void renderMultipass(Entity p_187054_1_, float p_187054_2_, float p_187054_3_, float p_187054_4_, float p_187054_5_, float p_187054_6_, float scale) + { + GlStateManager.rotate(90.0F, 0.0F, 1.0F, 0.0F); + GlStateManager.colorMask(false, false, false, false); + this.noWater.render(scale); + GlStateManager.colorMask(true, true, true, true); + } + + protected ModelRenderer makePaddle(boolean p_187056_1_) + { + ModelRenderer modelrenderer = (new ModelRenderer(this, 62, p_187056_1_ ? 0 : 20)).setTextureSize(128, 64); + int i = 20; + int j = 7; + int k = 6; + float f = -5.0F; + modelrenderer.addBox(-1.0F, 0.0F, -5.0F, 2, 2, 18); + modelrenderer.addBox(p_187056_1_ ? -1.001F : 0.001F, -3.0F, 8.0F, 1, 6, 7); + return modelrenderer; + } + + protected void renderPaddle(EntityBOPBoat boat, int paddle, float scale, float limbSwing) + { + float f = boat.getRowingTime(paddle, limbSwing); + ModelRenderer modelrenderer = this.paddles[paddle]; + modelrenderer.rotateAngleX = (float)MathHelper.clampedLerp(-1.0471975803375244D, -0.2617993950843811D, (double)((MathHelper.sin(-f) + 1.0F) / 2.0F)); + modelrenderer.rotateAngleY = (float)MathHelper.clampedLerp(-(Math.PI / 4D), (Math.PI / 4D), (double)((MathHelper.sin(-f + 1.0F) + 1.0F) / 2.0F)); + + if (paddle == 1) + { + modelrenderer.rotateAngleY = (float)Math.PI - modelrenderer.rotateAngleY; + } + + modelrenderer.render(scale); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/entities/item/RenderBOPBoat.java b/src/main/java/biomesoplenty/common/entities/item/RenderBOPBoat.java new file mode 100644 index 000000000..3baf84683 --- /dev/null +++ b/src/main/java/biomesoplenty/common/entities/item/RenderBOPBoat.java @@ -0,0 +1,109 @@ +/******************************************************************************* + * Copyright 2015-2016, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ + +package biomesoplenty.common.entities.item; + +import net.minecraft.client.model.IMultipassModel; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.entity.item.EntityBoat; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.MathHelper; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class RenderBOPBoat extends Render +{ + private static final ResourceLocation[] BOAT_TEXTURES = new ResourceLocation[] {new ResourceLocation("biomesoplenty:textures/entity/boats/boat_sacred_oak.png"), new ResourceLocation("biomesoplenty:textures/entity/boats/boat_cherry.png"), + new ResourceLocation("biomesoplenty:textures/entity/boats/boat_umbran.png"), new ResourceLocation("biomesoplenty:textures/entity/boats/boat_fir.png"), + new ResourceLocation("biomesoplenty:textures/entity/boats/boat_ethereal.png"), new ResourceLocation("biomesoplenty:textures/entity/boats/boat_magic.png"), + new ResourceLocation("biomesoplenty:textures/entity/boats/boat_mangrove.png"), new ResourceLocation("biomesoplenty:textures/entity/boats/boat_palm.png"), + new ResourceLocation("biomesoplenty:textures/entity/boats/boat_redwood.png"), new ResourceLocation("biomesoplenty:textures/entity/boats/boat_willow.png"), + new ResourceLocation("biomesoplenty:textures/entity/boats/boat_pine.png"), new ResourceLocation("biomesoplenty:textures/entity/boats/boat_hellbark.png"), + new ResourceLocation("biomesoplenty:textures/entity/boats/boat_jacaranda.png"), new ResourceLocation("biomesoplenty:textures/entity/boats/boat_mahogany.png"), + new ResourceLocation("biomesoplenty:textures/entity/boats/boat_ebony.png"), new ResourceLocation("biomesoplenty:textures/entity/boats/boat_eucalyptus.png")}; + protected ModelBase modelBOPBoat = new ModelBOPBoat(); + + public RenderBOPBoat(RenderManager renderManagerIn) + { + super(renderManagerIn); + this.shadowSize = 0.5F; + } + + public void doRender(EntityBOPBoat entity, double x, double y, double z, float entityYaw, float partialTicks) + { + GlStateManager.pushMatrix(); + this.setupTranslation(x, y, z); + this.setupRotation(entity, entityYaw, partialTicks); + this.bindEntityTexture(entity); + + if (this.renderOutlines) + { + GlStateManager.enableColorMaterial(); + GlStateManager.enableOutlineMode(this.getTeamColor(entity)); + } + + this.modelBOPBoat.render(entity, partialTicks, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); + + if (this.renderOutlines) + { + GlStateManager.disableOutlineMode(); + GlStateManager.disableColorMaterial(); + } + + GlStateManager.popMatrix(); + super.doRender(entity, x, y, z, entityYaw, partialTicks); + } + + public void setupRotation(EntityBOPBoat p_188311_1_, float p_188311_2_, float p_188311_3_) + { + GlStateManager.rotate(180.0F - p_188311_2_, 0.0F, 1.0F, 0.0F); + float f = (float)p_188311_1_.getTimeSinceHit() - p_188311_3_; + float f1 = p_188311_1_.getDamageTaken() - p_188311_3_; + + if (f1 < 0.0F) + { + f1 = 0.0F; + } + + if (f > 0.0F) + { + GlStateManager.rotate(MathHelper.sin(f) * f * f1 / 10.0F * (float)p_188311_1_.getForwardDirection(), 1.0F, 0.0F, 0.0F); + } + + GlStateManager.scale(-1.0F, -1.0F, 1.0F); + } + + public void setupTranslation(double p_188309_1_, double p_188309_3_, double p_188309_5_) + { + GlStateManager.translate((float)p_188309_1_, (float)p_188309_3_ + 0.375F, (float)p_188309_5_); + } + + protected ResourceLocation getEntityTexture(EntityBOPBoat entity) + { + return BOAT_TEXTURES[entity.getBOPBoatType().ordinal()]; + } + + public boolean isMultipass() + { + return true; + } + + public void renderMultipass(EntityBOPBoat p_188300_1_, double p_188300_2_, double p_188300_4_, double p_188300_6_, float p_188300_8_, float p_188300_9_) + { + GlStateManager.pushMatrix(); + this.setupTranslation(p_188300_2_, p_188300_4_, p_188300_6_); + this.setupRotation(p_188300_1_, p_188300_8_, p_188300_9_); + this.bindEntityTexture(p_188300_1_); + ((IMultipassModel)this.modelBOPBoat).renderMultipass(p_188300_1_, p_188300_9_, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); + GlStateManager.popMatrix(); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/entities/projectiles/dispenser/DispenserBehaviorBOPBoat.java b/src/main/java/biomesoplenty/common/entities/projectiles/dispenser/DispenserBehaviorBOPBoat.java new file mode 100644 index 000000000..fcac8a175 --- /dev/null +++ b/src/main/java/biomesoplenty/common/entities/projectiles/dispenser/DispenserBehaviorBOPBoat.java @@ -0,0 +1,60 @@ +package biomesoplenty.common.entities.projectiles.dispenser; + +import biomesoplenty.common.entities.item.EntityBOPBoat; +import net.minecraft.block.BlockDispenser; +import net.minecraft.block.material.Material; +import net.minecraft.dispenser.BehaviorDefaultDispenseItem; +import net.minecraft.dispenser.IBlockSource; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class DispenserBehaviorBOPBoat extends BehaviorDefaultDispenseItem +{ + private final BehaviorDefaultDispenseItem dispenseBehavior = new BehaviorDefaultDispenseItem(); + private final EntityBOPBoat.Type boatType; + + public DispenserBehaviorBOPBoat(EntityBOPBoat.Type boatTypeIn) + { + this.boatType = boatTypeIn; + } + + public ItemStack dispenseStack(IBlockSource source, ItemStack stack) + { + EnumFacing enumfacing = (EnumFacing)source.getBlockState().getValue(BlockDispenser.FACING); + World world = source.getWorld(); + double d0 = source.getX() + (double)((float)enumfacing.getFrontOffsetX() * 1.125F); + double d1 = source.getY() + (double)((float)enumfacing.getFrontOffsetY() * 1.125F); + double d2 = source.getZ() + (double)((float)enumfacing.getFrontOffsetZ() * 1.125F); + BlockPos blockpos = source.getBlockPos().offset(enumfacing); + Material material = world.getBlockState(blockpos).getMaterial(); + double d3; + + if (Material.WATER.equals(material)) + { + d3 = 1.0D; + } + else + { + if (!Material.AIR.equals(material) || !Material.WATER.equals(world.getBlockState(blockpos.down()).getMaterial())) + { + return this.dispenseBehavior.dispense(source, stack); + } + + d3 = 0.0D; + } + + EntityBOPBoat entitybopboat = new EntityBOPBoat(world, d0, d1 + d3, d2); + entitybopboat.setBoatType(this.boatType); + entitybopboat.rotationYaw = enumfacing.getHorizontalAngle(); + world.spawnEntity(entitybopboat); + stack.shrink(1); + return stack; + } + + protected void playDispenseSound(IBlockSource source) + { + source.getWorld().playEvent(1000, source.getBlockPos(), 0); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/init/ModCrafting.java b/src/main/java/biomesoplenty/common/init/ModCrafting.java index 44ecdbcad..d635ace18 100644 --- a/src/main/java/biomesoplenty/common/init/ModCrafting.java +++ b/src/main/java/biomesoplenty/common/init/ModCrafting.java @@ -62,6 +62,11 @@ public class ModCrafting } } + for (BOPGems gem : BOPGems.values()) + { + GameRegistry.addSmelting(new ItemStack(BOPBlocks.gem_ore, 1, gem.ordinal()), new ItemStack(BOPItems.gem, 1, gem.ordinal()), 1.0F); + } + // Register items which can be used as fuel FurnaceFuelHandler bopFuel = new FurnaceFuelHandler(); GameRegistry.registerFuelHandler(bopFuel); @@ -73,6 +78,23 @@ public class ModCrafting bopFuel.addFuel(BOPBlocks.wood_slab_1, 150); // Note, we don't have to add all the other wood blocks - by default any block with Material = wood burns with value of 300 // See TileEntityFurnace.getItemBurnTime() + + bopFuel.addFuel(BOPItems.boat_sacred_oak, 400); + bopFuel.addFuel(BOPItems.boat_cherry, 400); + bopFuel.addFuel(BOPItems.boat_umbran, 400); + bopFuel.addFuel(BOPItems.boat_fir, 400); + bopFuel.addFuel(BOPItems.boat_ethereal, 400); + bopFuel.addFuel(BOPItems.boat_magic, 400); + bopFuel.addFuel(BOPItems.boat_mangrove, 400); + bopFuel.addFuel(BOPItems.boat_palm, 400); + bopFuel.addFuel(BOPItems.boat_redwood, 400); + bopFuel.addFuel(BOPItems.boat_willow, 400); + bopFuel.addFuel(BOPItems.boat_pine, 400); + bopFuel.addFuel(BOPItems.boat_hellbark, 400); + bopFuel.addFuel(BOPItems.boat_jacaranda, 400); + bopFuel.addFuel(BOPItems.boat_mahogany, 400); + bopFuel.addFuel(BOPItems.boat_ebony, 400); + bopFuel.addFuel(BOPItems.boat_eucalyptus, 400); bopFuel.addFuel(BOPItems.ash, 400); // TODO: really? 400? Ash is already burnt but burns better than wooden planks? diff --git a/src/main/java/biomesoplenty/common/init/ModEntities.java b/src/main/java/biomesoplenty/common/init/ModEntities.java index 5c7d03566..bd03b96b9 100644 --- a/src/main/java/biomesoplenty/common/init/ModEntities.java +++ b/src/main/java/biomesoplenty/common/init/ModEntities.java @@ -11,6 +11,7 @@ package biomesoplenty.common.init; import biomesoplenty.common.command.BOPCommand; import biomesoplenty.common.entities.EntityPixie; import biomesoplenty.common.entities.EntityWasp; +import biomesoplenty.common.entities.item.EntityBOPBoat; import biomesoplenty.common.entities.projectiles.EntityMudball; import biomesoplenty.core.BiomesOPlenty; import net.minecraft.entity.Entity; @@ -29,6 +30,9 @@ public class ModEntities { // projectiles registerBOPEntity(EntityMudball.class, "mudball", 64, 10, true); + + // item entities + registerBOPEntity(EntityBOPBoat.class, "bop_boat", 80, 3, true); // mobs registerBOPEntityWithSpawnEgg(EntityWasp.class, "wasp", 80, 3, true, 0xE5B013, 0x333234); diff --git a/src/main/java/biomesoplenty/common/init/ModItems.java b/src/main/java/biomesoplenty/common/init/ModItems.java index ec922f999..28520f3a0 100644 --- a/src/main/java/biomesoplenty/common/init/ModItems.java +++ b/src/main/java/biomesoplenty/common/init/ModItems.java @@ -15,6 +15,22 @@ import static biomesoplenty.api.item.BOPItems.biome_essence; import static biomesoplenty.api.item.BOPItems.biome_finder; import static biomesoplenty.api.item.BOPItems.black_dye; import static biomesoplenty.api.item.BOPItems.blue_dye; +import static biomesoplenty.api.item.BOPItems.boat_cherry; +import static biomesoplenty.api.item.BOPItems.boat_ebony; +import static biomesoplenty.api.item.BOPItems.boat_ethereal; +import static biomesoplenty.api.item.BOPItems.boat_eucalyptus; +import static biomesoplenty.api.item.BOPItems.boat_fir; +import static biomesoplenty.api.item.BOPItems.boat_hellbark; +import static biomesoplenty.api.item.BOPItems.boat_jacaranda; +import static biomesoplenty.api.item.BOPItems.boat_magic; +import static biomesoplenty.api.item.BOPItems.boat_mahogany; +import static biomesoplenty.api.item.BOPItems.boat_mangrove; +import static biomesoplenty.api.item.BOPItems.boat_palm; +import static biomesoplenty.api.item.BOPItems.boat_pine; +import static biomesoplenty.api.item.BOPItems.boat_redwood; +import static biomesoplenty.api.item.BOPItems.boat_sacred_oak; +import static biomesoplenty.api.item.BOPItems.boat_umbran; +import static biomesoplenty.api.item.BOPItems.boat_willow; import static biomesoplenty.api.item.BOPItems.brown_dye; import static biomesoplenty.api.item.BOPItems.crystal_shard; import static biomesoplenty.api.item.BOPItems.earth; @@ -47,7 +63,9 @@ import static biomesoplenty.api.item.BOPItems.white_dye; import biomesoplenty.api.block.BOPBlocks; import biomesoplenty.api.sound.BOPSounds; import biomesoplenty.common.command.BOPCommand; +import biomesoplenty.common.entities.item.EntityBOPBoat; import biomesoplenty.common.item.ItemAmbrosia; +import biomesoplenty.common.item.ItemBOPBoat; import biomesoplenty.common.item.ItemBOPFood; import biomesoplenty.common.item.ItemBOPRecord; import biomesoplenty.common.item.ItemBiomeEssence; @@ -69,7 +87,6 @@ import net.minecraft.item.ItemSoup; import net.minecraft.potion.PotionEffect; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.registry.ForgeRegistries; -import net.minecraftforge.fml.common.registry.GameRegistry; public class ModItems { @@ -83,6 +100,23 @@ public class ModItems jar_filled = registerItem(new ItemJarFilled(), "jar_filled"); jar_empty = registerItem(new ItemJarEmpty(), "jar_empty"); + boat_sacred_oak = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.SACRED_OAK), "boat_sacred_oak"); + boat_cherry = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.CHERRY), "boat_cherry"); + boat_umbran = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.UMBRAN), "boat_umbran"); + boat_fir = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.FIR), "boat_fir"); + boat_ethereal = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.ETHEREAL), "boat_ethereal"); + boat_magic = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.MAGIC), "boat_magic"); + boat_mangrove = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.MANGROVE), "boat_mangrove"); + boat_palm = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.PALM), "boat_palm"); + boat_redwood = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.REDWOOD), "boat_redwood"); + boat_willow = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.WILLOW), "boat_willow"); + boat_pine = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.PINE), "boat_pine"); + boat_hellbark = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.HELLBARK), "boat_hellbark"); + boat_jacaranda = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.JACARANDA), "boat_jacaranda"); + boat_mahogany = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.MAHOGANY), "boat_mahogany"); + boat_ebony = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.EBONY), "boat_ebony"); + boat_eucalyptus = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.EUCALYPTUS), "boat_eucalyptus"); + biome_finder = registerItem(new ItemBiomeFinder(), "biome_finder"); flower_basket = registerItem(new ItemFlowerBasket(), "flower_basket"); diff --git a/src/main/java/biomesoplenty/common/init/ModVanillaCompat.java b/src/main/java/biomesoplenty/common/init/ModVanillaCompat.java index 341ace99e..9dbd531cc 100644 --- a/src/main/java/biomesoplenty/common/init/ModVanillaCompat.java +++ b/src/main/java/biomesoplenty/common/init/ModVanillaCompat.java @@ -1,15 +1,16 @@ package biomesoplenty.common.init; -import java.util.ArrayList; -import java.util.Arrays; import java.util.List; +import com.google.common.collect.Lists; + import biomesoplenty.api.biome.BOPBiomes; import biomesoplenty.api.item.BOPItems; +import biomesoplenty.common.entities.item.EntityBOPBoat; +import biomesoplenty.common.entities.projectiles.dispenser.DispenserBehaviorBOPBoat; import biomesoplenty.common.entities.projectiles.dispenser.DispenserBehaviorMudball; import biomesoplenty.common.util.biome.BiomeUtils; import biomesoplenty.common.world.BOPMapGenScatteredFeature; -import com.google.common.collect.Lists; import net.minecraft.block.BlockDispenser; import net.minecraft.init.Biomes; import net.minecraft.world.biome.Biome; @@ -32,6 +33,23 @@ public class ModVanillaCompat private static void registerDispenserBehaviors() { BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.mudball, new DispenserBehaviorMudball()); + + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.boat_sacred_oak, new DispenserBehaviorBOPBoat(EntityBOPBoat.Type.SACRED_OAK)); + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.boat_cherry, new DispenserBehaviorBOPBoat(EntityBOPBoat.Type.CHERRY)); + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.boat_umbran, new DispenserBehaviorBOPBoat(EntityBOPBoat.Type.UMBRAN)); + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.boat_fir, new DispenserBehaviorBOPBoat(EntityBOPBoat.Type.FIR)); + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.boat_ethereal, new DispenserBehaviorBOPBoat(EntityBOPBoat.Type.ETHEREAL)); + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.boat_magic, new DispenserBehaviorBOPBoat(EntityBOPBoat.Type.MAGIC)); + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.boat_mangrove, new DispenserBehaviorBOPBoat(EntityBOPBoat.Type.MANGROVE)); + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.boat_palm, new DispenserBehaviorBOPBoat(EntityBOPBoat.Type.PALM)); + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.boat_redwood, new DispenserBehaviorBOPBoat(EntityBOPBoat.Type.REDWOOD)); + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.boat_willow, new DispenserBehaviorBOPBoat(EntityBOPBoat.Type.WILLOW)); + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.boat_pine, new DispenserBehaviorBOPBoat(EntityBOPBoat.Type.PINE)); + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.boat_hellbark, new DispenserBehaviorBOPBoat(EntityBOPBoat.Type.HELLBARK)); + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.boat_jacaranda, new DispenserBehaviorBOPBoat(EntityBOPBoat.Type.JACARANDA)); + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.boat_mahogany, new DispenserBehaviorBOPBoat(EntityBOPBoat.Type.MAHOGANY)); + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.boat_ebony, new DispenserBehaviorBOPBoat(EntityBOPBoat.Type.EBONY)); + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(BOPItems.boat_eucalyptus, new DispenserBehaviorBOPBoat(EntityBOPBoat.Type.EUCALYPTUS)); } private static void addDungeonLoot() diff --git a/src/main/java/biomesoplenty/common/item/ItemBOPBoat.java b/src/main/java/biomesoplenty/common/item/ItemBOPBoat.java new file mode 100644 index 000000000..d25994091 --- /dev/null +++ b/src/main/java/biomesoplenty/common/item/ItemBOPBoat.java @@ -0,0 +1,125 @@ +/******************************************************************************* + * Copyright 2014-2016, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ + +package biomesoplenty.common.item; + +import java.util.List; + +import biomesoplenty.common.entities.item.EntityBOPBoat; +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.stats.StatList; +import net.minecraft.util.ActionResult; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.RayTraceResult; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +public class ItemBOPBoat extends Item +{ + private final EntityBOPBoat.Type type; + + public ItemBOPBoat(EntityBOPBoat.Type typeIn) + { + this.type = typeIn; + this.maxStackSize = 1; + this.setUnlocalizedName("boat_" + typeIn.getName()); + } + + @Override + public ActionResult onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) + { + ItemStack itemstack = playerIn.getHeldItem(handIn); + float f = 1.0F; + float f1 = playerIn.prevRotationPitch + (playerIn.rotationPitch - playerIn.prevRotationPitch) * 1.0F; + float f2 = playerIn.prevRotationYaw + (playerIn.rotationYaw - playerIn.prevRotationYaw) * 1.0F; + double d0 = playerIn.prevPosX + (playerIn.posX - playerIn.prevPosX) * 1.0D; + double d1 = playerIn.prevPosY + (playerIn.posY - playerIn.prevPosY) * 1.0D + (double)playerIn.getEyeHeight(); + double d2 = playerIn.prevPosZ + (playerIn.posZ - playerIn.prevPosZ) * 1.0D; + Vec3d vec3d = new Vec3d(d0, d1, d2); + float f3 = MathHelper.cos(-f2 * 0.017453292F - (float)Math.PI); + float f4 = MathHelper.sin(-f2 * 0.017453292F - (float)Math.PI); + float f5 = -MathHelper.cos(-f1 * 0.017453292F); + float f6 = MathHelper.sin(-f1 * 0.017453292F); + float f7 = f4 * f5; + float f8 = f3 * f5; + double d3 = 5.0D; + Vec3d vec3d1 = vec3d.addVector((double)f7 * 5.0D, (double)f6 * 5.0D, (double)f8 * 5.0D); + RayTraceResult raytraceresult = worldIn.rayTraceBlocks(vec3d, vec3d1, true); + + if (raytraceresult == null) + { + return new ActionResult(EnumActionResult.PASS, itemstack); + } + else + { + Vec3d vec3d2 = playerIn.getLook(1.0F); + boolean flag = false; + List list = worldIn.getEntitiesWithinAABBExcludingEntity(playerIn, playerIn.getEntityBoundingBox().expand(vec3d2.x * 5.0D, vec3d2.y * 5.0D, vec3d2.z * 5.0D).grow(1.0D)); + + for (int i = 0; i < list.size(); ++i) + { + Entity entity = list.get(i); + + if (entity.canBeCollidedWith()) + { + AxisAlignedBB axisalignedbb = entity.getEntityBoundingBox().grow((double)entity.getCollisionBorderSize()); + + if (axisalignedbb.contains(vec3d)) + { + flag = true; + } + } + } + + if (flag) + { + return new ActionResult(EnumActionResult.PASS, itemstack); + } + else if (raytraceresult.typeOfHit != RayTraceResult.Type.BLOCK) + { + return new ActionResult(EnumActionResult.PASS, itemstack); + } + else + { + Block block = worldIn.getBlockState(raytraceresult.getBlockPos()).getBlock(); + boolean flag1 = block == Blocks.WATER || block == Blocks.FLOWING_WATER; + EntityBOPBoat entitybopboat = new EntityBOPBoat(worldIn, raytraceresult.hitVec.x, flag1 ? raytraceresult.hitVec.y - 0.12D : raytraceresult.hitVec.y, raytraceresult.hitVec.z); + entitybopboat.setBoatType(this.type); + entitybopboat.rotationYaw = playerIn.rotationYaw; + + if (!worldIn.getCollisionBoxes(entitybopboat, entitybopboat.getEntityBoundingBox().grow(-0.1D)).isEmpty()) + { + return new ActionResult(EnumActionResult.FAIL, itemstack); + } + else + { + if (!worldIn.isRemote) + { + worldIn.spawnEntity(entitybopboat); + } + + if (!playerIn.capabilities.isCreativeMode) + { + itemstack.shrink(1); + } + + playerIn.addStat(StatList.getObjectUseStats(this)); + return new ActionResult(EnumActionResult.SUCCESS, itemstack); + } + } + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/core/ClientProxy.java b/src/main/java/biomesoplenty/core/ClientProxy.java index 061f36ae9..ab2de4fcf 100644 --- a/src/main/java/biomesoplenty/core/ClientProxy.java +++ b/src/main/java/biomesoplenty/core/ClientProxy.java @@ -25,6 +25,8 @@ import biomesoplenty.common.entities.EntityPixie; import biomesoplenty.common.entities.EntityWasp; import biomesoplenty.common.entities.RenderPixie; import biomesoplenty.common.entities.RenderWasp; +import biomesoplenty.common.entities.item.EntityBOPBoat; +import biomesoplenty.common.entities.item.RenderBOPBoat; import biomesoplenty.common.entities.projectiles.EntityMudball; import biomesoplenty.common.entities.projectiles.RenderMudball; import biomesoplenty.common.fluids.BloodFluid; @@ -88,6 +90,7 @@ public class ClientProxy extends CommonProxy registerEntityRenderer(EntityWasp.class, RenderWasp.class); registerEntityRenderer(EntityPixie.class, RenderPixie.class); registerEntityRenderer(EntityMudball.class, RenderMudball.class); + registerEntityRenderer(EntityBOPBoat.class, RenderBOPBoat.class); replaceForgeResources(); } diff --git a/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_cherry.json b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_cherry.json new file mode 100644 index 000000000..ccae7055b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_cherry.json @@ -0,0 +1,27 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:boat_cherry" + ] + }, + "criteria": { + "entered_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:boat_cherry" + } + } + }, + "requirements": [ + [ + "entered_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_ebony.json b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_ebony.json new file mode 100644 index 000000000..4217a0b14 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_ebony.json @@ -0,0 +1,27 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:boat_ebony" + ] + }, + "criteria": { + "entered_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:boat_ebony" + } + } + }, + "requirements": [ + [ + "entered_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_ethereal.json b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_ethereal.json new file mode 100644 index 000000000..5ba797241 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_ethereal.json @@ -0,0 +1,27 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:boat_ethereal" + ] + }, + "criteria": { + "entered_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:boat_ethereal" + } + } + }, + "requirements": [ + [ + "entered_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_eucalyptus.json b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_eucalyptus.json new file mode 100644 index 000000000..101dffcb5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_eucalyptus.json @@ -0,0 +1,27 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:boat_eucalyptus" + ] + }, + "criteria": { + "entered_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:boat_eucalyptus" + } + } + }, + "requirements": [ + [ + "entered_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_fir.json b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_fir.json new file mode 100644 index 000000000..710613743 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_fir.json @@ -0,0 +1,27 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:boat_fir" + ] + }, + "criteria": { + "entered_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:boat_fir" + } + } + }, + "requirements": [ + [ + "entered_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_hellbark.json b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_hellbark.json new file mode 100644 index 000000000..2dd33cecf --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_hellbark.json @@ -0,0 +1,27 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:boat_hellbark" + ] + }, + "criteria": { + "entered_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:boat_hellbark" + } + } + }, + "requirements": [ + [ + "entered_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_jacaranda.json b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_jacaranda.json new file mode 100644 index 000000000..a1a11dcbd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_jacaranda.json @@ -0,0 +1,27 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:boat_jacaranda" + ] + }, + "criteria": { + "entered_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:boat_jacaranda" + } + } + }, + "requirements": [ + [ + "entered_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_magic.json b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_magic.json new file mode 100644 index 000000000..895037920 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_magic.json @@ -0,0 +1,27 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:boat_magic" + ] + }, + "criteria": { + "entered_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:boat_magic" + } + } + }, + "requirements": [ + [ + "entered_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_mahogany.json b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_mahogany.json new file mode 100644 index 000000000..2e8477e38 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_mahogany.json @@ -0,0 +1,27 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:boat_mahogany" + ] + }, + "criteria": { + "entered_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:boat_mahogany" + } + } + }, + "requirements": [ + [ + "entered_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_mangrove.json b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_mangrove.json new file mode 100644 index 000000000..e2a00596e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_mangrove.json @@ -0,0 +1,27 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:boat_mangrove" + ] + }, + "criteria": { + "entered_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:boat_mangrove" + } + } + }, + "requirements": [ + [ + "entered_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_palm.json b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_palm.json new file mode 100644 index 000000000..261cd4e73 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_palm.json @@ -0,0 +1,27 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:boat_palm" + ] + }, + "criteria": { + "entered_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:boat_palm" + } + } + }, + "requirements": [ + [ + "entered_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_pine.json b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_pine.json new file mode 100644 index 000000000..0751591d5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_pine.json @@ -0,0 +1,27 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:boat_pine" + ] + }, + "criteria": { + "entered_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:boat_pine" + } + } + }, + "requirements": [ + [ + "entered_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_redwood.json b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_redwood.json new file mode 100644 index 000000000..cbbd3a91a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_redwood.json @@ -0,0 +1,27 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:boat_redwood" + ] + }, + "criteria": { + "entered_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:boat_redwood" + } + } + }, + "requirements": [ + [ + "entered_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_sacred_oak.json b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_sacred_oak.json new file mode 100644 index 000000000..9526668b3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_sacred_oak.json @@ -0,0 +1,27 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:boat_sacred_oak" + ] + }, + "criteria": { + "entered_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:boat_sacred_oak" + } + } + }, + "requirements": [ + [ + "entered_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_umbran.json b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_umbran.json new file mode 100644 index 000000000..57638e64b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_umbran.json @@ -0,0 +1,27 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:boat_umbran" + ] + }, + "criteria": { + "entered_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:boat_umbran" + } + } + }, + "requirements": [ + [ + "entered_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_willow.json b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_willow.json new file mode 100644 index 000000000..90878fe36 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_willow.json @@ -0,0 +1,27 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:boat_willow" + ] + }, + "criteria": { + "entered_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:boat_willow" + } + } + }, + "requirements": [ + [ + "entered_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/lang/en_US.lang b/src/main/resources/assets/biomesoplenty/lang/en_US.lang index dee8f2c18..39b0678cc 100644 --- a/src/main/resources/assets/biomesoplenty/lang/en_US.lang +++ b/src/main/resources/assets/biomesoplenty/lang/en_US.lang @@ -66,6 +66,22 @@ item.biome_essence.name=Biome Essence item.biome_finder.name=Biome Finder item.black_dye.name=Black Dye item.blue_dye.name=Blue Dye +item.boat_cherry.name=Cherry Boat +item.boat_ebony.name=Ebony Boat +item.boat_ethereal.name=Ethereal Boat +item.boat_eucalyptus.name=Eucalyptus Boat +item.boat_fir.name=Fir Boat +item.boat_hellbark.name=Hellbark Boat +item.boat_jacaranda.name=Jacaranda Boat +item.boat_magic.name=Magic Boat +item.boat_mahogany.name=Mahogany Boat +item.boat_mangrove.name=Mangrove Boat +item.boat_palm.name=Palm Boat +item.boat_pine.name=Pine Boat +item.boat_redwood.name=Redwood Boat +item.boat_sacred_oak.name=Sacred Oak Boat +item.boat_umbran.name=Umbran Boat +item.boat_willow.name=Willow Boat item.brown_dye.name=Brown Dye item.cherry_door.name=Cherry Door item.crystal_shard.name=Celestial Crystal Shard @@ -423,4 +439,5 @@ tile.crystal.name=Celestial Crystal entity.mudball.name=Mudball entity.pixie.name=Pixie -entity.wasp.name=Nether Wasp \ No newline at end of file +entity.wasp.name=Nether Wasp +entity.bop_boat.name=Boat \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/lang/ja_JP.lang b/src/main/resources/assets/biomesoplenty/lang/ja_JP.lang index b3c777b6f..3a56f1dc4 100644 --- a/src/main/resources/assets/biomesoplenty/lang/ja_JP.lang +++ b/src/main/resources/assets/biomesoplenty/lang/ja_JP.lang @@ -1,48 +1,26 @@ -#Translate by Lasagnoa -#version 1.11.2-6.0.2.2168-universal +# Translate by koh +# Based on version 1.12.2-7.0.1.2320-universal -achievement.obtain_flowers=お花屋さん -achievement.obtain_flowers.desc=花を見つけよう -achievement.obtain_berry=ベリーグット -achievement.obtain_berry.desc=ベリーの木からベリーを採取 -achievement.obtain_coral=素晴らしいサンゴ -achievement.obtain_coral.desc=深海に潜り輝くサンゴを採取 -achievement.obtain_miners_delight=生命は必ず道を見つける -achievement.obtain_miners_delight.desc=洞窟内で鉱夫の癒やし花を採取 -achievement.eat_shroom_powder=薬物中毒 -achievement.eat_shroom_powder.desc=マッシュルームパウダーを摂取する -achievement.obtain_turnip=カブ式市場 -achievement.obtain_turnip.desc=カブを採取 -achievement.grow_sacred_oak=ユグドラシル -achievement.grow_sacred_oak.desc=神聖なオークの苗木を植える -achievement.craft_flax_string=フラメンコの虜 -achievement.craft_flax_string.desc=亜麻から麻紐を作成 -achievement.craft_muddy_pickaxe=かちかち山 -achievement.craft_muddy_pickaxe.desc=泥状のツルハシを作成 -achievement.obtain_thorn=眠れる森の美女 -achievement.obtain_thorn.desc=いばらを採取 -achievement.obtain_deathbloom=私は死ぬでしょう -achievement.obtain_deathbloom.desc=死の新芽を採取 -achievement.obtain_honeycomb=くまのプーさん -achievement.obtain_honeycomb.desc=蜂の巣からハチミツを採取 -achievement.obtain_soul=魂の解放 -achievement.obtain_soul.desc=霊魂を手に入れる -achievement.obtain_wilted_lily=神様の手助け -achievement.obtain_wilted_lily.desc=萎れたスイレンをお世話する -achievement.obtain_pixie_dust=それを摂取してはなりません -achievement.obtain_pixie_dust.desc=ピクシーを殺しピクシーの粉を取得 -achievement.obtain_celestial_crystal=これでおわり -achievement.obtain_celestial_crystal.desc=ジエンドで天界のクリスタルを採取する -achievement.craft_terrestrial_artifact=地上最強 -achievement.craft_terrestrial_artifact.desc=追加された8種類の鉱石を組み合わせる -achievement.craft_ambrosia=神のワイン -achievement.craft_ambrosia.desc=砂糖,水,ハチミツ,果実,根っこ,昆布,霊液,ピクシーの粉,天界のクリスタル -achievement.explore_all_biomes=ワンダラー -achievement.explore_all_biomes.desc=追加されたバイオームを含めすべてのバイオームを発見する -achievement.use_enderporter=おうちにかえろう -achievement.use_enderporter.desc=エンダーポーターを使ってホームに戻る -achievement.use_biome_finder=捜索隊 -achievement.use_biome_finder.desc=バイオームファインダーを使用してバイオームを発見する +advancements.biomesoplenty.root.title=Biomes O' Plenty +advancements.biomesoplenty.root.description=探検家の夢... +advancements.biomesoplenty.sacred_oak_sapling.title=ユグドラシル +advancements.biomesoplenty.sacred_oak_sapling.description=神聖なオークの苗木を植える +advancements.biomesoplenty.yin_and_yang.title=陰と陽 +advancements.biomesoplenty.yin_and_yang.description=Ominous Woods に光る花を植え、 Mystic Grove に死の新芽を植える +advancements.biomesoplenty.miners_delight.title=人生は道を見つける +advancements.biomesoplenty.miners_delight.description=深い洞窟の奥で鉱夫の癒やし花を見つける +advancements.biomesoplenty.harvest_turnip.title=カブ式市場 +advancements.biomesoplenty.harvest_turnip.description=カブを収穫する +advancements.biomesoplenty.flesh_and_blood.title=血肉 +advancements.biomesoplenty.flesh_and_blood.description=肉のかたまりを入手する +advancements.biomesoplenty.honey_hell.title=ネザーの蜂蜜 +advancements.biomesoplenty.honey_hell.description=ネザーのハチの巣から蜂蜜を手に入れる +advancements.biomesoplenty.terrestrial_artifact.title=力を合わせて +advancements.biomesoplenty.terrestrial_artifact.description=Biomes O' Plenty で追加された8種類の宝石を組み合わせる +advancements.biomesoplenty.craft_biome_finder.title=捜索隊 +advancements.biomesoplenty.craft_biome_finder.description=バイオームファインダーを作成する +advancements.biomesoplenty.all_biomes.title=ワンダラー +advancements.biomesoplenty.all_biomes.description=Biomes O' Plenty で追加された全てのバイオームを見つける biome_finder.searching=%sを検索中… biome_finder.found=%sが見つかりました! @@ -53,7 +31,7 @@ config.category.guiSettings.title=GUI設定 config.category.textureSettings.title=テクスチャ設定 config.category.trailSettings.title=足跡設定 config.category.convenienceSettings.tooltip=花を採取するためにははさみが必要です -config.category.guiSettings.tooltip= Biomes O' Plenty を有効化してワールドを生成します +config.category.guiSettings.tooltip=Biomes O' Plenty を有効化してワールドを生成します config.category.textureSettings.tooltip=Forge bucketのテクスチャーを代わりに使用します config.category.trailSettings.tooltip=足跡の透明度 @@ -69,7 +47,7 @@ commands.biomesoplenty.stats.entities=エンティティ: %s commands.biomesoplenty.stats.biomes=バイオーム: %s commands.biomesoplenty.stripchunk.usage=/biomesoplenty stripchunk [radius] [block] [metadata] -container.flower_basket=花の冠 +container.flower_basket=フラワーバスケット generator.BIOMESOP=Biomes O' Plenty generator.BIOMESOP.info=注意: Biomes O' Plenty 1.8 は発展途上中です @@ -95,18 +73,12 @@ item.brown_dye.name=ブラウンの染料 item.cherry_door.name=桜のドア item.crystal_shard.name=天界のクリスタルの欠片 item.terrestrial_artifact.name=地上のアーティファクト -item.flax_string.name=麻紐 -item.diamond_scythe.name=ダイヤの鎌 -item.dull_flower_band.name=単調な花の冠 item.ebony_door.name=エボニーのドア -item.enderporter.name=エンダーポーター item.ethereal_door.name=エーテルのドア item.eucalyptus_door.name=ユーカリのドア -item.exotic_flower_band.name=エキゾチックな花の冠 item.filled_honeycomb.name=詰まっているハチの巣の欠片 item.fir_door.name=モミのドア item.fleshchunk.name=肉のかたまり -item.flippers.name=足ひれ item.flower_basket.name=フラワーバスケット item.gem_amber.name=琥珀 item.gem_amethyst.name=アメジスト @@ -117,32 +89,17 @@ item.gem_sapphire.name=サファイア item.gem_tanzanite.name=タンザナイト item.gem_topaz.name=トパーズ item.green_dye.name=緑色の染料 -item.gold_scythe.name=金の鎌 item.hellbark_door.name=ヘルバークのドア item.honeycomb.name=ハチの巣の欠片 -item.ichor.name=霊液 -item.iron_scythe.name=鉄の鎌 item.jacaranda_door.name=ジャカランダのドア item.jar_empty.name=空き瓶 item.jar_filled_honey.name=蜂蜜が入った瓶 item.jar_filled_pixie.name=ピクシーが入った瓶 -item.jar_filled_butterfly.name=蝶が入った瓶 -item.lush_flower_band.name=緑豊かな花の冠 item.magic_door.name=魔法の木のドア item.mahogany_door.name=マホガニーのドア item.mangrove_door.name=マングローブのドア item.mudball.name=泥だんご -item.mud_axe.name=泥の斧 -item.mud_boots.name=泥のブーツ item.mud_brick.name=泥レンガ -item.mud_chestplate.name=泥のチェストプレート -item.mud_helmet.name=泥のヘルメット -item.mud_hoe.name=泥のクワ -item.mud_leggings.name=泥のレギンス -item.mud_pickaxe.name=泥のツルハシ -item.mud_scythe.name=泥の鎌 -item.mud_shovel.name=泥のシャベル -item.mud_sword.name=泥の剣 item.palm_door.name=ヤシのドア item.persimmon.name=柿 item.peach.name=桃 @@ -150,9 +107,6 @@ item.pear.name=梨 item.pinecone.name=松ぼっくり item.pine_door.name=松のドア item.pixie_dust.name=ピクシーの粉 -item.plain_flower_band.name=質素な花の冠 -item.record_corruption.name=レコード? -item.record.corruption.desc=??? item.record_wanderer.name=レコード item.record.wanderer.desc=Tim Rurkowski - Wanderer item.redwood_door.name=セコイアのドア @@ -162,19 +116,11 @@ item.saladfruit.name=フルーツサラダ item.saladveggie.name=野菜サラダ item.saladshroom.name=マッシュルームサラダ item.shroompowder.name=マッシュルームパウダー -item.soul.name=霊魂 -item.spawn_egg_pixie.name=スポーン ピクシー -item.spawn_egg_wasp.name=スポーン スズメバチ -item.spawn_egg_snail.name=スポーン カタツムリ -item.spawn_egg_butterfly.name=スポーン 蝶 -item.stone_scythe.name=石の鎌 item.turnip.name=カブ item.turnip_seeds.name=カブの種 item.umbran_door.name=ウンブランのドア -item.wading_boots.name=ぬかるみ用ブーツ item.white_dye.name=白色の染料 item.willow_door.name=柳のドア -item.wood_scythe.name=木の鎌 tile.ash_block.name=火山灰ブロック tile.bamboo.name=竹 @@ -217,7 +163,7 @@ tile.fir_fence.name=モミのフェンス tile.fir_fence_gate.name=モミのフェンスゲート tile.fir_wood_slab.name=モミの木材ハーフブロック tile.fir_stairs.name=モミの階段 -tile.flesh.name=肉のかたまり +tile.flesh.name=肉ブロック tile.flower_0.clover.name=クローバー tile.flower_0.swampflower.name=沼の花 tile.flower_0.deathbloom.name=死の新芽 @@ -265,6 +211,7 @@ tile.grass.sandy_grass_block.name=砂質草ブロック tile.grass.silty_grass_block.name=泥質草ブロック tile.grass.origin_grass_block.name=オリジン草ブロック tile.grass.overgrown_netherrack.name=成長したネザーラック +tile.grass.mycelial_netherrack.name=菌糸の生えたネザーラック tile.grass_path.grass_loamy_path.name=壤質草の道 tile.grass_path.grass_sandy_path.name=砂質草の道 tile.grass_path.grass_silty_path.name=泥質草の道 @@ -397,7 +344,7 @@ tile.plant_1.wildrice.name=稲 tile.plant_1.cattail.name=ガマ tile.plant_1.rivercane.name=河サトウキビ tile.plant_1.tinycactus.name=小さなサボテン -tile.plant_1.witherwart.name=枯れたネザーウォート +tile.plant_1.devilweed.name=デビルウィード tile.plant_1.reed.name=ヨシ tile.plant_1.root.name=根っこ tile.plant_1.rafflesia.name=ラフレシア @@ -434,12 +381,6 @@ tile.sapling_2.mahogany_sapling.name=マホガニーの苗木 tile.sapling_2.ebony_sapling.name=エボニーの苗木 tile.sapling_2.eucalyptus_sapling.name=ユーカリの苗木 tile.seaweed.kelp.name=昆布 -tile.stone.limestone.name=石灰岩 -tile.stone.polished_limestone.name=磨かれた石灰岩 -tile.stone.siltstone.name=泥岩 -tile.stone.polished_siltstone.name=磨かれた泥岩 -tile.stone.shale.name=頁岩 -tile.stone.polished_shale.name=磨かれた頁岩 tile.stone_formations.stone_formation.name=岩石層 tile.terrarium.terrarium_fern.name=シダ栽培槽 tile.terrarium.terrarium_mushroom.name=キノコ栽培槽 @@ -467,17 +408,22 @@ tile.waterlily.lily_medium.name=育ってきたスイレン tile.waterlily.lily_small.name=小さいスイレン tile.waterlily.lily_tiny.name=とても小さいスイレン tile.waterlily.lily_flower.name=スイレンの花 +tile.white_sand.name=白い砂 +tile.white_sandstone.white_sandstone.name=白い砂岩 +tile.white_sandstone.chiseled_white_sandstone.name=模様入りの白い砂岩 +tile.white_sandstone.smooth_white_sandstone.name=滑らかな白い砂岩 +tile.white_sandstone_slab.name=白い砂岩ハーフブロック +tile.white_sandstone_stairs.name=白い砂岩の階段 tile.willow_fence.name=柳のフェンス tile.willow_fence_gate.name=柳のフェンスゲート tile.willow_wood_slab.name=柳の木材ハーフブロック tile.willow_stairs.name=柳の階段 +tile.willow_vine.name=柳のつる tile.hard_ice.name=固い氷 tile.dried_sand.name=乾燥砂 -tile.crag_rock.name=ごつごつした岩 tile.mud_brick.name=泥レンガ tile.crystal.name=天界のクリスタル -entity.BiomesOPlenty.butterfly.name=蝶 -entity.BiomesOPlenty.pixie.name=ピクシー -entity.BiomesOPlenty.snail.name=カタツムリ -entity.BiomesOPlenty.wasp.name=スズメバチ \ No newline at end of file +entity.mudball.name=泥だんご +entity.pixie.name=ピクシー +entity.wasp.name=ネザースズメバチ diff --git a/src/main/resources/assets/biomesoplenty/lang/zh_CN.lang b/src/main/resources/assets/biomesoplenty/lang/zh_CN.lang index 1ccbfd582..887d143ac 100644 --- a/src/main/resources/assets/biomesoplenty/lang/zh_CN.lang +++ b/src/main/resources/assets/biomesoplenty/lang/zh_CN.lang @@ -21,7 +21,7 @@ advancements.biomesoplenty.all_biomes.description=探索完超多生物群系的 biome_finder.searching=寻找 %s biome_finder.found=找到 %s! -biome_finder.not_found=抱歉无法找到,可能是 %s 是距离太遥远! +biome_finder.not_found=抱歉无法找到,可能是 %s 距离太遥远! config.category.convenienceSettings.title=便捷设置 config.category.guiSettings.title=GUI设置 @@ -66,6 +66,22 @@ item.biome_essence.name=生物群系精华 item.biome_finder.name=生物群系雷达 item.black_dye.name=黑色染料 item.blue_dye.name=蓝色染料 +item.boat_cherry.name=樱花木船 +item.boat_ebony.name=檀木船 +item.boat_ethereal.name=天域木船 +item.boat_eucalyptus.name=桉木船 +item.boat_fir.name=杉木船 +item.boat_hellbark.name=地狱皮木船 +item.boat_jacaranda.name=蓝花楹木船 +item.boat_magic.name=魔法木船 +item.boat_mahogany.name=桃花心木船 +item.boat_mangrove.name=红树木船 +item.boat_palm.name=棕榈木船 +item.boat_pine.name=松木船 +item.boat_redwood.name=红木船 +item.boat_sacred_oak.name=神圣橡木船 +item.boat_umbran.name=暗影木船 +item.boat_willow.name=柳木船 item.brown_dye.name=棕色染料 item.cherry_door.name=樱花树门 item.crystal_shard.name=仙域水晶碎片 @@ -424,3 +440,4 @@ tile.crystal.name=仙域水晶 entity.mudball.name=泥巴球 entity.pixie.name=精灵 entity.wasp.name=下界黄蜂 +entity.bop_boat.name=船 diff --git a/src/main/resources/assets/biomesoplenty/lang/zh_TW.lang b/src/main/resources/assets/biomesoplenty/lang/zh_TW.lang index 28ad4eee6..7f8f4d010 100644 --- a/src/main/resources/assets/biomesoplenty/lang/zh_TW.lang +++ b/src/main/resources/assets/biomesoplenty/lang/zh_TW.lang @@ -1,45 +1,23 @@ -achievement.obtain_flowers=Flower Child -achievement.obtain_flowers.desc=找到一朵花! -achievement.obtain_berry=Berry Good -achievement.obtain_berry.desc=從莓果叢採一棵莓果 -achievement.obtain_coral=Totally Coral! -achievement.obtain_coral.desc=深潛尋找珊瑚 -achievement.obtain_miners_delight=Life Finds a Way -achievement.obtain_miners_delight.desc=在洞窟中找到礦工之花 -achievement.eat_shroom_powder=Trippin' -achievement.eat_shroom_powder.desc=攝取一些魔法菇粉 -achievement.obtain_turnip=Stalk Market -achievement.obtain_turnip.desc=採收蕪菁 -achievement.grow_sacred_oak=Yggdrasil -achievement.grow_sacred_oak.desc=種植聖橡樹苗 -achievement.craft_flax_string=Flaxen Fun -achievement.craft_flax_string.desc=將亞麻製成麻線 -achievement.craft_muddy_pickaxe=Getting a Downgrade -achievement.craft_muddy_pickaxe.desc=製作一把…泥鎬…? -achievement.obtain_thorn=Rather Thorny -achievement.obtain_thorn.desc=撿取荊棘! -achievement.obtain_deathbloom=I am Become Death -achievement.obtain_deathbloom.desc=獲取致命的死亡之花 -achievement.obtain_honeycomb=Honeycomb's Big -achievement.obtain_honeycomb.desc=自地獄黃蜂窩偷取填滿的蜂巢 -achievement.obtain_soul=Soul Searching -achievement.obtain_soul.desc=取回失落之魂 -achievement.obtain_wilted_lily=Godsend -achievement.obtain_wilted_lily.desc=拯救一個枯萎的百合花 -achievement.obtain_pixie_dust=Don't Breathe This -achievement.obtain_pixie_dust.desc=殺死小精靈以取得其魔法塵 -achievement.obtain_celestial_crystal=Far Out... -achievement.obtain_celestial_crystal.desc=在終界採取星晶 -achievement.craft_terrestrial_artifact=Your Powers Combined -achievement.craft_terrestrial_artifact.desc=融合八種生態系的特有寶石 -achievement.craft_ambrosia=Nectar of the Gods -achievement.craft_ambrosia.desc=糖、水、蜂蜜、莓果、根、海帶、膿血、小精靈粉塵、以及星晶! -achievement.explore_all_biomes=The Wanderer -achievement.explore_all_biomes.desc=發現所有生態系 -achievement.use_enderporter=Gone Home -achievement.use_enderporter.desc=從終界傳送器回到旅行的原點 -achievement.use_biome_finder=Search Party -achievement.use_biome_finder.desc=使用生態系雷達定位一個生態系 +advancements.biomesoplenty.root.title=多生態系 +advancements.biomesoplenty.root.description=探險家之夢… +advancements.biomesoplenty.sacred_oak_sapling.title=聖橡木 +advancements.biomesoplenty.sacred_oak_sapling.description=種植一棵大棵聖橡木。 +advancements.biomesoplenty.yin_and_yang.title=陰陽 +advancements.biomesoplenty.yin_and_yang.description=在不祥之森種植螢光花,在神秘樹林種植死亡之花。 +advancements.biomesoplenty.miners_delight.title=生命會自己找到出路 +advancements.biomesoplenty.miners_delight.description=在洞窟中找到礦工之花。 +advancements.biomesoplenty.harvest_turnip.title=根莖市場 +advancements.biomesoplenty.harvest_turnip.description=採收蕪菁。 +advancements.biomesoplenty.flesh_and_blood.title=有血有肉 +advancements.biomesoplenty.flesh_and_blood.description=在地獄的內藏堆裡取得肉。 +advancements.biomesoplenty.honey_hell.title=地獄之蜜 +advancements.biomesoplenty.honey_hell.description=從地獄的蜂巢裡偷一些蜂蜜。 +advancements.biomesoplenty.terrestrial_artifact.title=請賜於我萬能的神力 +advancements.biomesoplenty.terrestrial_artifact.description=獲得每種生態系特有的寶石。 +advancements.biomesoplenty.craft_biome_finder.title=探索派對 +advancements.biomesoplenty.craft_biome_finder.description=製作生態系雷達來為你導航。 +advancements.biomesoplenty.all_biomes.title=探險家 +advancements.biomesoplenty.all_biomes.description=發現所有Biomes O' Plenty的生態系 biome_finder.searching=正在尋找%s… biome_finder.found=找到了%s! @@ -54,24 +32,24 @@ config.category.guiSettings.tooltip=生成世界時以 Biomes O' Plenty 世界 config.category.textureSettings.tooltip=覆寫 Forge bucket 材質,使用我們的版本!(It's nicer!) config.category.trailSettings.tooltip=足跡能見度設定 -commands.biomesoplenty.usage=/biomesoplenty [args] -commands.biomesoplenty.biomename.usage=/biomesoplenty biomename [biomeId] -commands.biomesoplenty.biomename.success=Biome ID %s is associated with %s -commands.biomesoplenty.tpbiome.usage=/biomesoplenty tpbiome [biomeId] -commands.biomesoplenty.tpbiome.success=Teleported %s to biome %s at (%s, %s, %s) -commands.biomesoplenty.tpbiome.error=Couldn't find biome %s! -commands.biomesoplenty.stats.blocks=Blocks: %s -commands.biomesoplenty.stats.items=Items: %s -commands.biomesoplenty.stats.entities=Entities: %s -commands.biomesoplenty.stats.biomes=Biomes: %s -commands.biomesoplenty.stripchunk.usage=/biomesoplenty stripchunk [radius] [block] [metadata] +commands.biomesoplenty.usage=/biomesoplenty [生態系ID] +commands.biomesoplenty.biomename.usage=/biomesoplenty biomename [生態系ID] +commands.biomesoplenty.biomename.success=生態系ID%s巳被綁定為: %s +commands.biomesoplenty.tpbiome.usage=/biomesoplenty tpbiome [生態系ID] +commands.biomesoplenty.tpbiome.success=玩家%s傳送到生態系: %s,座標(%s, %s, %s) +commands.biomesoplenty.tpbiome.error=找不到生態系: %s! +commands.biomesoplenty.stats.blocks=方塊: %s +commands.biomesoplenty.stats.items=物品: %s +commands.biomesoplenty.stats.entities=實體: %s +commands.biomesoplenty.stats.biomes=生態系: %s +commands.biomesoplenty.stripchunk.usage=/biomesoplenty stripchunk [範圍] [方塊ID] [方塊屬性] container.flower_basket=花籃 -generator.BIOMESOP=Biomes O' Plenty -generator.BIOMESOP.info=Notice: Biomes O' Plenty 1.8 is in a very early state +generator.BIOMESOP=多生態系 +generator.BIOMESOP.info=注意: 多生態系1.8還在非常早期的開發皆段。 -itemGroup.tabBiomesOPlenty=Biomes O' Plenty +itemGroup.tabBiomesOPlenty=多生態系 fluid.blood=血 fluid.honey=蜂蜜 @@ -88,22 +66,32 @@ item.biome_essence.name=生態系精華 item.biome_finder.name=生態系雷達 item.black_dye.name=黑色染料 item.blue_dye.name=藍色染料 +item.boat_cherry.name=櫻木船 +item.boat_ebony.name=檀木船 +item.boat_ethereal.name=空靈木船 +item.boat_eucalyptus.name=尤加利木船 +item.boat_fir.name=冷杉木船 +item.boat_hellbark.name=獄皮木船 +item.boat_jacaranda.name=藍花楹木船 +item.boat_magic.name=魔木船 +item.boat_mahogany.name=桃花心木船 +item.boat_mangrove.name=紅樹林木船 +item.boat_palm.name=棕櫚木船 +item.boat_pine.name=松木船 +item.boat_redwood.name=紅木船 +item.boat_sacred_oak.name=聖像樹木船 +item.boat_umbran.name=暗影木船 +item.boat_willow.name=柳木船 item.brown_dye.name=棕色染料 item.cherry_door.name=櫻木門 item.crystal_shard.name=星晶碎片 item.terrestrial_artifact.name=天地寶晶 -item.flax_string.name=麻線 -item.diamond_scythe.name=鑽石鐮 -item.dull_flower_band.name=單調的花環 item.ebony_door.name=檀木門 -item.enderporter.name=終界傳送器 item.ethereal_door.name=空靈木門 item.eucalyptus_door.name=尤加利木門 -item.exotic_flower_band.name=異國花環 item.filled_honeycomb.name=填滿的蜂巢 item.fir_door.name=冷杉木門 item.fleshchunk.name=肉片 -item.flippers.name=蛙鞋 item.flower_basket.name=花籃 item.gem_amber.name=琥珀 item.gem_amethyst.name=終界紫晶 @@ -114,42 +102,24 @@ item.gem_sapphire.name=藍寶石 item.gem_tanzanite.name=坦桑石 item.gem_topaz.name=黃玉 item.green_dye.name=綠色染料 -item.gold_scythe.name=黃金鐮 item.hellbark_door.name=獄皮木門 item.honeycomb.name=空的蜂巢 -item.ichor.name=膿血 -item.iron_scythe.name=鐵鐮 item.jacaranda_door.name=藍花楹門 item.jar_empty.name=空罐 item.jar_filled_honey.name=蜂蜜罐 item.jar_filled_pixie.name=小精靈罐 -item.jar_filled_butterfly.name=蝴蝶罐 -item.lush_flower_band.name=茂盛的花環 item.magic_door.name=魔木門 item.mahogany_door.name=桃花心木門 item.mangrove_door.name=紅樹林木門 item.mudball.name=泥巴球 -item.mud_axe.name=泥斧 -item.mud_boots.name=泥靴 item.mud_brick.name=泥磚 -item.mud_chestplate.name=泥胸甲 -item.mud_helmet.name=泥頭盔 -item.mud_hoe.name=泥鋤 -item.mud_leggings.name=泥護腿 -item.mud_pickaxe.name=泥鎬 -item.mud_scythe.name=泥鐮 -item.mud_shovel.name=泥鏟 -item.mud_sword.name=泥劍 -item.palm_door.name=棕梠門 +item.palm_door.name=棕櫚門 item.persimmon.name=柿子 item.peach.name=桃子 item.pear.name=梨子 item.pinecone.name=松果 item.pine_door.name=松木門 item.pixie_dust.name=小精靈粉塵 -item.plain_flower_band.name=樸素花環 -item.record_corruption.name=唱片 -item.record.corruption.desc=??? item.record_wanderer.name=唱片 item.record.wanderer.desc=Tim Rurkowski - Wanderer item.redwood_door.name=紅木門 @@ -159,19 +129,11 @@ item.saladfruit.name=水果沙拉 item.saladveggie.name=素食沙拉 item.saladshroom.name=蘑菇沙拉 item.shroompowder.name=蘑菇粉末 -item.soul.name=靈魂 -item.spawn_egg_pixie.name=生成 小精靈 -item.spawn_egg_wasp.name=生成 黃蜂 -item.spawn_egg_snail.name=生成 蝸牛 -item.spawn_egg_butterfly.name=生成 蝴蝶 -item.stone_scythe.name=石鐮 item.turnip.name=蕪菁 item.turnip_seeds.name=蕪菁種子 item.umbran_door.name=暗影木門 -item.wading_boots.name=涉水靴 item.white_dye.name=白染料 item.willow_door.name=柳木門 -item.wood_scythe.name=木鐮 tile.ash_block.name=灰燼方塊 tile.bamboo.name=竹 @@ -261,7 +223,8 @@ tile.grass.loamy_grass_block.name=壤質草地 tile.grass.sandy_grass_block.name=砂質草地 tile.grass.silty_grass_block.name=淤泥草地 tile.grass.origin_grass_block.name=源草地 -tile.grass.overgrown_netherrack.name=叢生地域石 +tile.grass.overgrown_netherrack.name=叢生地獄石 +tile.grass.mycelial_netherrack.name=菌絲地獄石 tile.grass_path.grass_loamy_path.name=壤質草徑 tile.grass_path.grass_sandy_path.name=沙質草徑 tile.grass_path.grass_silty_path.name=淤泥草徑 @@ -394,7 +357,7 @@ tile.plant_1.wildrice.name=野稻 tile.plant_1.cattail.name=香蒲 tile.plant_1.rivercane.name=箭竹 tile.plant_1.tinycactus.name=迷你仙人掌 -tile.plant_1.witherwart.name=凋萎疣 +tile.plant_1.devilweed.name=惡魔草 tile.plant_1.reed.name=蘆葦 tile.plant_1.root.name=根 tile.plant_1.rafflesia.name=霸王花 @@ -431,12 +394,6 @@ tile.sapling_2.mahogany_sapling.name=桃花心木樹苗 tile.sapling_2.ebony_sapling.name=檀木樹苗 tile.sapling_2.eucalyptus_sapling.name=尤加利樹苗 tile.seaweed.kelp.name=海帶 -tile.stone.limestone.name=石灰岩半磚 -tile.stone.polished_limestone.name=平滑石灰岩 -tile.stone.siltstone.name=泥岩 -tile.stone.polished_siltstone.name=平滑泥岩 -tile.stone.shale.name=頁岩 -tile.stone.polished_shale.name=平滑頁岩 tile.stone_formations.stone_formation.name=Rock Formation tile.terrarium.terrarium_fern.name=蕨培養罐 tile.terrarium.terrarium_mushroom.name=蘑菇培養罐 @@ -449,8 +406,8 @@ tile.terrarium.terrarium_sapling.name=樹苗培養罐 tile.terrarium.terrarium_glowshroom.name=螢光菇培養罐 tile.terrarium.terrarium_dead.name=死亡培養罐 tile.terrarium.terrarium_mystic.name=神秘培養罐 -tile.terrarium.terrarium_ominous.name=不詳培養罐 -tile.terrarium.terrarium_wasteland.name=荒蕪培養罐 +tile.terrarium.terrarium_ominous.name=不祥培養罐 +tile.terrarium.terrarium_wasteland.name=廢土培養罐 tile.terrarium.terrarium_origin.name=源培養罐 tile.terrarium.terrarium_nether.name=地獄培養罐 tile.terrarium.terrarium_ender.name=終界培養罐 @@ -464,17 +421,23 @@ tile.waterlily.lily_medium.name=中荷葉 tile.waterlily.lily_small.name=小荷葉 tile.waterlily.lily_tiny.name=迷你荷葉 tile.waterlily.lily_flower.name=荷花 +tile.white_sand.name=白沙 +tile.white_sandstone.white_sandstone.name=白沙石 +tile.white_sandstone.chiseled_white_sandstone.name=雕花白沙石 +tile.white_sandstone.smooth_white_sandstone.name=平滑白沙石 +tile.white_sandstone_slab.name=白沙石半磚 +tile.white_sandstone_stairs.name=白沙石階梯 tile.willow_fence.name=柳木柵欄 tile.willow_fence_gate.name=柳木柵欄門 tile.willow_wood_slab.name=柳木半磚 tile.willow_stairs.name=柳木樓梯 +tile.willow_vine.name=柳木藤 tile.hard_ice.name=硬質冰 tile.dried_sand.name=乾沙 -tile.crag_rock.name=峭岩 tile.mud_brick.name=泥磚 tile.crystal.name=星晶 -entity.BiomesOPlenty.butterfly.name=蝴蝶 -entity.BiomesOPlenty.pixie.name=小精靈 -entity.BiomesOPlenty.snail.name=蝸牛 -entity.BiomesOPlenty.wasp.name=大黃蜂 +entity.mudball.name=泥巴球 +entity.pixie.name=小精靈 +entity.wasp.name=大黃蜂 +entity.bop_boat.name=船 \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/boat_cherry.json b/src/main/resources/assets/biomesoplenty/models/item/boat_cherry.json new file mode 100644 index 000000000..f592611df --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/boat_cherry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/boat_cherry" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/boat_ebony.json b/src/main/resources/assets/biomesoplenty/models/item/boat_ebony.json new file mode 100644 index 000000000..3b686f634 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/boat_ebony.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/boat_ebony" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/boat_ethereal.json b/src/main/resources/assets/biomesoplenty/models/item/boat_ethereal.json new file mode 100644 index 000000000..9fc73fc14 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/boat_ethereal.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/boat_ethereal" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/boat_eucalyptus.json b/src/main/resources/assets/biomesoplenty/models/item/boat_eucalyptus.json new file mode 100644 index 000000000..57d2f1e57 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/boat_eucalyptus.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/boat_eucalyptus" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/boat_fir.json b/src/main/resources/assets/biomesoplenty/models/item/boat_fir.json new file mode 100644 index 000000000..02cc62bdb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/boat_fir.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/boat_fir" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/boat_hellbark.json b/src/main/resources/assets/biomesoplenty/models/item/boat_hellbark.json new file mode 100644 index 000000000..776b2b265 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/boat_hellbark.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/boat_hellbark" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/boat_jacaranda.json b/src/main/resources/assets/biomesoplenty/models/item/boat_jacaranda.json new file mode 100644 index 000000000..10262909b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/boat_jacaranda.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/boat_jacaranda" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/boat_magic.json b/src/main/resources/assets/biomesoplenty/models/item/boat_magic.json new file mode 100644 index 000000000..4b79fe353 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/boat_magic.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/boat_magic" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/boat_mahogany.json b/src/main/resources/assets/biomesoplenty/models/item/boat_mahogany.json new file mode 100644 index 000000000..7f824021e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/boat_mahogany.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/boat_mahogany" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/boat_mangrove.json b/src/main/resources/assets/biomesoplenty/models/item/boat_mangrove.json new file mode 100644 index 000000000..f0fd2950a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/boat_mangrove.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/boat_mangrove" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/boat_palm.json b/src/main/resources/assets/biomesoplenty/models/item/boat_palm.json new file mode 100644 index 000000000..662ae528b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/boat_palm.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/boat_palm" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/boat_pine.json b/src/main/resources/assets/biomesoplenty/models/item/boat_pine.json new file mode 100644 index 000000000..e7816a38f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/boat_pine.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/boat_pine" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/boat_redwood.json b/src/main/resources/assets/biomesoplenty/models/item/boat_redwood.json new file mode 100644 index 000000000..0bdca1243 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/boat_redwood.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/boat_redwood" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/boat_sacred_oak.json b/src/main/resources/assets/biomesoplenty/models/item/boat_sacred_oak.json new file mode 100644 index 000000000..13c551f8a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/boat_sacred_oak.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/boat_sacred_oak" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/boat_umbran.json b/src/main/resources/assets/biomesoplenty/models/item/boat_umbran.json new file mode 100644 index 000000000..30da8dda4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/boat_umbran.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/boat_umbran" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/boat_willow.json b/src/main/resources/assets/biomesoplenty/models/item/boat_willow.json new file mode 100644 index 000000000..54260904b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/boat_willow.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/boat_willow" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/recipes/boat_cherry.json b/src/main/resources/assets/biomesoplenty/recipes/boat_cherry.json new file mode 100644 index 000000000..13d6dea2b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/recipes/boat_cherry.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:planks_0", + "data": 1 + } + }, + "result": { + "item": "biomesoplenty:boat_cherry" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/recipes/boat_ebony.json b/src/main/resources/assets/biomesoplenty/recipes/boat_ebony.json new file mode 100644 index 000000000..714a763b1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/recipes/boat_ebony.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:planks_0", + "data": 14 + } + }, + "result": { + "item": "biomesoplenty:boat_ebony" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/recipes/boat_ethereal.json b/src/main/resources/assets/biomesoplenty/recipes/boat_ethereal.json new file mode 100644 index 000000000..f6cb1d3be --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/recipes/boat_ethereal.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:planks_0", + "data": 4 + } + }, + "result": { + "item": "biomesoplenty:boat_ethereal" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/recipes/boat_eucalyptus.json b/src/main/resources/assets/biomesoplenty/recipes/boat_eucalyptus.json new file mode 100644 index 000000000..fe0eb7455 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/recipes/boat_eucalyptus.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:planks_0", + "data": 15 + } + }, + "result": { + "item": "biomesoplenty:boat_eucalyptus" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/recipes/boat_fir.json b/src/main/resources/assets/biomesoplenty/recipes/boat_fir.json new file mode 100644 index 000000000..8eb6db35a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/recipes/boat_fir.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:planks_0", + "data": 3 + } + }, + "result": { + "item": "biomesoplenty:boat_fir" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/recipes/boat_hellbark.json b/src/main/resources/assets/biomesoplenty/recipes/boat_hellbark.json new file mode 100644 index 000000000..0f555bc72 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/recipes/boat_hellbark.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:planks_0", + "data": 11 + } + }, + "result": { + "item": "biomesoplenty:boat_hellbark" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/recipes/boat_jacaranda.json b/src/main/resources/assets/biomesoplenty/recipes/boat_jacaranda.json new file mode 100644 index 000000000..88e9b0ea4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/recipes/boat_jacaranda.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:planks_0", + "data": 12 + } + }, + "result": { + "item": "biomesoplenty:boat_jacaranda" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/recipes/boat_magic.json b/src/main/resources/assets/biomesoplenty/recipes/boat_magic.json new file mode 100644 index 000000000..03e5bcb78 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/recipes/boat_magic.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:planks_0", + "data": 5 + } + }, + "result": { + "item": "biomesoplenty:boat_magic" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/recipes/boat_mahogany.json b/src/main/resources/assets/biomesoplenty/recipes/boat_mahogany.json new file mode 100644 index 000000000..a6240ce1b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/recipes/boat_mahogany.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:planks_0", + "data": 13 + } + }, + "result": { + "item": "biomesoplenty:boat_mahogany" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/recipes/boat_mangrove.json b/src/main/resources/assets/biomesoplenty/recipes/boat_mangrove.json new file mode 100644 index 000000000..202c85706 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/recipes/boat_mangrove.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:planks_0", + "data": 6 + } + }, + "result": { + "item": "biomesoplenty:boat_mangrove" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/recipes/boat_palm.json b/src/main/resources/assets/biomesoplenty/recipes/boat_palm.json new file mode 100644 index 000000000..7e9f0695c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/recipes/boat_palm.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:planks_0", + "data": 7 + } + }, + "result": { + "item": "biomesoplenty:boat_palm" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/recipes/boat_pine.json b/src/main/resources/assets/biomesoplenty/recipes/boat_pine.json new file mode 100644 index 000000000..22d262f40 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/recipes/boat_pine.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:planks_0", + "data": 10 + } + }, + "result": { + "item": "biomesoplenty:boat_pine" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/recipes/boat_redwood.json b/src/main/resources/assets/biomesoplenty/recipes/boat_redwood.json new file mode 100644 index 000000000..317570efc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/recipes/boat_redwood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:planks_0", + "data": 8 + } + }, + "result": { + "item": "biomesoplenty:boat_redwood" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/recipes/boat_sacred_oak.json b/src/main/resources/assets/biomesoplenty/recipes/boat_sacred_oak.json new file mode 100644 index 000000000..0e5937d69 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/recipes/boat_sacred_oak.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:planks_0", + "data": 0 + } + }, + "result": { + "item": "biomesoplenty:boat_sacred_oak" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/recipes/boat_umbran.json b/src/main/resources/assets/biomesoplenty/recipes/boat_umbran.json new file mode 100644 index 000000000..f200ad06c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/recipes/boat_umbran.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:planks_0", + "data": 2 + } + }, + "result": { + "item": "biomesoplenty:boat_umbran" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/recipes/boat_willow.json b/src/main/resources/assets/biomesoplenty/recipes/boat_willow.json new file mode 100644 index 000000000..76ff5ef6d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/recipes/boat_willow.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:planks_0", + "data": 9 + } + }, + "result": { + "item": "biomesoplenty:boat_willow" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/textures/blocks/lily_of_the_valley.png b/src/main/resources/assets/biomesoplenty/textures/blocks/lily_of_the_valley.png index e9a22ae09..7d9d03856 100644 Binary files a/src/main/resources/assets/biomesoplenty/textures/blocks/lily_of_the_valley.png and b/src/main/resources/assets/biomesoplenty/textures/blocks/lily_of_the_valley.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boats/boat_sacred_oak.png b/src/main/resources/assets/biomesoplenty/textures/entity/boats/boat_sacred_oak.png index 793046568..b51cba21b 100644 Binary files a/src/main/resources/assets/biomesoplenty/textures/entity/boats/boat_sacred_oak.png and b/src/main/resources/assets/biomesoplenty/textures/entity/boats/boat_sacred_oak.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/items/cherry_boat.png b/src/main/resources/assets/biomesoplenty/textures/items/boat_cherry.png similarity index 100% rename from src/main/resources/assets/biomesoplenty/textures/items/cherry_boat.png rename to src/main/resources/assets/biomesoplenty/textures/items/boat_cherry.png diff --git a/src/main/resources/assets/biomesoplenty/textures/items/ebony_boat.png b/src/main/resources/assets/biomesoplenty/textures/items/boat_ebony.png similarity index 100% rename from src/main/resources/assets/biomesoplenty/textures/items/ebony_boat.png rename to src/main/resources/assets/biomesoplenty/textures/items/boat_ebony.png diff --git a/src/main/resources/assets/biomesoplenty/textures/items/ethereal_boat.png b/src/main/resources/assets/biomesoplenty/textures/items/boat_ethereal.png similarity index 100% rename from src/main/resources/assets/biomesoplenty/textures/items/ethereal_boat.png rename to src/main/resources/assets/biomesoplenty/textures/items/boat_ethereal.png diff --git a/src/main/resources/assets/biomesoplenty/textures/items/eucalyptus_boat.png b/src/main/resources/assets/biomesoplenty/textures/items/boat_eucalyptus.png similarity index 100% rename from src/main/resources/assets/biomesoplenty/textures/items/eucalyptus_boat.png rename to src/main/resources/assets/biomesoplenty/textures/items/boat_eucalyptus.png diff --git a/src/main/resources/assets/biomesoplenty/textures/items/fir_boat.png b/src/main/resources/assets/biomesoplenty/textures/items/boat_fir.png similarity index 100% rename from src/main/resources/assets/biomesoplenty/textures/items/fir_boat.png rename to src/main/resources/assets/biomesoplenty/textures/items/boat_fir.png diff --git a/src/main/resources/assets/biomesoplenty/textures/items/hellbark_boat.png b/src/main/resources/assets/biomesoplenty/textures/items/boat_hellbark.png similarity index 100% rename from src/main/resources/assets/biomesoplenty/textures/items/hellbark_boat.png rename to src/main/resources/assets/biomesoplenty/textures/items/boat_hellbark.png diff --git a/src/main/resources/assets/biomesoplenty/textures/items/jacaranda_boat.png b/src/main/resources/assets/biomesoplenty/textures/items/boat_jacaranda.png similarity index 100% rename from src/main/resources/assets/biomesoplenty/textures/items/jacaranda_boat.png rename to src/main/resources/assets/biomesoplenty/textures/items/boat_jacaranda.png diff --git a/src/main/resources/assets/biomesoplenty/textures/items/magic_boat.png b/src/main/resources/assets/biomesoplenty/textures/items/boat_magic.png similarity index 100% rename from src/main/resources/assets/biomesoplenty/textures/items/magic_boat.png rename to src/main/resources/assets/biomesoplenty/textures/items/boat_magic.png diff --git a/src/main/resources/assets/biomesoplenty/textures/items/mahogany_boat.png b/src/main/resources/assets/biomesoplenty/textures/items/boat_mahogany.png similarity index 100% rename from src/main/resources/assets/biomesoplenty/textures/items/mahogany_boat.png rename to src/main/resources/assets/biomesoplenty/textures/items/boat_mahogany.png diff --git a/src/main/resources/assets/biomesoplenty/textures/items/mangrove_boat.png b/src/main/resources/assets/biomesoplenty/textures/items/boat_mangrove.png similarity index 100% rename from src/main/resources/assets/biomesoplenty/textures/items/mangrove_boat.png rename to src/main/resources/assets/biomesoplenty/textures/items/boat_mangrove.png diff --git a/src/main/resources/assets/biomesoplenty/textures/items/palm_boat.png b/src/main/resources/assets/biomesoplenty/textures/items/boat_palm.png similarity index 100% rename from src/main/resources/assets/biomesoplenty/textures/items/palm_boat.png rename to src/main/resources/assets/biomesoplenty/textures/items/boat_palm.png diff --git a/src/main/resources/assets/biomesoplenty/textures/items/pine_boat.png b/src/main/resources/assets/biomesoplenty/textures/items/boat_pine.png similarity index 100% rename from src/main/resources/assets/biomesoplenty/textures/items/pine_boat.png rename to src/main/resources/assets/biomesoplenty/textures/items/boat_pine.png diff --git a/src/main/resources/assets/biomesoplenty/textures/items/redwood_boat.png b/src/main/resources/assets/biomesoplenty/textures/items/boat_redwood.png similarity index 100% rename from src/main/resources/assets/biomesoplenty/textures/items/redwood_boat.png rename to src/main/resources/assets/biomesoplenty/textures/items/boat_redwood.png diff --git a/src/main/resources/assets/biomesoplenty/textures/items/boat_sacred_oak.png b/src/main/resources/assets/biomesoplenty/textures/items/boat_sacred_oak.png new file mode 100644 index 000000000..33f683bf8 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/items/boat_sacred_oak.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/items/umbran_boat.png b/src/main/resources/assets/biomesoplenty/textures/items/boat_umbran.png similarity index 100% rename from src/main/resources/assets/biomesoplenty/textures/items/umbran_boat.png rename to src/main/resources/assets/biomesoplenty/textures/items/boat_umbran.png diff --git a/src/main/resources/assets/biomesoplenty/textures/items/willow_boat.png b/src/main/resources/assets/biomesoplenty/textures/items/boat_willow.png similarity index 100% rename from src/main/resources/assets/biomesoplenty/textures/items/willow_boat.png rename to src/main/resources/assets/biomesoplenty/textures/items/boat_willow.png diff --git a/src/main/resources/assets/biomesoplenty/textures/items/sacred_oak_boat.png b/src/main/resources/assets/biomesoplenty/textures/items/sacred_oak_boat.png deleted file mode 100644 index 6013ea358..000000000 Binary files a/src/main/resources/assets/biomesoplenty/textures/items/sacred_oak_boat.png and /dev/null differ