From 8ebeacde42426f85ba0b31085fe4fc861aa5498d Mon Sep 17 00:00:00 2001 From: koh-gh <36918206+koh-gh@users.noreply.github.com> Date: Wed, 28 Feb 2018 20:37:36 +0900 Subject: [PATCH 01/13] Update ja_JP.lang Update and rewrite for BoP 1.12.2 --- .../assets/biomesoplenty/lang/ja_JP.lang | 122 +++++------------- 1 file changed, 34 insertions(+), 88 deletions(-) diff --git a/src/main/resources/assets/biomesoplenty/lang/ja_JP.lang b/src/main/resources/assets/biomesoplenty/lang/ja_JP.lang index b3c777b6f..ef88b268b 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 +#version 1.12.2-7.0.1.2315-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が見つかりました! @@ -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,6 +408,12 @@ 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=柳の木材ハーフブロック @@ -477,7 +424,6 @@ 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=ネザースズメバチ From 7adf0f38e37228c588bd911fe3b488aed7aa7179 Mon Sep 17 00:00:00 2001 From: Forstride Date: Thu, 1 Mar 2018 02:46:32 -0500 Subject: [PATCH 02/13] Tweaked vanilla forest biome extensions --- .../biome/vanilla/BiomeExtBirchForest.java | 6 +++--- .../biome/vanilla/BiomeExtBirchForestHills.java | 6 +++--- .../common/biome/vanilla/BiomeExtForest.java | 2 +- .../biome/vanilla/BiomeExtForestHills.java | 2 +- .../textures/blocks/lily_of_the_valley.png | Bin 496 -> 493 bytes 5 files changed, 8 insertions(+), 8 deletions(-) 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/resources/assets/biomesoplenty/textures/blocks/lily_of_the_valley.png b/src/main/resources/assets/biomesoplenty/textures/blocks/lily_of_the_valley.png index e9a22ae0920a9e8ba9b28e4d8be98e7b59e30a18..7d9d03856a2e3bd498dbbea4962433d5a73fe809 100644 GIT binary patch delta 443 zcmV;s0Yv`r1MLHlJb%6b01mzZ>O!%=0000PbVXQnQ*UN;cVTj60B~VxZgehgWpp4k zE-)@JHbiN!^#A|?YDq*vR5(waQrSwwP!v3E(ky==h`1m=s8H!*sZtkEgxZB#r1cL3 z!4(y8`2ZgT|ExbyXbT~QK=TKE@aT9as@>L delta 446 zcmV;v0YU!l1MmZoJb%9c01m$aI0aKA0000QbVXQnQ*UN;cVTj608n9RZgehAMN}Ym zGcGkQF)>H;LN@>a0c=S`K~y+Tol@IM!$1_=q;1;zAPRyX;e+CZBGfyDR;|5gs#Zls ztP}*Vs1&XEm;Hf28Ym3}N}h7;9Fv%e(CENnXP0v(v$GLFM1LX?uAh)3$z}gQGMRK) zNO%sS(I}UPAouW_TOW#|_#&6DDq#;`AB)A9hsIcAM4UbqXrejF`}3C)4bA27Hb+?T z#p>NA)!r%uC#Z|YF82&Lk!6`H7#c({2%gT*@OstU7sn6VH2EOV From fee7329151359e347b7ac1962c60f6a156f77c64 Mon Sep 17 00:00:00 2001 From: Forstride Date: Thu, 1 Mar 2018 20:57:58 -0500 Subject: [PATCH 03/13] Added smelting recipes for gem ore blocks (Closes #1116) --- src/main/java/biomesoplenty/common/init/ModCrafting.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/biomesoplenty/common/init/ModCrafting.java b/src/main/java/biomesoplenty/common/init/ModCrafting.java index 44ecdbcad..d551e08f6 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); From a5c23fa9e196003994c0d4bf6d9c0802e2f62a57 Mon Sep 17 00:00:00 2001 From: Forstride Date: Thu, 1 Mar 2018 21:53:06 -0500 Subject: [PATCH 04/13] Fixed sheep eating sounds for BOP grass blocks (Closes #1176). Tweaked foliage values for various biomes --- .../biomesoplenty/common/biome/overworld/BiomeGenBog.java | 4 ++-- .../common/biome/overworld/BiomeGenBorealForest.java | 2 +- .../common/biome/overworld/BiomeGenBrushland.java | 4 ++-- .../common/biome/overworld/BiomeGenChaparral.java | 2 +- .../biomesoplenty/common/biome/overworld/BiomeGenFen.java | 2 +- .../common/biome/overworld/BiomeGenMapleWoods.java | 2 +- .../common/biome/overworld/BiomeGenMeadow.java | 2 +- .../common/biome/overworld/BiomeGenMountain.java | 2 +- .../common/biome/overworld/BiomeGenMysticGrove.java | 2 +- .../common/biome/overworld/BiomeGenOutback.java | 2 +- .../common/biome/overworld/BiomeGenOvergrownCliffs.java | 4 ++-- .../common/biome/overworld/BiomeGenPrairie.java | 2 +- .../common/biome/overworld/BiomeGenRainforest.java | 6 +++--- .../common/biome/overworld/BiomeGenRedwoodForest.java | 4 ++-- .../common/biome/overworld/BiomeGenShield.java | 2 +- .../biome/overworld/BiomeGenSnowyConiferousForest.java | 4 ++-- .../common/biome/overworld/BiomeGenSnowyForest.java | 4 ++-- .../common/biome/overworld/BiomeGenTemperateRainforest.java | 2 +- .../common/biome/overworld/BiomeGenTundra.java | 2 +- .../common/biome/overworld/BiomeGenWoodland.java | 2 +- .../common/entities/ai/EntityAIEatBOPGrass.java | 4 ++-- 21 files changed, 30 insertions(+), 30 deletions(-) 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/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/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/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); } } From 37e9ffa51c2a104ac56e3ad1f4442974fced725d Mon Sep 17 00:00:00 2001 From: Forstride Date: Fri, 2 Mar 2018 04:08:54 -0500 Subject: [PATCH 05/13] Decreased the amount of stalagmites/stalactites underground --- .../biomesoplenty/common/biome/overworld/BOPOverworldBiome.java | 2 +- .../common/biome/vanilla/ExtendedBiomeWrapper.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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/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 From 917c075b26cbe0a883e8715df7b0eade3373f492 Mon Sep 17 00:00:00 2001 From: Forstride Date: Fri, 2 Mar 2018 05:09:50 -0500 Subject: [PATCH 06/13] Increased the temperature of a few biomes so they don't get snow during winter in Tough As Nails --- .../common/biome/overworld/BiomeGenFlowerIsland.java | 2 +- .../biomesoplenty/common/biome/overworld/BiomeGenMangrove.java | 2 +- .../common/biome/overworld/BiomeGenSacredSprings.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) 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/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); From 39640b81ba03d86090d60493ef4b51e338a48562 Mon Sep 17 00:00:00 2001 From: koh <36918206+koh-gh@users.noreply.github.com> Date: Sat, 3 Mar 2018 18:32:32 +0900 Subject: [PATCH 07/13] Update ja_JP.lang Fixed a few lack of correction. --- .../resources/assets/biomesoplenty/lang/ja_JP.lang | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/resources/assets/biomesoplenty/lang/ja_JP.lang b/src/main/resources/assets/biomesoplenty/lang/ja_JP.lang index ef88b268b..3a56f1dc4 100644 --- a/src/main/resources/assets/biomesoplenty/lang/ja_JP.lang +++ b/src/main/resources/assets/biomesoplenty/lang/ja_JP.lang @@ -1,5 +1,5 @@ -#Translate by koh -#version 1.12.2-7.0.1.2315-universal +# Translate by koh +# Based on version 1.12.2-7.0.1.2320-universal advancements.biomesoplenty.root.title=Biomes O' Plenty advancements.biomesoplenty.root.description=探検家の夢... @@ -8,7 +8,7 @@ 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.miners_delight.description=深い洞窟の奥で鉱夫の癒やし花を見つける advancements.biomesoplenty.harvest_turnip.title=カブ式市場 advancements.biomesoplenty.harvest_turnip.description=カブを収穫する advancements.biomesoplenty.flesh_and_blood.title=血肉 @@ -31,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=足跡の透明度 @@ -47,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 は発展途上中です @@ -418,9 +418,9 @@ 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=天界のクリスタル From dc34f7b5a0ca95ee8ac39023df36b22047c4af0e Mon Sep 17 00:00:00 2001 From: "LiHao Liao (Leon Liao)" Date: Sat, 3 Mar 2018 18:36:46 +0800 Subject: [PATCH 08/13] Update zh_TW.lang --- .../assets/biomesoplenty/lang/zh_TW.lang | 152 ++++++------------ 1 file changed, 49 insertions(+), 103 deletions(-) diff --git a/src/main/resources/assets/biomesoplenty/lang/zh_TW.lang b/src/main/resources/assets/biomesoplenty/lang/zh_TW.lang index 28ad4eee6..9d2dd0c72 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=蜂蜜 @@ -92,18 +70,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=終界紫晶 @@ -114,32 +86,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=桃子 @@ -147,9 +104,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=紅木門 @@ -159,19 +113,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 +207,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 +341,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 +378,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 +390,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 +405,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=大黃蜂 +entity.mudball.name=泥巴球 +entity.pixie.name=小精靈 +entity.wasp.name=大黃蜂 From 7dffb4754f05a39e2cf7ae69f723a93423f2da56 Mon Sep 17 00:00:00 2001 From: Forstride Date: Sun, 4 Mar 2018 08:25:04 -0500 Subject: [PATCH 09/13] Added boats for BOP wood types (Closes #716) --- .../java/biomesoplenty/api/item/BOPItems.java | 17 + .../common/entities/item/EntityBOPBoat.java | 1083 +++++++++++++++++ .../common/entities/item/ModelBOPBoat.java | 117 ++ .../common/entities/item/RenderBOPBoat.java | 109 ++ .../common/init/ModEntities.java | 4 + .../biomesoplenty/common/init/ModItems.java | 36 +- .../common/item/ItemBOPBoat.java | 125 ++ .../java/biomesoplenty/core/ClientProxy.java | 3 + .../recipes/transportation/boat_cherry.json | 27 + .../recipes/transportation/boat_ebony.json | 27 + .../recipes/transportation/boat_ethereal.json | 27 + .../transportation/boat_eucalyptus.json | 27 + .../recipes/transportation/boat_fir.json | 27 + .../recipes/transportation/boat_hellbark.json | 27 + .../transportation/boat_jacaranda.json | 27 + .../recipes/transportation/boat_magic.json | 27 + .../recipes/transportation/boat_mahogany.json | 27 + .../recipes/transportation/boat_mangrove.json | 27 + .../recipes/transportation/boat_palm.json | 27 + .../recipes/transportation/boat_pine.json | 27 + .../recipes/transportation/boat_redwood.json | 27 + .../transportation/boat_sacred_oak.json | 27 + .../recipes/transportation/boat_umbran.json | 27 + .../recipes/transportation/boat_willow.json | 27 + .../assets/biomesoplenty/lang/en_US.lang | 19 +- .../models/item/boat_cherry.json | 6 + .../biomesoplenty/models/item/boat_ebony.json | 6 + .../models/item/boat_ethereal.json | 6 + .../models/item/boat_eucalyptus.json | 6 + .../biomesoplenty/models/item/boat_fir.json | 6 + .../models/item/boat_hellbark.json | 6 + .../models/item/boat_jacaranda.json | 6 + .../biomesoplenty/models/item/boat_magic.json | 6 + .../models/item/boat_mahogany.json | 6 + .../models/item/boat_mangrove.json | 6 + .../biomesoplenty/models/item/boat_palm.json | 6 + .../biomesoplenty/models/item/boat_pine.json | 6 + .../models/item/boat_redwood.json | 6 + .../models/item/boat_sacred_oak.json | 6 + .../models/item/boat_umbran.json | 6 + .../models/item/boat_willow.json | 6 + .../biomesoplenty/recipes/boat_cherry.json | 17 + .../biomesoplenty/recipes/boat_ebony.json | 17 + .../biomesoplenty/recipes/boat_ethereal.json | 17 + .../recipes/boat_eucalyptus.json | 17 + .../biomesoplenty/recipes/boat_fir.json | 17 + .../biomesoplenty/recipes/boat_hellbark.json | 17 + .../biomesoplenty/recipes/boat_jacaranda.json | 17 + .../biomesoplenty/recipes/boat_magic.json | 17 + .../biomesoplenty/recipes/boat_mahogany.json | 17 + .../biomesoplenty/recipes/boat_mangrove.json | 17 + .../biomesoplenty/recipes/boat_palm.json | 17 + .../biomesoplenty/recipes/boat_pine.json | 17 + .../biomesoplenty/recipes/boat_redwood.json | 17 + .../recipes/boat_sacred_oak.json | 17 + .../biomesoplenty/recipes/boat_umbran.json | 17 + .../biomesoplenty/recipes/boat_willow.json | 17 + .../textures/entity/boats/boat_sacred_oak.png | Bin 4160 -> 4692 bytes .../{cherry_boat.png => boat_cherry.png} | Bin .../items/{ebony_boat.png => boat_ebony.png} | Bin .../{ethereal_boat.png => boat_ethereal.png} | Bin ...ucalyptus_boat.png => boat_eucalyptus.png} | Bin .../items/{fir_boat.png => boat_fir.png} | Bin .../{hellbark_boat.png => boat_hellbark.png} | Bin ...{jacaranda_boat.png => boat_jacaranda.png} | Bin .../items/{magic_boat.png => boat_magic.png} | Bin .../{mahogany_boat.png => boat_mahogany.png} | Bin .../{mangrove_boat.png => boat_mangrove.png} | Bin .../items/{palm_boat.png => boat_palm.png} | Bin .../items/{pine_boat.png => boat_pine.png} | Bin .../{redwood_boat.png => boat_redwood.png} | Bin .../textures/items/boat_sacred_oak.png | Bin 0 -> 427 bytes .../{umbran_boat.png => boat_umbran.png} | Bin .../{willow_boat.png => boat_willow.png} | Bin .../textures/items/sacred_oak_boat.png | Bin 363 -> 0 bytes 75 files changed, 2311 insertions(+), 2 deletions(-) create mode 100644 src/main/java/biomesoplenty/common/entities/item/EntityBOPBoat.java create mode 100644 src/main/java/biomesoplenty/common/entities/item/ModelBOPBoat.java create mode 100644 src/main/java/biomesoplenty/common/entities/item/RenderBOPBoat.java create mode 100644 src/main/java/biomesoplenty/common/item/ItemBOPBoat.java create mode 100644 src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_cherry.json create mode 100644 src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_ebony.json create mode 100644 src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_ethereal.json create mode 100644 src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_eucalyptus.json create mode 100644 src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_fir.json create mode 100644 src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_hellbark.json create mode 100644 src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_jacaranda.json create mode 100644 src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_magic.json create mode 100644 src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_mahogany.json create mode 100644 src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_mangrove.json create mode 100644 src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_palm.json create mode 100644 src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_pine.json create mode 100644 src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_redwood.json create mode 100644 src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_sacred_oak.json create mode 100644 src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_umbran.json create mode 100644 src/main/resources/assets/biomesoplenty/advancements/recipes/transportation/boat_willow.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/boat_cherry.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/boat_ebony.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/boat_ethereal.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/boat_eucalyptus.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/boat_fir.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/boat_hellbark.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/boat_jacaranda.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/boat_magic.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/boat_mahogany.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/boat_mangrove.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/boat_palm.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/boat_pine.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/boat_redwood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/boat_sacred_oak.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/boat_umbran.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/boat_willow.json create mode 100644 src/main/resources/assets/biomesoplenty/recipes/boat_cherry.json create mode 100644 src/main/resources/assets/biomesoplenty/recipes/boat_ebony.json create mode 100644 src/main/resources/assets/biomesoplenty/recipes/boat_ethereal.json create mode 100644 src/main/resources/assets/biomesoplenty/recipes/boat_eucalyptus.json create mode 100644 src/main/resources/assets/biomesoplenty/recipes/boat_fir.json create mode 100644 src/main/resources/assets/biomesoplenty/recipes/boat_hellbark.json create mode 100644 src/main/resources/assets/biomesoplenty/recipes/boat_jacaranda.json create mode 100644 src/main/resources/assets/biomesoplenty/recipes/boat_magic.json create mode 100644 src/main/resources/assets/biomesoplenty/recipes/boat_mahogany.json create mode 100644 src/main/resources/assets/biomesoplenty/recipes/boat_mangrove.json create mode 100644 src/main/resources/assets/biomesoplenty/recipes/boat_palm.json create mode 100644 src/main/resources/assets/biomesoplenty/recipes/boat_pine.json create mode 100644 src/main/resources/assets/biomesoplenty/recipes/boat_redwood.json create mode 100644 src/main/resources/assets/biomesoplenty/recipes/boat_sacred_oak.json create mode 100644 src/main/resources/assets/biomesoplenty/recipes/boat_umbran.json create mode 100644 src/main/resources/assets/biomesoplenty/recipes/boat_willow.json rename src/main/resources/assets/biomesoplenty/textures/items/{cherry_boat.png => boat_cherry.png} (100%) rename src/main/resources/assets/biomesoplenty/textures/items/{ebony_boat.png => boat_ebony.png} (100%) rename src/main/resources/assets/biomesoplenty/textures/items/{ethereal_boat.png => boat_ethereal.png} (100%) rename src/main/resources/assets/biomesoplenty/textures/items/{eucalyptus_boat.png => boat_eucalyptus.png} (100%) rename src/main/resources/assets/biomesoplenty/textures/items/{fir_boat.png => boat_fir.png} (100%) rename src/main/resources/assets/biomesoplenty/textures/items/{hellbark_boat.png => boat_hellbark.png} (100%) rename src/main/resources/assets/biomesoplenty/textures/items/{jacaranda_boat.png => boat_jacaranda.png} (100%) rename src/main/resources/assets/biomesoplenty/textures/items/{magic_boat.png => boat_magic.png} (100%) rename src/main/resources/assets/biomesoplenty/textures/items/{mahogany_boat.png => boat_mahogany.png} (100%) rename src/main/resources/assets/biomesoplenty/textures/items/{mangrove_boat.png => boat_mangrove.png} (100%) rename src/main/resources/assets/biomesoplenty/textures/items/{palm_boat.png => boat_palm.png} (100%) rename src/main/resources/assets/biomesoplenty/textures/items/{pine_boat.png => boat_pine.png} (100%) rename src/main/resources/assets/biomesoplenty/textures/items/{redwood_boat.png => boat_redwood.png} (100%) create mode 100644 src/main/resources/assets/biomesoplenty/textures/items/boat_sacred_oak.png rename src/main/resources/assets/biomesoplenty/textures/items/{umbran_boat.png => boat_umbran.png} (100%) rename src/main/resources/assets/biomesoplenty/textures/items/{willow_boat.png => boat_willow.png} (100%) delete mode 100644 src/main/resources/assets/biomesoplenty/textures/items/sacred_oak_boat.png 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/entities/item/EntityBOPBoat.java b/src/main/java/biomesoplenty/common/entities/item/EntityBOPBoat.java new file mode 100644 index 000000000..b26f69847 --- /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 EntityBOPBoat) + { + 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/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/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/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/entity/boats/boat_sacred_oak.png b/src/main/resources/assets/biomesoplenty/textures/entity/boats/boat_sacred_oak.png index 7930465689198922390f5af38f89593cf6a498d1..b51cba21b2ccc12bb7738f7c72f21630f24064bf 100644 GIT binary patch literal 4692 zcmZ`-XH?Tm)BndH5vA!>S_Fb30wNuv1Pr~16cH{;2_Q%(2n0x|5d`(pK|u^fn)D7* zLsg1`p;u`VdI=Da4sX2A`+R&p%p{ zIeHrJ8ww1hEp&EDI!XXg8g=2w>MTuWc&_=x0|1y?{t)Pj;C(#pkQ1Z!81u;07UON@ z{tS3-<$%VBqMu=4(xT#`k`kLRhj##Qu~$n~$q%$X9gM$%AF|V&qw=YOM(H#1&M^c|laGfoy8xh!*>@LfmE6-xa)eeY4 zJ-W-vIpW*3UA8n!Yes}`dFYg7?AVP(uKOR@AHVsvy z#k-jX1Fa}yZG#WL3>0$g)ceLiU0WKutTIsC@2U??Os@xFK6;0@E;&OQ4O zesy6ROvwZKL+u-Rej+A(t*y`8GbkUzH8AorA2oMn;6=MrK9`rjpBOzgzu8aer)d9v zhtS`xS_lh@@$Tboi2T-KLp(b2>r%rXE>AdlD2?`QH5-gr8STH~0&N8BReoiAGIS20 zqz8R2%>VKEvx|^yyy=`?9e8UY8MOc8debn}yet60Z{a}qn(199bq$RpPTcgpwYC-Z zIa9N($S|%N{Tl;r(M~y`C+FczDOU{)@ z_6v#`QVt7IHQrS6MSM4f#eB$d-Ak;;dR9npY=K{pW6j0uTYfhh=UJ?gvNGSr3i9#X z9E7&&u%FCqF0U~}uLKCgVxBV?gX?F*#-Ji@X@km=eDU29Jo*~ygb*uN%}=-U zF1{?~OptRqIlKGRHs`)%E2wZDz1xBTc?SA62yzsPRCWBsMy!ffX{&!Ux;2>ep!fNvWSBr zA4V(-%Kt)1P);R*Jm(c9(gp9laGQv-;d|eGrVYF-08hEM!4^v78@&+6yO3L%<@nLU zFMaUm8cI6;RJVTP54gSSDmt;!jDb}XE3Ew<7&DTQ><1=FkJMpbH<#8Tr#x?=o1d~m zq6a*kPyW-5G6#j$yLDPW7#!I4NRrcV+T0W$FTtWMV%Q#LSI% zmpw-aLNBBRM^r}G#=TGI!v;=Z8^gOl*A80(y`Y-FW}>A$<5w}#St)5L(SHM@^Cgcw zH;L!3JStD=wa6V7%gdfjbc}w7$uLXGj~`!dc3Kj6qL~ACf})5ylMV6{g5DKtKQO^I zv6Y7p`6@{nbp^-0HTgGsVQfMPnubi7MAdoQ<++n!W?V(3E8dwAdb!}JE5u+vnYS>$ zrX#?9C-jL;1*aab7-cYvjFsTI>P=@UJv(9HDC1qn9uQ3Z6QGA?#ZRr5J7Gl&80}-6 zw{8_g>{|^s%TKl;5NdC{AM&6nd3UDg?5iQRka+Uh=4Fq*Pcg89PWDj+$sbtA7$*Gr zMo>kC#oM-dYTw9q&6jqJRGT!iCpP-RV?P3WO3AnSAziHc{M?dtZNPxp;r1y|qsF{- zPIeqSJ?Bx0D}K#!n;xH3+o?yxN)G`i@5~15!--LW+1{S=SBo3`@^ydtM0_CR#p$UR zb-HF8u%s5oVQT+IJJ2q_v2*IbV(E}`AepNZ?5A$rozx5 zQBKQIlHHgm+`dotE%P1DFD&o)ODLcP^7v!URi7)Ne$)=|lUrqDV?`wn zW1H&#wnMo>2`aq#zABQ`7VtQ%*a{dsqPLU3(>3j!!4WJAC6Tk$nqRZuDGGcmwaK+> zFr2>NQ=VQp8~f69rwe^#rp(Pgv48Bg)7a5onX0Kx*b;VP3=l2M(=hcQ-EeU3Ek_+z zycAncJ^dgh&co?XjriWzXMD}YJRz&RQuP-XPW{?5(KDqb(i;<3P1NEpYPTrSSU^O}Yp_~dpX*I6I( z;NQI>6r}%S>Un08^dCc*auJ=rmkj0M2330))b{8Vl_ZD!b<<}<$*T&^E{BR zeS3X$M0wGTFA=B1tVh755uy53o6e{}=4p!!KdZK9|JJgLQAn|!)hS=Bc|&h(f+CO8 zCmGXrakgKThh-0lU$&E~sL964=rdAd>UF`(j84qrX>w+>0y4tS1HhM5Pad}lFl7y} z#v1*gb|O$nPPviyekx^yiR|DKoCI@Iy>m2YXkat-Z0IwONB{Q4i=B^!)1Xk6>Z`C! zJ8wi(8Oru+E z_lH|Aw~tts_Vt)qxvGDO7Z9#+_KNc=+=Fx&!6#F};>Ck5X8l!Hn;NJ0Tf&!#5x}i5 zz9%NC7ZcJ+ zhqGdzl;k}+at(?&?(%jm`) zyceY!d}xn@J{GlVr_ZAK9ikvIdOfaD!QyiGI{M{}@)3R~6HyWREIUJXP0B>fjAUoH zQGT|?+t(?F)K0m?;aPyR(8X(%0gJJI^ad~k$90$Dm$nwv$0h(wy2Vf>xOmR=@J)tNaxxQ z(3=)lZ~lKbop{7jU&9ug==)FQ#|lhBwO~_Q44r!Wts7FNV$>xc&L|@-_lj?uxrrt> zTdCI8Mt!M6O6rvQt)mg>hDXFE^F-YwUoSJa}oIkF!qe^=IocJ;(ps)AXc%)BW697 zaq!XU6CZW|8)+z>V((Kyn~KCD3tn!_QZU4F^D#AeH2UZSo$xc&As*?x95EYRQ(smt z3qXxP|dbe(z*H9QQL4rEa+mOX?xKA{uREwx}{jvvBqd8QXM(07?D+e5`<8BHC`mw6B?PEJ5Vg| zg0$C2xK|-Tzb0#Ix`uu6`f=x7 zMyrHk#b}C?8&yJVa%vly5t;q+be1?7d=4l}-5(MfPKS0px)Xo2WhQQ}I5CwXc3wTu zr$;Qzx>6K3%iCmI_V8`Th~jr!qRU2&&ElnHhJDXd8FKh*K@|i~RKn@p=ErgSF`fx$ z&(Nt>we|AHoG16DiHI=dvc3?uNpYcz*J=YWs_7lTuJF@ zlx(uT-Wkm^4jRDG%Fg;JI~c~muebT#V}?iqIk&W~&xZs+1P9JMjtojG8*KxNrRGQ6 z`<={z{O_0%qqErfYJ4K8$GpQEuY4OoF@HdAPk~Do=LfxtZ&I@(!@Yq$xIYAzpPebz zPS+%OL;?5{-{MPBj|-%3BFgs#QA@C{6r{ri-FO> zk-iX^0oeyK?ei+~l$%yyerBht0eh=<$#+M0H;K*#n@!&r95bR^F1J~>&B%oRdsim9 z&aYuuF%lHMnBxSa|3##?MXq!)=+P%F@M4%ZiiltvnoPrb0gO1D8oxSi?hEM%7)qpp zM1q{~e%u?Usx@~A$giSNi{3!-D*x>M%wQ?SPWQBhE6`+mhd+?wLRZ4TQb+i!_QF2% z#;4gQ4xVE@rRP*F=C{QPHnYF_o)Q$1wadi?e_)_^kdJtKLBLOB~#!H zlw~7iI#dzaCc|ls%b>%(R6D=ip()s#hV?L;;RcrgOZ3rk0sPKQL7ye)EV2ACOcUuEU^*#Pov0UxdrfOPez? z_n*DF~V-IoU&ER(X2W{0?AsxMe?-}l@ zfCpR{!_Sx>G{wk zH>bYL3d{!WUi{ zw>PBTy^vzwC}wj(rJDckqhGnFs}w-(+oiC`su>Bd;wpr^WNhAaaW6ao0>fpJ*_tIl zBhj=(ejof?C#C6V+uAHnA|8JK`6tuNkC9!IAgszq(!)P5^wD_saUh5WiOwWw&mRy! zp+VEYq|n6CVUJisD8`i0vKl~ry|!@pC&ViD0%J*JZv5S2$!lS!-1ySoG_*VBwMqN~ zpBaCMph0|O9sL+lZup&80;73-WOOP80US?LYv`X|rn#NMA1(3EaFa^T9`nYFN1NOq uHPwU-V*WAAymlq`e{B!4Go$VuScKL4m3CCLoYH=P04+6L)goofp#K93Z&4)x literal 4160 zcmaKvc{JNu*vF#_iqPp8weQtdYcE=B7;2BLsHL%sof5C`>Wb7bba4QCaauuv!ur0N{ITW@K;+4q1N6 z?c{2bL)cLFi`L8%d*T!94Z{3(Zqk>^$9Ce3lvf%bxz`F>MqAu7bSZqX_;8`Vb|qeEj6u68@sOy}iFleb6Wp{<_pxKKqFi_# zwPr%!-r;RYY#dQQId%BN*W6(`om=;Bu@{$*cGU7otg&LY92zl@Sc2#>;yD~Mq%f{4 zoW06SpC%A~Uk~1Ux}*?8^iz>nD|eci`Ct&seCEy^(w^b7mYWXmFp1t2`*PqUtDE2; zx2t6FVg{3djj}2YX7=I@i*&|lxmbmRyiD-$*nCd9>sUlglf6JjUt>%5Ut-IIQ6(bH z>y^kJCA2Jf?BPP$Ho1!tRUlTK*X>^yOHE_NuLN$l#hJ9U$qUr7k8P`;yN zpW@^bT5(e=>SuX2--U=BOidYX_c!xf4H{+T{eYHEKv zT^NirkamhHeNnel%;UaiiRVzVNUDT1YK3}DG+OdGkzQv>JajNa#OGRWy5($ov`iBM zFI0)B4aYd!$xu|)oMj3h2^WgiXCf^ zdX}{rqjPxM;GlD9!hvHqDe)yI5~FmmLb~i+8kAR73hv+xx5matUY73|p}JdL559B= zk^xZpy3ptH)iVKfMfvJb3&K)OsMA~QkQ72oFk62WMYI-X>-@2jTj#2><0b1Lhmz#TvLnrs)B?IcG|>;XI_T&6GXGX7i(B?*=x>xpPpC+{}o}PW8~>7UY{R`T?KCxgJYW zvSdY;j=-IPn=xI#;#B8!Xn~ieLBd(fvh$^N`x%UA&n6v8+<21s|(rJ+WE}`Fvx~RyvI(&3O;s+@cQ}tx&6vA zKl`Zl{cxkk5tei0<{XW2g;vux=jx+7PQx(s;^=;zR(Wc)zTPRy720x8sw29teKb|z zvY!a*h2hFW=+e`E=qIs|N9;Az4rbt*doYKd&xTDuI>r_FVo*GPWqPK(Xpv~QF*n7k zI4fE7ln>B=O~e5qvZ&Ikn1w~0iuk@87tY^rx8A=EL*?#zzr)CtRyJR>4R+BLs!+Ek z6p=f0#{M|CeQuEZ^H6wy348l3@jCsv^+f6D_s?bO2lCnhcdBmQe<0v~Yl}!+FJB6j8UFP|uvV5ZN^luPY|>7o$j&?p_z28eA1L$KxAxU42+D(qFv zd4VF?vM`uVDYil#p!3^gBxBuGOU~8*uh?9LAb!cGn~S!J4eB3<5{iN^bya731$IK@ zHW=&S2oNv-xOkRWx(%1Qz*9Zj_Zqm()-&@+Xx17|BnOMLq1!E{Fx&Y`3<-jU&-X`Ie%K;fX7XG~^ShRRzq!|5 z-K0H0;mzOBPt9rZ-7Gw&G8@+A z_172p6eDAekY3M+XOehM zeGsw?XfLdLVktK%jbj}^c35lgTyNV1n6`H6%Zdc2VA9wI9K6C?ZFNqT=#r-|8hd;M ziW2lkQei0_H5oyWFeg~F``?zg+Mw{gXKug=ce?pc zP1Rp0bYtm!`+?Y=c$)B1LGzy55P!1^K{@YBrb*+A*@(W4ym9n}Y1uc=v^IIQ{M>?) zoyGpdPGFLr+on;JFP+_i_RSl$AZM;^LKlnY>|-$dUQ2NA`?YNQ+>p!4SK~GR#Vx-# z8W|d_H5r&(FuPJPyX8+fy^!S&YfC6z=vkOP;580f!oaHahT?5q+Ou4~v~31BeueNUClXwhvzDE%1b?Yq9v3Eq+cmdzbnpM+;`}8$QW6 ztLacG>pNe-`ZTx}{&*BL2D8JDgm#ay>rp$RG0E`XOCOlLMH7*lN`I#H!)L$W)~^P> z&U-@yEgpr@^SniL&-5`!=KG@!A72S+tXW<+zqNZY>Rx5NX#~dQ@fQYdL88M7lO2*H z@|2gJ5W%VtKAkFBWPWNwuz+$R%q<9jIjqc@*(PESD+Ce~g@6ZvqC&biXDeI8O(EHJ zV~Xe`ZF#hwoY#gz!R}g`x z@fW_dsMel#w*z|JT_K*$`6mu~s>XOZ$o5@?zEnJleP)4`?5d-Y-4Vx%$}sreE&MOj z3V7(EVdJGhL2E0V8_($}HsVA;<`xsH1t1^t10ohT5ND7;<$l%{sKl#J*{DcEO$8-BR@=j$)cKbrbub-fon3Rv2i!Bws;C&k{_MkG%j zpXNhj!W13TwFK+{?y{)Q7UO;O#gJ${E%+{L4XIMn=ldsLs5o2swr9-10&6XyzXd`* z^lKt3yjas|JF<+DUWNAe-AzYGg}25okG@toA;W6RI=!)R#qgHMvQb)THb%w)eRO2um`r=@C^CfwQm)CQgr7{h7O z4~~R>9}igk`77@v$c_D@rLSQ)D=0Mnb!A9SCcx+_r6SUL3L-j!%)o*M{&v9tK$m2U&is2UkA9uS+>1=(;X z=ch26Sn&XXG0X^}eyjI>JIAHOp_(T%!JTKwmE^%MI@HZs#xadU_#3y{+2P+-*v!kK zXg=fCUmJ_bTPLR25}$~y0vXJhkqygZ9hZrQ#HK+rz(@q{GKEcS;KkXG0;Y!$ zt4Y6a*B^@Ge2fHMa8P+L8}miQDoBPt2fhDu*>Xf%$f*MaM?+D{&&Eg1>>Z}vmofic zV{8xs6oFn7%tDN@s)4eLrX(8s(4q`dB{s3q(m2s?z4lXl4 zTx5vnn@_MM`pi!Vkwkr%Zt>6sGH(yD795ruLQz-Md1wmwzs9m$4E`HV>DX`7j4hR* zsxS{QYINFeqLiy(_l4)h0@epD<0l{7k`@pP``~?D-<6Y5I+J}cvchI4Kj@6*;H)u% zGQ=e-&ZQD?YT)N=#do<@*$lZZSN!$=bPG;q5()G}s^SA_ct%s<(E}e~W(+o}H}tsw EKba>~(f|Me 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 0000000000000000000000000000000000000000..33f683bf881c85ca990296e4b3311e4e0d372577 GIT binary patch literal 427 zcmV;c0aX5pP)N2bZe?^J zG%heMGBNQWX_Wu~0VqjCK~y+Tosv&W0#OvjXWeHo+w@N&Tvg^mD8wSrnm{m@N?;(k zYtgQdnCc6(YRZ)#qVIO?9On!(?~M=+9PZ40_x#>{_f24CIqjD>407|Up zQQ!6yxKEK;#gl%GI{Ch_w@HigAX&3(l%9qSJC3gjm`B|_#5Eqgwiv7LS3Cv;z~0L_ zJMjQTJ65Jm8Z`@iWB1e9Ej#f5SqO^Jg?1O@?(#6*-2>EqLMC^g&j>-W1oK0u#E2Tj z#J&Xlehzp(yl2gjOzI@MUw;274?ydPf*?XiUmc65ZJNg6raktyQV4F3S11UMq9MTq zX`nE{>_XE2Kqk!tK)}?M3-JKiP6R_t%v=`)0>lGoCK40LqZ*hbdbF^v3X}hr1q%l+ V`4V<~Gadi{002ovPDHLkV1hS)tJ44g literal 0 HcmV?d00001 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 6013ea3582c2125da6bd46a68d22aaace297d1b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DkxL735kHCP2GC{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPIMM=Lb~t($mE; z#KM2>BwH>fLxI-q-+2C+aG8BeN?d8iCDs(B)zq|M?$K*v+HnWYU30G3{zCfuQ5E6v z!iR!JGv9lAm>C|c$h@x2#`${wBCdw>x2Jiu?Oo<2RA)Hj?8{BsmP?tXRSO>qq--j^ z&z1M{%=9UZ5zZP6Ygh~?7`%V9dO=RPm)PRI)~OHbA}fVVj2p@)uj+a6FycWzqpDty zz$4F3XS4tH= Date: Sun, 4 Mar 2018 12:05:27 -0500 Subject: [PATCH 10/13] Added dispenser behaviors and furnace fuel amounts for BOP boats --- .../common/entities/item/EntityBOPBoat.java | 2 +- .../dispenser/DispenserBehaviorBOPBoat.java | 60 +++++++++++++++++++ .../common/init/ModCrafting.java | 17 ++++++ .../common/init/ModVanillaCompat.java | 24 +++++++- 4 files changed, 99 insertions(+), 4 deletions(-) create mode 100644 src/main/java/biomesoplenty/common/entities/projectiles/dispenser/DispenserBehaviorBOPBoat.java diff --git a/src/main/java/biomesoplenty/common/entities/item/EntityBOPBoat.java b/src/main/java/biomesoplenty/common/entities/item/EntityBOPBoat.java index b26f69847..d241bfdea 100644 --- a/src/main/java/biomesoplenty/common/entities/item/EntityBOPBoat.java +++ b/src/main/java/biomesoplenty/common/entities/item/EntityBOPBoat.java @@ -186,7 +186,7 @@ public class EntityBOPBoat extends EntityBoat @Override public void applyEntityCollision(Entity entityIn) { - if (entityIn instanceof EntityBOPBoat) + if (entityIn instanceof EntityBoat) { if (entityIn.getEntityBoundingBox().minY < this.getEntityBoundingBox().maxY) { 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 d551e08f6..d635ace18 100644 --- a/src/main/java/biomesoplenty/common/init/ModCrafting.java +++ b/src/main/java/biomesoplenty/common/init/ModCrafting.java @@ -78,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/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() From af223c39a3c7e194b3b375e2e3949433fdb2d7a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E9=A3=8E?= <1015042261@qq.com> Date: Mon, 5 Mar 2018 12:51:44 +0800 Subject: [PATCH 11/13] Update zh_CN.lang --- .../assets/biomesoplenty/lang/zh_CN.lang | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/resources/assets/biomesoplenty/lang/zh_CN.lang b/src/main/resources/assets/biomesoplenty/lang/zh_CN.lang index 1ccbfd582..0684fcfcf 100644 --- a/src/main/resources/assets/biomesoplenty/lang/zh_CN.lang +++ b/src/main/resources/assets/biomesoplenty/lang/zh_CN.lang @@ -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=船 From 25127ca360fdb0d2bbe5d2e515cdf2d253d7b8cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E9=A3=8E?= <1015042261@qq.com> Date: Mon, 5 Mar 2018 13:02:06 +0800 Subject: [PATCH 12/13] Update zh_CN.lang --- src/main/resources/assets/biomesoplenty/lang/zh_CN.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/biomesoplenty/lang/zh_CN.lang b/src/main/resources/assets/biomesoplenty/lang/zh_CN.lang index 0684fcfcf..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设置 From f1024b344515a82a04e70a540b25e6a02420dd94 Mon Sep 17 00:00:00 2001 From: "Li-Hao Liao (Leon Liao)" Date: Mon, 5 Mar 2018 18:22:21 +0800 Subject: [PATCH 13/13] Update zh_TW.lang --- .../assets/biomesoplenty/lang/zh_TW.lang | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/resources/assets/biomesoplenty/lang/zh_TW.lang b/src/main/resources/assets/biomesoplenty/lang/zh_TW.lang index 9d2dd0c72..7f8f4d010 100644 --- a/src/main/resources/assets/biomesoplenty/lang/zh_TW.lang +++ b/src/main/resources/assets/biomesoplenty/lang/zh_TW.lang @@ -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=星晶碎片 @@ -97,7 +113,7 @@ item.mahogany_door.name=桃花心木門 item.mangrove_door.name=紅樹林木門 item.mudball.name=泥巴球 item.mud_brick.name=泥磚 -item.palm_door.name=棕梠門 +item.palm_door.name=棕櫚門 item.persimmon.name=柿子 item.peach.name=桃子 item.pear.name=梨子 @@ -424,3 +440,4 @@ tile.crystal.name=星晶 entity.mudball.name=泥巴球 entity.pixie.name=小精靈 entity.wasp.name=大黃蜂 +entity.bop_boat.name=船 \ No newline at end of file