From a57a240c134e5fc7294d4fdae3b283b5660598fd Mon Sep 17 00:00:00 2001 From: tterrag Date: Thu, 10 Dec 2020 21:33:49 -0500 Subject: [PATCH] Fix BlockStateProvider item models not knowing about block models Add tests for this case --- src/generated_test/resources/.cache/cache | 2 ++ .../assets/data_gen_test/models/block/test_block.json | 6 ++++++ .../assets/data_gen_test/models/item/test_block.json | 3 +++ .../client/model/generators/BlockStateProvider.java | 2 +- .../java/net/minecraftforge/debug/DataGeneratorTest.java | 9 +++++++-- 5 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 src/generated_test/resources/assets/data_gen_test/models/block/test_block.json create mode 100644 src/generated_test/resources/assets/data_gen_test/models/item/test_block.json diff --git a/src/generated_test/resources/.cache/cache b/src/generated_test/resources/.cache/cache index 6c41d230a..2daa3d770 100644 --- a/src/generated_test/resources/.cache/cache +++ b/src/generated_test/resources/.cache/cache @@ -41,10 +41,12 @@ c4d268471ee793597917c966d1aaed29e438d366 assets/data_gen_test/models/block/oak_t 2abb8b11c91441badd91b7c52f5f8ba3226c92de assets/data_gen_test/models/block/oak_trapdoor_open.json 560d419e3d542cb0509bca078988308d387c15a9 assets/data_gen_test/models/block/oak_trapdoor_top.json 556f0d997250661e0401fba13a4afd1bb0627dcc assets/data_gen_test/models/block/stone.json +556f0d997250661e0401fba13a4afd1bb0627dcc assets/data_gen_test/models/block/test_block.json db2cd929128c8a6e8e0b02437f90ad8d24238206 assets/data_gen_test/models/block/torch.json 81ce9ac0a7f4ed7a94d5496b918987a6f5a24988 assets/data_gen_test/models/block/wall_torch.json 6b40df2a47c13cd00e295244b6cf74462938359d assets/data_gen_test/models/item/fishing_rod.json 7fecdc30a209fca790df79b973c30b9e84415e0b assets/data_gen_test/models/item/fishing_rod_cast.json +098d8b38409fff6cc14a4e56355bedb1fc5931d1 assets/data_gen_test/models/item/test_block.json b029993275f16569b0edf093362f55df6ea6f9be assets/data_gen_test/models/item/test_block_model.json 726e1884e53151492ca05bd752c67031603570f6 assets/data_gen_test/models/item/test_generated_model.json 1767c874758bd7c3235db446b6219e6e1edd25b4 assets/minecraft/blockstates/acacia_door.json diff --git a/src/generated_test/resources/assets/data_gen_test/models/block/test_block.json b/src/generated_test/resources/assets/data_gen_test/models/block/test_block.json new file mode 100644 index 000000000..1a2f6a79a --- /dev/null +++ b/src/generated_test/resources/assets/data_gen_test/models/block/test_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "minecraft:block/stone" + } +} \ No newline at end of file diff --git a/src/generated_test/resources/assets/data_gen_test/models/item/test_block.json b/src/generated_test/resources/assets/data_gen_test/models/item/test_block.json new file mode 100644 index 000000000..a4fe67994 --- /dev/null +++ b/src/generated_test/resources/assets/data_gen_test/models/item/test_block.json @@ -0,0 +1,3 @@ +{ + "parent": "data_gen_test:block/test_block" +} \ No newline at end of file diff --git a/src/main/java/net/minecraftforge/client/model/generators/BlockStateProvider.java b/src/main/java/net/minecraftforge/client/model/generators/BlockStateProvider.java index 4cc75eaa1..e13ac9fe8 100644 --- a/src/main/java/net/minecraftforge/client/model/generators/BlockStateProvider.java +++ b/src/main/java/net/minecraftforge/client/model/generators/BlockStateProvider.java @@ -95,7 +95,7 @@ public abstract class BlockStateProvider implements IDataProvider { this.blockModels = new BlockModelProvider(gen, modid, exFileHelper) { @Override protected void registerModels() {} }; - this.itemModels = new ItemModelProvider(gen, modid, exFileHelper) { + this.itemModels = new ItemModelProvider(gen, modid, this.blockModels.existingFileHelper) { @Override protected void registerModels() {} }; } diff --git a/src/test/java/net/minecraftforge/debug/DataGeneratorTest.java b/src/test/java/net/minecraftforge/debug/DataGeneratorTest.java index bcc5ce7df..7cde31b0c 100644 --- a/src/test/java/net/minecraftforge/debug/DataGeneratorTest.java +++ b/src/test/java/net/minecraftforge/debug/DataGeneratorTest.java @@ -41,6 +41,7 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Multimap; import com.google.common.collect.ObjectArrays; +import com.google.common.collect.Sets; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; @@ -438,7 +439,7 @@ public class DataGeneratorTest ModelFile barrel = models().cubeBottomTop("barrel", mcLoc("block/barrel_side"), mcLoc("block/barrel_bottom"), mcLoc("block/barrel_top")); ModelFile barrelOpen = models().cubeBottomTop("barrel_open", mcLoc("block/barrel_side"), mcLoc("block/barrel_bottom"), mcLoc("block/barrel_top_open")); directionalBlock(Blocks.BARREL, state -> state.get(BarrelBlock.PROPERTY_OPEN) ? barrelOpen : barrel); // Testing custom state interpreter - + logBlock((RotatedPillarBlock) Blocks.ACACIA_LOG); stairsBlock((StairsBlock) Blocks.ACACIA_STAIRS, "acacia", mcLoc("block/acacia_planks")); @@ -457,6 +458,9 @@ public class DataGeneratorTest simpleBlock(Blocks.TORCH, models().torch("torch", mcLoc("block/torch"))); horizontalBlock(Blocks.WALL_TORCH, models().torchWall("wall_torch", mcLoc("block/torch")), 90); + + models().cubeAll("test_block", mcLoc("block/stone")); + itemModels().withExistingParent("test_block", modLoc("block/test_block")); } // Testing the outputs @@ -465,6 +469,7 @@ public class DataGeneratorTest // Vanilla doesn't generate these models yet, so they have minor discrepancies that are hard to test // This list should probably be cleared and investigated after each major version update private static final Set IGNORED_MODELS = ImmutableSet.of(new ResourceLocation(MODID, "block/cube")); + private static final Set CUSTOM_MODELS = ImmutableSet.of(new ResourceLocation(MODID, "block/test_block")); private List errors = new ArrayList<>(); @@ -472,7 +477,7 @@ public class DataGeneratorTest public void act(DirectoryCache cache) throws IOException { super.act(cache); - this.errors.addAll(testModelResults(models().generatedModels, models().existingFileHelper, IGNORED_MODELS)); + this.errors.addAll(testModelResults(models().generatedModels, models().existingFileHelper, Sets.union(IGNORED_MODELS, CUSTOM_MODELS))); this.registeredBlocks.forEach((block, state) -> { if (IGNORED_BLOCKS.contains(block)) return; JsonObject generated = state.toJson();