diff --git a/src/main/java/ru/betterend/util/LootTableUtil.java b/src/main/java/ru/betterend/util/LootTableUtil.java index 87ccce1b..8f314f52 100644 --- a/src/main/java/ru/betterend/util/LootTableUtil.java +++ b/src/main/java/ru/betterend/util/LootTableUtil.java @@ -5,18 +5,28 @@ import net.fabricmc.fabric.api.loot.v1.FabricLootSupplierBuilder; import net.fabricmc.fabric.api.loot.v1.event.LootTableLoadingCallback; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Items; +import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.storage.loot.entries.LootItem; import net.minecraft.world.level.storage.loot.predicates.LootItemRandomChanceCondition; import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; +import ru.bclib.api.biomes.BiomeAPI; +import ru.bclib.complexmaterials.WoodenComplexMaterial; +import ru.bclib.world.biomes.BCLBiome; import ru.betterend.BetterEnd; +import ru.betterend.registry.EndBiomes; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndItems; public class LootTableUtil { private static final ResourceLocation END_CITY_TREASURE_ID = new ResourceLocation("chests/end_city_treasure"); - public static final ResourceLocation COMMON = BetterEnd.makeID("chests/common"); + private static final ResourceLocation COMMON = BetterEnd.makeID("chests/common"); + private static final ResourceLocation FOGGY_MUSHROOMLAND = BetterEnd.makeID("chests/foggy_mushroomland"); + private static final ResourceLocation CHORUS_FOREST = BetterEnd.makeID("chests/chorus_forest"); + private static final ResourceLocation SHADOW_FOREST = BetterEnd.makeID("chests/shadow_forest"); + private static final ResourceLocation LANTERN_WOODS = BetterEnd.makeID("chests/lantern_woods"); + private static final ResourceLocation UMBRELLA_JUNGLE = BetterEnd.makeID("chests/umbrella_jungle"); public static void init() { LootTableLoadingCallback.EVENT.register((resourceManager, lootManager, id, table, setter) -> { @@ -35,13 +45,73 @@ public class LootTableUtil { builder.withEntry(LootItem.lootTableItem(EndItems.MUSIC_DISC_EO_DRACONA).build()); table.withPool(builder); } - - else if (COMMON.equals(id)) { + else if (id.getNamespace().equals(BetterEnd.MOD_ID)) { addCommonItems(table); + if (FOGGY_MUSHROOMLAND.equals(id)) { + FabricLootPoolBuilder builder = FabricLootPoolBuilder.builder(); + builder.setRolls(UniformGenerator.between(4, 8)); + builder.withEntry(LootItem.lootTableItem(EndBlocks.MOSSY_GLOWSHROOM.getBlock(WoodenComplexMaterial.BLOCK_PLANKS)).build()); + builder.withEntry(LootItem.lootTableItem(EndBlocks.MOSSY_GLOWSHROOM_SAPLING).build()); + builder.withEntry(LootItem.lootTableItem(EndBlocks.BLUE_VINE_SEED).build()); + table.withPool(builder); + } + else if (CHORUS_FOREST.equals(id)) { + FabricLootPoolBuilder builder = FabricLootPoolBuilder.builder(); + builder.setRolls(UniformGenerator.between(4, 8)); + builder.withEntry(LootItem.lootTableItem(EndBlocks.PYTHADENDRON.getBlock(WoodenComplexMaterial.BLOCK_PLANKS)).build()); + builder.withEntry(LootItem.lootTableItem(EndBlocks.PYTHADENDRON_SAPLING).build()); + builder.withEntry(LootItem.lootTableItem(EndBlocks.CHORUS_MUSHROOM).build()); + table.withPool(builder); + } + else if (SHADOW_FOREST.equals(id)) { + FabricLootPoolBuilder builder = FabricLootPoolBuilder.builder(); + builder.setRolls(UniformGenerator.between(4, 8)); + builder.withEntry(LootItem.lootTableItem(EndBlocks.DRAGON_TREE.getBlock(WoodenComplexMaterial.BLOCK_PLANKS)).build()); + builder.withEntry(LootItem.lootTableItem(EndBlocks.DRAGON_TREE_SAPLING).build()); + builder.withEntry(LootItem.lootTableItem(EndBlocks.SHADOW_BERRY).build()); + builder.withEntry(LootItem.lootTableItem(EndItems.SHADOW_BERRY_RAW).build()); + table.withPool(builder); + } + else if (LANTERN_WOODS.equals(id)) { + FabricLootPoolBuilder builder = FabricLootPoolBuilder.builder(); + builder.setRolls(UniformGenerator.between(4, 8)); + builder.withEntry(LootItem.lootTableItem(EndBlocks.LUCERNIA.getBlock(WoodenComplexMaterial.BLOCK_PLANKS)).build()); + builder.withEntry(LootItem.lootTableItem(EndBlocks.LUCERNIA_SAPLING).build()); + builder.withEntry(LootItem.lootTableItem(EndBlocks.BOLUX_MUSHROOM).build()); + table.withPool(builder); + } + else if (UMBRELLA_JUNGLE.equals(id)) { + FabricLootPoolBuilder builder = FabricLootPoolBuilder.builder(); + builder.setRolls(UniformGenerator.between(4, 8)); + builder.withEntry(LootItem.lootTableItem(EndBlocks.UMBRELLA_TREE.getBlock(WoodenComplexMaterial.BLOCK_PLANKS)).build()); + builder.withEntry(LootItem.lootTableItem(EndBlocks.UMBRELLA_TREE_SAPLING).build()); + builder.withEntry(LootItem.lootTableItem(EndBlocks.SMALL_JELLYSHROOM).build()); + table.withPool(builder); + } } }); } + public static ResourceLocation getTable(Biome biome) { + BCLBiome bclBiome = BiomeAPI.getBiome(biome); + if (bclBiome == EndBiomes.FOGGY_MUSHROOMLAND) { + return FOGGY_MUSHROOMLAND; + } + else if (bclBiome == EndBiomes.CHORUS_FOREST) { + return CHORUS_FOREST; + } + else if (bclBiome == EndBiomes.SHADOW_FOREST) { + return SHADOW_FOREST; + } + else if (bclBiome == EndBiomes.LANTERN_WOODS) { + return LANTERN_WOODS; + } + else if (bclBiome == EndBiomes.UMBRELLA_JUNGLE) { + return UMBRELLA_JUNGLE; + } + return COMMON; + } + private static void addCommonItems(FabricLootSupplierBuilder table) { FabricLootPoolBuilder builder = FabricLootPoolBuilder.builder(); builder.setRolls(UniformGenerator.between(0, 2)); @@ -74,6 +144,7 @@ public class LootTableUtil { builder = FabricLootPoolBuilder.builder(); builder.setRolls(UniformGenerator.between(0, 4)); + builder.withEntry(LootItem.lootTableItem(EndBlocks.FLAVOLITE_RUNED).build()); builder.withEntry(LootItem.lootTableItem(EndItems.AETERNIUM_INGOT).build()); builder.withEntry(LootItem.lootTableItem(EndItems.AMBER_GEM).build()); builder.withEntry(LootItem.lootTableItem(Items.END_CRYSTAL).build()); diff --git a/src/main/java/ru/betterend/world/features/BuildingListFeature.java b/src/main/java/ru/betterend/world/features/BuildingListFeature.java index 2c69829e..8490e4f5 100644 --- a/src/main/java/ru/betterend/world/features/BuildingListFeature.java +++ b/src/main/java/ru/betterend/world/features/BuildingListFeature.java @@ -2,6 +2,7 @@ package ru.betterend.world.features; import net.minecraft.core.BlockPos; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.ChestBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity; @@ -41,7 +42,12 @@ public class BuildingListFeature extends ListFeature { BlockEntity entity = chestBlock.newBlockEntity(chestPos, blockState); levelReader.getChunk(chestPos).setBlockEntity(entity); RandomizableContainerBlockEntity chestEntity = RandomizableContainerBlockEntity.class.cast(entity); - chestEntity.setLootTable(LootTableUtil.COMMON, random.nextLong()); + Biome biome = levelReader.getNoiseBiome( + chestPos.getX() >> 2, + chestPos.getY() >> 2, + chestPos.getZ() >> 2 + ); + chestEntity.setLootTable(LootTableUtil.getTable(biome), random.nextLong()); chestEntity.setChanged(); System.out.println("Set loot at " + chestPos); } diff --git a/src/main/resources/assets/betterend/textures/block/bulb_vine_seed_2.png b/src/main/resources/assets/betterend/textures/block/bulb_vine_seed_2.png index a156152c..0dc3c7cb 100644 Binary files a/src/main/resources/assets/betterend/textures/block/bulb_vine_seed_2.png and b/src/main/resources/assets/betterend/textures/block/bulb_vine_seed_2.png differ diff --git a/src/main/resources/assets/betterend/textures/block/end_lotus_leaf_center.png b/src/main/resources/assets/betterend/textures/block/end_lotus_leaf_center.png index 068f948e..46e03e0c 100644 Binary files a/src/main/resources/assets/betterend/textures/block/end_lotus_leaf_center.png and b/src/main/resources/assets/betterend/textures/block/end_lotus_leaf_center.png differ diff --git a/src/main/resources/assets/betterend/textures/block/end_lotus_leaf_corner.png b/src/main/resources/assets/betterend/textures/block/end_lotus_leaf_corner.png index 1925c953..d3b33e7d 100644 Binary files a/src/main/resources/assets/betterend/textures/block/end_lotus_leaf_corner.png and b/src/main/resources/assets/betterend/textures/block/end_lotus_leaf_corner.png differ diff --git a/src/main/resources/assets/betterend/textures/block/end_lotus_leaf_side.png b/src/main/resources/assets/betterend/textures/block/end_lotus_leaf_side.png index db583ca8..dd49f021 100644 Binary files a/src/main/resources/assets/betterend/textures/block/end_lotus_leaf_side.png and b/src/main/resources/assets/betterend/textures/block/end_lotus_leaf_side.png differ diff --git a/src/main/resources/assets/betterend/textures/block/jungle_grass.png b/src/main/resources/assets/betterend/textures/block/jungle_grass.png index 812bf74f..088cdaf9 100644 Binary files a/src/main/resources/assets/betterend/textures/block/jungle_grass.png and b/src/main/resources/assets/betterend/textures/block/jungle_grass.png differ diff --git a/src/main/resources/assets/betterend/textures/block/jungle_grass_2.png b/src/main/resources/assets/betterend/textures/block/jungle_grass_2.png index 4b3ded73..41591c65 100644 Binary files a/src/main/resources/assets/betterend/textures/block/jungle_grass_2.png and b/src/main/resources/assets/betterend/textures/block/jungle_grass_2.png differ diff --git a/src/main/resources/assets/betterend/textures/block/tenanea_flowers.png b/src/main/resources/assets/betterend/textures/block/tenanea_flowers.png index 9483f3c7..5280ebaa 100644 Binary files a/src/main/resources/assets/betterend/textures/block/tenanea_flowers.png and b/src/main/resources/assets/betterend/textures/block/tenanea_flowers.png differ diff --git a/src/main/resources/assets/betterend/textures/block/tenanea_flowers_bottom.png b/src/main/resources/assets/betterend/textures/block/tenanea_flowers_bottom.png index ee621cb7..76c3e0e6 100644 Binary files a/src/main/resources/assets/betterend/textures/block/tenanea_flowers_bottom.png and b/src/main/resources/assets/betterend/textures/block/tenanea_flowers_bottom.png differ diff --git a/src/main/resources/assets/betterend/textures/block/tenanea_flowers_stem.png b/src/main/resources/assets/betterend/textures/block/tenanea_flowers_stem.png index e4fa6b7f..511d81d2 100644 Binary files a/src/main/resources/assets/betterend/textures/block/tenanea_flowers_stem.png and b/src/main/resources/assets/betterend/textures/block/tenanea_flowers_stem.png differ diff --git a/src/main/resources/assets/betterend/textures/block/tenanea_flowers_stem_bottom.png b/src/main/resources/assets/betterend/textures/block/tenanea_flowers_stem_bottom.png index 91483dfc..82e3bcb8 100644 Binary files a/src/main/resources/assets/betterend/textures/block/tenanea_flowers_stem_bottom.png and b/src/main/resources/assets/betterend/textures/block/tenanea_flowers_stem_bottom.png differ diff --git a/src/main/resources/assets/betterend/textures/block/thallasium_trapdoor.png b/src/main/resources/assets/betterend/textures/block/thallasium_trapdoor.png index 4a298521..30d1aeaa 100644 Binary files a/src/main/resources/assets/betterend/textures/block/thallasium_trapdoor.png and b/src/main/resources/assets/betterend/textures/block/thallasium_trapdoor.png differ diff --git a/src/main/resources/assets/betterend/textures/block/twisted_umbrella_moss_end.png b/src/main/resources/assets/betterend/textures/block/twisted_umbrella_moss_end.png index 838f4102..06d1bbad 100644 Binary files a/src/main/resources/assets/betterend/textures/block/twisted_umbrella_moss_end.png and b/src/main/resources/assets/betterend/textures/block/twisted_umbrella_moss_end.png differ diff --git a/src/main/resources/data/betterend/loot_tables/chests/chorus_forest.json b/src/main/resources/data/betterend/loot_tables/chests/chorus_forest.json new file mode 100644 index 00000000..c135faf3 --- /dev/null +++ b/src/main/resources/data/betterend/loot_tables/chests/chorus_forest.json @@ -0,0 +1,4 @@ +{ + "type": "minecraft:chest", + "pools": [] +} diff --git a/src/main/resources/data/betterend/loot_tables/chests/foggy_mushroomland.json b/src/main/resources/data/betterend/loot_tables/chests/foggy_mushroomland.json new file mode 100644 index 00000000..c135faf3 --- /dev/null +++ b/src/main/resources/data/betterend/loot_tables/chests/foggy_mushroomland.json @@ -0,0 +1,4 @@ +{ + "type": "minecraft:chest", + "pools": [] +} diff --git a/src/main/resources/data/betterend/loot_tables/chests/lantern_woods.json b/src/main/resources/data/betterend/loot_tables/chests/lantern_woods.json new file mode 100644 index 00000000..c135faf3 --- /dev/null +++ b/src/main/resources/data/betterend/loot_tables/chests/lantern_woods.json @@ -0,0 +1,4 @@ +{ + "type": "minecraft:chest", + "pools": [] +} diff --git a/src/main/resources/data/betterend/loot_tables/chests/shadow_forest.json b/src/main/resources/data/betterend/loot_tables/chests/shadow_forest.json new file mode 100644 index 00000000..c135faf3 --- /dev/null +++ b/src/main/resources/data/betterend/loot_tables/chests/shadow_forest.json @@ -0,0 +1,4 @@ +{ + "type": "minecraft:chest", + "pools": [] +} diff --git a/src/main/resources/data/betterend/loot_tables/chests/umbrella_jungle.json b/src/main/resources/data/betterend/loot_tables/chests/umbrella_jungle.json new file mode 100644 index 00000000..c135faf3 --- /dev/null +++ b/src/main/resources/data/betterend/loot_tables/chests/umbrella_jungle.json @@ -0,0 +1,4 @@ +{ + "type": "minecraft:chest", + "pools": [] +}