From a29635c224910b1b148d15f7d8b6b866cd3c91a1 Mon Sep 17 00:00:00 2001 From: DancingSnow <1121149616@qq.com> Date: Fri, 19 Apr 2024 00:32:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9loot=20table?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dubhe/anvilcraft/block/CrabTrapBlock.java | 1 + .../generator/loot/CrabTrapLootLoader.java | 53 +++++++++---------- .../dev/dubhe/anvilcraft/init/ModBlocks.java | 4 +- .../gameplay/crab_trap/jungle.json | 25 +++++++-- .../loot_tables/gameplay/crab_trap/ocean.json | 43 +++++++++++++-- .../loot_tables/gameplay/crab_trap/river.json | 19 +++++-- .../loot_tables/gameplay/crab_trap/swamp.json | 19 +++++-- .../gameplay/crab_trap/warm_ocean.json | 25 +++++++-- .../data/anvilcraft/recipes/crab_trap.json | 4 +- .../gameplay/crab_trap/jungle.json | 25 +++++++-- .../loot_tables/gameplay/crab_trap/ocean.json | 43 +++++++++++++-- .../loot_tables/gameplay/crab_trap/river.json | 19 +++++-- .../loot_tables/gameplay/crab_trap/swamp.json | 19 +++++-- .../gameplay/crab_trap/warm_ocean.json | 25 +++++++-- .../data/anvilcraft/recipes/crab_trap.json | 4 +- 15 files changed, 254 insertions(+), 74 deletions(-) diff --git a/common/src/main/java/dev/dubhe/anvilcraft/block/CrabTrapBlock.java b/common/src/main/java/dev/dubhe/anvilcraft/block/CrabTrapBlock.java index 42b304772..f762c9e06 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/block/CrabTrapBlock.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/block/CrabTrapBlock.java @@ -165,6 +165,7 @@ private void tryInsertLoot(BlockState state, ServerLevel level, BlockPos pos, Re if (items.isEmpty()) return; CrabTrapBlockEntity blockEntity = (CrabTrapBlockEntity) level.getBlockEntity(pos); for (ItemStack item : items) { + System.out.println(item); ItemDepositoryHelper.insertItem(blockEntity.getDepository(), item, false); } } diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/generator/loot/CrabTrapLootLoader.java b/common/src/main/java/dev/dubhe/anvilcraft/data/generator/loot/CrabTrapLootLoader.java index ebc2556e7..e5cfa3e16 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/data/generator/loot/CrabTrapLootLoader.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/generator/loot/CrabTrapLootLoader.java @@ -16,34 +16,31 @@ import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; public class CrabTrapLootLoader { - private static final LootItemCondition.Builder IN_RIVER = LocationCheck.checkLocation( - LocationPredicate.Builder.location().setBiome(Biomes.RIVER).setBiome(Biomes.FROZEN_RIVER)); - private static final LootItemCondition.Builder IN_OCEAN = LocationCheck.checkLocation( - LocationPredicate.Builder.location() - .setBiome(Biomes.OCEAN) - .setBiome(Biomes.DEEP_OCEAN) - .setBiome(Biomes.COLD_OCEAN) - .setBiome(Biomes.DEEP_COLD_OCEAN) - .setBiome(Biomes.FROZEN_OCEAN) - .setBiome(Biomes.DEEP_FROZEN_OCEAN) - ); - private static final LootItemCondition.Builder IN_WARM_OCEAN = LocationCheck.checkLocation( - LocationPredicate.Builder.location() - .setBiome(Biomes.WARM_OCEAN) - .setBiome(Biomes.LUKEWARM_OCEAN) - .setBiome(Biomes.DEEP_LUKEWARM_OCEAN) - ); - private static final LootItemCondition.Builder IN_SWAMP = LocationCheck.checkLocation( - LocationPredicate.Builder.location() - .setBiome(Biomes.SWAMP) - .setBiome(Biomes.MANGROVE_SWAMP) - ); - private static final LootItemCondition.Builder IN_JUNGLE = LocationCheck.checkLocation( - LocationPredicate.Builder.location() - .setBiome(Biomes.JUNGLE) - .setBiome(Biomes.BAMBOO_JUNGLE) - .setBiome(Biomes.SPARSE_JUNGLE) - ); + private static final LootItemCondition.Builder IN_RIVER = + LocationCheck.checkLocation(LocationPredicate.Builder.location().setBiome(Biomes.RIVER)) + .or(LocationCheck.checkLocation(LocationPredicate.Builder.location().setBiome(Biomes.FROZEN_RIVER))); + + private static final LootItemCondition.Builder IN_OCEAN = + LocationCheck.checkLocation(LocationPredicate.Builder.location().setBiome(Biomes.OCEAN)) + .or(LocationCheck.checkLocation(LocationPredicate.Builder.location().setBiome(Biomes.COLD_OCEAN))) + .or(LocationCheck.checkLocation(LocationPredicate.Builder.location().setBiome(Biomes.DEEP_OCEAN))) + .or(LocationCheck.checkLocation(LocationPredicate.Builder.location().setBiome(Biomes.DEEP_COLD_OCEAN))) + .or(LocationCheck.checkLocation(LocationPredicate.Builder.location().setBiome(Biomes.FROZEN_OCEAN))) + .or(LocationCheck.checkLocation(LocationPredicate.Builder.location().setBiome(Biomes.DEEP_FROZEN_OCEAN))); + + private static final LootItemCondition.Builder IN_WARM_OCEAN = + LocationCheck.checkLocation(LocationPredicate.Builder.location().setBiome(Biomes.WARM_OCEAN)) + .or(LocationCheck.checkLocation(LocationPredicate.Builder.location().setBiome(Biomes.LUKEWARM_OCEAN))) + .or(LocationCheck.checkLocation(LocationPredicate.Builder.location().setBiome(Biomes.DEEP_LUKEWARM_OCEAN))); + + private static final LootItemCondition.Builder IN_SWAMP = + LocationCheck.checkLocation(LocationPredicate.Builder.location().setBiome(Biomes.SWAMP)) + .or(LocationCheck.checkLocation(LocationPredicate.Builder.location().setBiome(Biomes.MANGROVE_SWAMP))); + + private static final LootItemCondition.Builder IN_JUNGLE = + LocationCheck.checkLocation(LocationPredicate.Builder.location().setBiome(Biomes.JUNGLE)) + .or(LocationCheck.checkLocation(LocationPredicate.Builder.location().setBiome(Biomes.BAMBOO_JUNGLE))) + .or(LocationCheck.checkLocation(LocationPredicate.Builder.location().setBiome(Biomes.SPARSE_JUNGLE))); private static final LootTable.Builder COMMON = LootTable.lootTable().withPool( LootPool.lootPool().setRolls(ConstantValue.exactly(1.0f)) diff --git a/common/src/main/java/dev/dubhe/anvilcraft/init/ModBlocks.java b/common/src/main/java/dev/dubhe/anvilcraft/init/ModBlocks.java index 82ee29521..8e956d517 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/init/ModBlocks.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/init/ModBlocks.java @@ -450,8 +450,8 @@ public class ModBlocks { .pattern("ABA") .pattern("B B") .pattern("ABA") - .define('A', Items.STRING) - .define('B', Items.STICK) + .define('A', Items.STICK) + .define('B', Items.STRING) .unlockedBy("hasitem", RegistrateRecipeProvider.has(Items.STRING)) .save(provider)) .register(); diff --git a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/jungle.json b/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/jungle.json index 4f50a070d..bdea56ff0 100644 --- a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/jungle.json +++ b/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/jungle.json @@ -5,10 +5,27 @@ "bonus_rolls": 0.0, "conditions": [ { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:sparse_jungle" - } + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:jungle" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:bamboo_jungle" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:sparse_jungle" + } + } + ] }, { "chance": 0.05, diff --git a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/ocean.json b/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/ocean.json index 569aeaa3a..c9bbce5c2 100644 --- a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/ocean.json +++ b/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/ocean.json @@ -5,10 +5,45 @@ "bonus_rolls": 0.0, "conditions": [ { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:deep_frozen_ocean" - } + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:ocean" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:cold_ocean" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:deep_ocean" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:deep_cold_ocean" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:frozen_ocean" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:deep_frozen_ocean" + } + } + ] }, { "chance": 0.05, diff --git a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/river.json b/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/river.json index e58dc6a70..8a7e8bb10 100644 --- a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/river.json +++ b/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/river.json @@ -5,10 +5,21 @@ "bonus_rolls": 0.0, "conditions": [ { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:frozen_river" - } + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:river" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:frozen_river" + } + } + ] }, { "chance": 0.05, diff --git a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/swamp.json b/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/swamp.json index 16bf70202..0092464c9 100644 --- a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/swamp.json +++ b/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/swamp.json @@ -5,10 +5,21 @@ "bonus_rolls": 0.0, "conditions": [ { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:mangrove_swamp" - } + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:swamp" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:mangrove_swamp" + } + } + ] }, { "chance": 0.05, diff --git a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/warm_ocean.json b/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/warm_ocean.json index 1ed4b8102..f94b3460a 100644 --- a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/warm_ocean.json +++ b/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/warm_ocean.json @@ -5,10 +5,27 @@ "bonus_rolls": 0.0, "conditions": [ { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:deep_lukewarm_ocean" - } + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:warm_ocean" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:lukewarm_ocean" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:deep_lukewarm_ocean" + } + } + ] }, { "chance": 0.05, diff --git a/fabric/src/generated/resources/data/anvilcraft/recipes/crab_trap.json b/fabric/src/generated/resources/data/anvilcraft/recipes/crab_trap.json index 94ea9ccb0..f331b00e5 100644 --- a/fabric/src/generated/resources/data/anvilcraft/recipes/crab_trap.json +++ b/fabric/src/generated/resources/data/anvilcraft/recipes/crab_trap.json @@ -3,10 +3,10 @@ "category": "misc", "key": { "A": { - "item": "minecraft:string" + "item": "minecraft:stick" }, "B": { - "item": "minecraft:stick" + "item": "minecraft:string" } }, "pattern": [ diff --git a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/jungle.json b/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/jungle.json index 4f50a070d..bdea56ff0 100644 --- a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/jungle.json +++ b/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/jungle.json @@ -5,10 +5,27 @@ "bonus_rolls": 0.0, "conditions": [ { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:sparse_jungle" - } + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:jungle" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:bamboo_jungle" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:sparse_jungle" + } + } + ] }, { "chance": 0.05, diff --git a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/ocean.json b/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/ocean.json index 569aeaa3a..c9bbce5c2 100644 --- a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/ocean.json +++ b/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/ocean.json @@ -5,10 +5,45 @@ "bonus_rolls": 0.0, "conditions": [ { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:deep_frozen_ocean" - } + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:ocean" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:cold_ocean" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:deep_ocean" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:deep_cold_ocean" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:frozen_ocean" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:deep_frozen_ocean" + } + } + ] }, { "chance": 0.05, diff --git a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/river.json b/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/river.json index e58dc6a70..8a7e8bb10 100644 --- a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/river.json +++ b/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/river.json @@ -5,10 +5,21 @@ "bonus_rolls": 0.0, "conditions": [ { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:frozen_river" - } + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:river" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:frozen_river" + } + } + ] }, { "chance": 0.05, diff --git a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/swamp.json b/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/swamp.json index 16bf70202..0092464c9 100644 --- a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/swamp.json +++ b/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/swamp.json @@ -5,10 +5,21 @@ "bonus_rolls": 0.0, "conditions": [ { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:mangrove_swamp" - } + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:swamp" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:mangrove_swamp" + } + } + ] }, { "chance": 0.05, diff --git a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/warm_ocean.json b/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/warm_ocean.json index 1ed4b8102..f94b3460a 100644 --- a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/warm_ocean.json +++ b/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/warm_ocean.json @@ -5,10 +5,27 @@ "bonus_rolls": 0.0, "conditions": [ { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:deep_lukewarm_ocean" - } + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:warm_ocean" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:lukewarm_ocean" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "biome": "minecraft:deep_lukewarm_ocean" + } + } + ] }, { "chance": 0.05, diff --git a/forge/src/generated/resources/data/anvilcraft/recipes/crab_trap.json b/forge/src/generated/resources/data/anvilcraft/recipes/crab_trap.json index 94ea9ccb0..f331b00e5 100644 --- a/forge/src/generated/resources/data/anvilcraft/recipes/crab_trap.json +++ b/forge/src/generated/resources/data/anvilcraft/recipes/crab_trap.json @@ -3,10 +3,10 @@ "category": "misc", "key": { "A": { - "item": "minecraft:string" + "item": "minecraft:stick" }, "B": { - "item": "minecraft:stick" + "item": "minecraft:string" } }, "pattern": [