From 8491f46b8ee9ef2eff8eb9bfe1871e0e20a41618 Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Thu, 11 Jan 2024 13:05:51 +0100 Subject: Making SheetsMixin more extensible --- .../lv/enes/mc/eris_alchemy/ErisAlchemyRegistry.java | 16 ++++++++++++++++ .../block/entity/AlchemicalChestEntity.java | 10 +++++++--- .../eris_alchemy/block/entity/ChestLikeEntity.java | 12 ++++++++++-- .../block/entity/EnergyCondenserEntity.java | 10 +++++++--- .../mc/eris_alchemy/client/ErisAlchemyMaterials.java | 20 -------------------- .../mc/eris_alchemy/mixin/client/SheetsMixin.java | 10 +++------- 6 files changed, 43 insertions(+), 35 deletions(-) delete mode 100644 src/main/java/lv/enes/mc/eris_alchemy/client/ErisAlchemyMaterials.java diff --git a/src/main/java/lv/enes/mc/eris_alchemy/ErisAlchemyRegistry.java b/src/main/java/lv/enes/mc/eris_alchemy/ErisAlchemyRegistry.java index 592eb5e..893e60d 100644 --- a/src/main/java/lv/enes/mc/eris_alchemy/ErisAlchemyRegistry.java +++ b/src/main/java/lv/enes/mc/eris_alchemy/ErisAlchemyRegistry.java @@ -8,6 +8,8 @@ import lv.enes.mc.eris_alchemy.menu.AlchemicalChestMenu; import lv.enes.mc.eris_alchemy.menu.EnergyCondenserMenu; import lv.enes.mc.eris_alchemy.recipe.CovalenceRepair; import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerType; +import net.minecraft.client.renderer.Sheets; +import net.minecraft.client.resources.model.Material; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.flag.FeatureFlags; @@ -123,6 +125,20 @@ public final class ErisAlchemyRegistry { } } + public static final class Materials { + private Materials() {} + + public static final Material ALCHEMICAL_CHEST = new Material( + Sheets.CHEST_SHEET, + new ResourceLocation(ErisAlchemy.ID, "entity/chest/alchemical_chest") + ); + + public static final Material ENERGY_CONDENSER = new Material( + Sheets.CHEST_SHEET, + new ResourceLocation(ErisAlchemy.ID, "entity/chest/energy_condenser") + ); + } + public static final class Menus { private Menus() {} diff --git a/src/main/java/lv/enes/mc/eris_alchemy/block/entity/AlchemicalChestEntity.java b/src/main/java/lv/enes/mc/eris_alchemy/block/entity/AlchemicalChestEntity.java index 38ed902..659e4b1 100644 --- a/src/main/java/lv/enes/mc/eris_alchemy/block/entity/AlchemicalChestEntity.java +++ b/src/main/java/lv/enes/mc/eris_alchemy/block/entity/AlchemicalChestEntity.java @@ -1,7 +1,9 @@ package lv.enes.mc.eris_alchemy.block.entity; import jakarta.annotation.Nonnull; -import lv.enes.mc.eris_alchemy.ErisAlchemyRegistry; +import lv.enes.mc.eris_alchemy.ErisAlchemyRegistry.BlockEntities; +import lv.enes.mc.eris_alchemy.ErisAlchemyRegistry.Blocks; +import lv.enes.mc.eris_alchemy.ErisAlchemyRegistry.Materials; import lv.enes.mc.eris_alchemy.menu.AlchemicalChestMenu; import lv.enes.mc.eris_alchemy.menu.ChestLikeMenu; import net.minecraft.core.BlockPos; @@ -18,7 +20,7 @@ public class AlchemicalChestEntity extends ChestLikeEntity { private final NonNullList items = NonNullList.withSize(WIDTH * HEIGHT, ItemStack.EMPTY); public AlchemicalChestEntity(BlockPos pos, BlockState state) { - super(ErisAlchemyRegistry.BlockEntities.ALCHEMICAL_CHEST, pos, state); + super(BlockEntities.ALCHEMICAL_CHEST, pos, state, Materials.ALCHEMICAL_CHEST); } @Nonnull @@ -27,13 +29,15 @@ public class AlchemicalChestEntity extends ChestLikeEntity { return new AlchemicalChestMenu(syncId, playerInventory, this); } + @Nonnull @Override protected NonNullList getItems() { return items; } + @Nonnull @Override protected Block getParent() { - return ErisAlchemyRegistry.Blocks.ALCHEMICAL_CHEST; + return Blocks.ALCHEMICAL_CHEST; } } diff --git a/src/main/java/lv/enes/mc/eris_alchemy/block/entity/ChestLikeEntity.java b/src/main/java/lv/enes/mc/eris_alchemy/block/entity/ChestLikeEntity.java index 362b054..8f40d26 100644 --- a/src/main/java/lv/enes/mc/eris_alchemy/block/entity/ChestLikeEntity.java +++ b/src/main/java/lv/enes/mc/eris_alchemy/block/entity/ChestLikeEntity.java @@ -3,6 +3,7 @@ package lv.enes.mc.eris_alchemy.block.entity; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import lv.enes.mc.eris_alchemy.menu.ChestLikeMenu; +import net.minecraft.client.resources.model.Material; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; @@ -21,6 +22,8 @@ import net.minecraft.world.level.block.state.BlockState; public abstract class ChestLikeEntity extends BaseContainerBlockEntity implements LidBlockEntity { protected static final int EVENT_INTERACTED = 1; + public final Material material; + protected final ChestLidController lidController = new ChestLidController(); protected final ContainerOpenersCounter openersCounter = new ContainerOpenersCounter() { @Override @@ -50,13 +53,18 @@ public abstract class ChestLikeEntity extends BaseContainerBlockEntity implement public ChestLikeEntity( BlockEntityType type, BlockPos pos, - BlockState state + BlockState state, + Material material ) { super(type, pos, state); + this.material = material; } - protected abstract Block getParent(); + + @Nonnull protected abstract NonNullList getItems(); + @Nonnull + protected abstract Block getParent(); @Override public void clearContent() { diff --git a/src/main/java/lv/enes/mc/eris_alchemy/block/entity/EnergyCondenserEntity.java b/src/main/java/lv/enes/mc/eris_alchemy/block/entity/EnergyCondenserEntity.java index dfe07a4..0f39ccb 100644 --- a/src/main/java/lv/enes/mc/eris_alchemy/block/entity/EnergyCondenserEntity.java +++ b/src/main/java/lv/enes/mc/eris_alchemy/block/entity/EnergyCondenserEntity.java @@ -2,7 +2,9 @@ package lv.enes.mc.eris_alchemy.block.entity; import jakarta.annotation.Nonnull; import lv.enes.mc.eris_alchemy.EMC; -import lv.enes.mc.eris_alchemy.ErisAlchemyRegistry; +import lv.enes.mc.eris_alchemy.ErisAlchemyRegistry.BlockEntities; +import lv.enes.mc.eris_alchemy.ErisAlchemyRegistry.Blocks; +import lv.enes.mc.eris_alchemy.ErisAlchemyRegistry.Materials; import lv.enes.mc.eris_alchemy.menu.ChestLikeMenu; import lv.enes.mc.eris_alchemy.menu.EnergyCondenserMenu; import lv.enes.mc.eris_alchemy.utils.ContainerOpenersCounterUtil; @@ -30,7 +32,7 @@ public class EnergyCondenserEntity extends ChestLikeEntity implements ExtendedSc public final SyncedDouble storedEmc = new SyncedDouble(0); public EnergyCondenserEntity(BlockPos pos, BlockState state) { - super(ErisAlchemyRegistry.BlockEntities.ENERGY_CONDENSER, pos, state); + super(BlockEntities.ENERGY_CONDENSER, pos, state, Materials.ENERGY_CONDENSER); } @Nonnull @@ -39,14 +41,16 @@ public class EnergyCondenserEntity extends ChestLikeEntity implements ExtendedSc return new EnergyCondenserMenu(syncId, playerInventory, this); } + @Nonnull @Override protected NonNullList getItems() { return items; } + @Nonnull @Override protected Block getParent() { - return ErisAlchemyRegistry.Blocks.ENERGY_CONDENSER; + return Blocks.ENERGY_CONDENSER; } public double getStoredEmc() { diff --git a/src/main/java/lv/enes/mc/eris_alchemy/client/ErisAlchemyMaterials.java b/src/main/java/lv/enes/mc/eris_alchemy/client/ErisAlchemyMaterials.java deleted file mode 100644 index 686d83f..0000000 --- a/src/main/java/lv/enes/mc/eris_alchemy/client/ErisAlchemyMaterials.java +++ /dev/null @@ -1,20 +0,0 @@ -package lv.enes.mc.eris_alchemy.client; - -import lv.enes.mc.eris_alchemy.ErisAlchemy; -import net.minecraft.client.renderer.Sheets; -import net.minecraft.client.resources.model.Material; -import net.minecraft.resources.ResourceLocation; - -public final class ErisAlchemyMaterials { - public static final Material ALCHEMICAL_CHEST = new Material( - Sheets.CHEST_SHEET, - new ResourceLocation(ErisAlchemy.ID, "entity/chest/alchemical_chest") - ); - - public static final Material ENERGY_CONDENSER = new Material( - Sheets.CHEST_SHEET, - new ResourceLocation(ErisAlchemy.ID, "entity/chest/energy_condenser") - ); - - private ErisAlchemyMaterials() {} -} diff --git a/src/main/java/lv/enes/mc/eris_alchemy/mixin/client/SheetsMixin.java b/src/main/java/lv/enes/mc/eris_alchemy/mixin/client/SheetsMixin.java index 145a68c..bc9e7b8 100644 --- a/src/main/java/lv/enes/mc/eris_alchemy/mixin/client/SheetsMixin.java +++ b/src/main/java/lv/enes/mc/eris_alchemy/mixin/client/SheetsMixin.java @@ -1,8 +1,6 @@ package lv.enes.mc.eris_alchemy.mixin.client; -import lv.enes.mc.eris_alchemy.block.entity.EnergyCondenserEntity; -import lv.enes.mc.eris_alchemy.client.ErisAlchemyMaterials; -import lv.enes.mc.eris_alchemy.block.entity.AlchemicalChestEntity; +import lv.enes.mc.eris_alchemy.block.entity.ChestLikeEntity; import net.minecraft.client.renderer.Sheets; import net.minecraft.client.resources.model.Material; import net.minecraft.world.level.block.entity.BlockEntity; @@ -25,10 +23,8 @@ public abstract class SheetsMixin { boolean christmas, CallbackInfoReturnable cir ) { - if (entity instanceof AlchemicalChestEntity) { - cir.setReturnValue(ErisAlchemyMaterials.ALCHEMICAL_CHEST); - } else if (entity instanceof EnergyCondenserEntity) { - cir.setReturnValue(ErisAlchemyMaterials.ENERGY_CONDENSER); + if (entity instanceof ChestLikeEntity chestlike) { + cir.setReturnValue(chestlike.material); } } } -- cgit v1.2.3