From 33d7f023232eef93314b4377ea32eb26eaa52061 Mon Sep 17 00:00:00 2001 From: shartte Date: Wed, 19 Aug 2020 16:43:47 +0200 Subject: [PATCH] Fixes #4590: Crystal seeds (other than certus) don't display their growth stages. (#4619) --- .../appeng/core/api/definitions/ApiItems.java | 16 +++------- .../items/misc/CrystalSeedRendering.java | 29 +++++++++++++++++++ 2 files changed, 33 insertions(+), 12 deletions(-) create mode 100644 src/main/java/appeng/items/misc/CrystalSeedRendering.java diff --git a/src/main/java/appeng/core/api/definitions/ApiItems.java b/src/main/java/appeng/core/api/definitions/ApiItems.java index 3ee08e5c1..e28d72876 100644 --- a/src/main/java/appeng/core/api/definitions/ApiItems.java +++ b/src/main/java/appeng/core/api/definitions/ApiItems.java @@ -56,6 +56,7 @@ import appeng.hooks.BlockToolDispenseItemBehavior; import appeng.hooks.MatterCannonDispenseItemBehavior; import appeng.items.materials.MaterialType; import appeng.items.misc.CrystalSeedItem; +import appeng.items.misc.CrystalSeedRendering; import appeng.items.misc.EncodedPatternItem; import appeng.items.misc.PaintBallItem; import appeng.items.misc.PaintBallItemRendering; @@ -299,24 +300,15 @@ public final class ApiItems implements IItems { this.certusCrystalSeed = registry .item("certus_crystal_seed", props -> new CrystalSeedItem(props, materials.purifiedCertusQuartzCrystal().item())) - .bootstrap(item -> new IClientSetupComponent() { - @Override - @OnlyIn(Dist.CLIENT) - public void setup() { - // Expose the growth of the seed to the model system - ItemModelsProperties.func_239418_a_(item, new ResourceLocation("appliedenergistics2:growth"), - (is, w, p) -> CrystalSeedItem.getGrowthTicks(is) - / (float) CrystalSeedItem.GROWTH_TICKS_REQUIRED); - } - }).features(AEFeature.CRYSTAL_SEEDS).build(); + .bootstrap(CrystalSeedRendering::new).features(AEFeature.CRYSTAL_SEEDS).build(); this.fluixCrystalSeed = registry .item("fluix_crystal_seed", props -> new CrystalSeedItem(props, materials.purifiedFluixCrystal().item())) - .features(AEFeature.CRYSTAL_SEEDS).build(); + .bootstrap(CrystalSeedRendering::new).features(AEFeature.CRYSTAL_SEEDS).build(); this.netherQuartzSeed = registry .item("nether_quartz_seed", props -> new CrystalSeedItem(props, materials.purifiedNetherQuartzCrystal().item())) - .features(AEFeature.CRYSTAL_SEEDS).build(); + .bootstrap(CrystalSeedRendering::new).features(AEFeature.CRYSTAL_SEEDS).build(); GrowingCrystalEntity.TYPE = registry .entity("growing_crystal", GrowingCrystalEntity::new, EntityClassification.MISC) diff --git a/src/main/java/appeng/items/misc/CrystalSeedRendering.java b/src/main/java/appeng/items/misc/CrystalSeedRendering.java new file mode 100644 index 000000000..d053ee802 --- /dev/null +++ b/src/main/java/appeng/items/misc/CrystalSeedRendering.java @@ -0,0 +1,29 @@ +package appeng.items.misc; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemModelsProperties; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import appeng.bootstrap.components.IClientSetupComponent; + +/** + * Exposes a predicate "growth", which is used in the item model to + * differentiate the growth stages. + */ +public class CrystalSeedRendering implements IClientSetupComponent { + private final Item item; + + public CrystalSeedRendering(Item item) { + this.item = item; + } + + @Override + @OnlyIn(Dist.CLIENT) + public void setup() { + // Expose the growth of the seed to the model system + ItemModelsProperties.func_239418_a_(item, new ResourceLocation("appliedenergistics2:growth"), + (is, w, p) -> CrystalSeedItem.getGrowthTicks(is) / (float) CrystalSeedItem.GROWTH_TICKS_REQUIRED); + } +}