From 59766c69f7622309075efd577c9543a8ac24c3f9 Mon Sep 17 00:00:00 2001 From: Jason Mitchell Date: Sat, 29 Jun 2024 10:48:10 -0700 Subject: MultiTileEntityBlock work * Merge MultiTileEntityBlockRegistryInternal into MultiTileEntityBlock * Add a hard dep on NEID for meta extension * Use in world block meta for MuTE ID * Use one block per MuTE Registry * Add WeakTargetRef * Migrate `controller` reference for parts over to a non non cachable WeakTargetRef * Migrate controller WeakReference usage to WeakTargetRef --- .../gregtech/api/util/GT_StructureUtilityMuTE.java | 30 ++++++++-------------- 1 file changed, 11 insertions(+), 19 deletions(-) (limited to 'src/main/java/gregtech/api/util') diff --git a/src/main/java/gregtech/api/util/GT_StructureUtilityMuTE.java b/src/main/java/gregtech/api/util/GT_StructureUtilityMuTE.java index 4010fae3bc..a4c4630209 100644 --- a/src/main/java/gregtech/api/util/GT_StructureUtilityMuTE.java +++ b/src/main/java/gregtech/api/util/GT_StructureUtilityMuTE.java @@ -19,11 +19,10 @@ import com.gtnewhorizon.structurelib.structure.IStructureElement; import gregtech.api.enums.GT_Values; import gregtech.api.enums.OrePrefixes; import gregtech.api.enums.TextureSet; -import gregtech.api.multitileentity.MultiTileEntityContainer; +import gregtech.api.multitileentity.MultiTileEntityBlock; import gregtech.api.multitileentity.MultiTileEntityRegistry; import gregtech.api.multitileentity.enums.GT_MultiTileUpgradeCasing; import gregtech.api.multitileentity.interfaces.IMultiBlockController; -import gregtech.api.multitileentity.interfaces.IMultiTileEntity; import gregtech.api.multitileentity.multiblock.base.Controller; import gregtech.api.multitileentity.multiblock.base.MultiBlockPart; @@ -189,25 +188,18 @@ public class GT_StructureUtilityMuTE { @Override public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) { - final MultiTileEntityRegistry tRegistry = MultiTileEntityRegistry - .getRegistry(validCasings[0].getRegistryId()); - if (tRegistry == null) { + final int registryID = validCasings[0].getRegistryId(); + final MultiTileEntityRegistry registry = MultiTileEntityRegistry.getRegistry(registryID); + if (registry == null) { GT_FML_LOGGER.error("NULL REGISTRY"); return false; } - final MultiTileEntityContainer tContainer = tRegistry - .getNewTileEntityContainer(world, x, y, z, validCasings[0].defaultMeta, null); - if (tContainer == null) { - GT_FML_LOGGER.error("NULL CONTAINER"); - return false; - } - final IMultiTileEntity te = ((IMultiTileEntity) tContainer.tileEntity); - if (!(te instanceof MultiBlockPart)) { - GT_FML_LOGGER.error("Not a multiblock part"); - return false; - } - if (world.setBlock(x, y, z, tContainer.block, 15 - tContainer.blockMetaData, 2)) { - tContainer.setMultiTile(world, x, y, z); + final MultiTileEntityBlock block = registry.getBlock(); + if (world.setBlock(x, y, z, block, allowedCasings[0].getDefaultMeta(), 2)) { + final TileEntity te = world.getTileEntity(x, y, z); + if (!(te instanceof MultiBlockPart)) { + throw new IllegalStateException("TE is not an MultiBlockPart"); + } ((MultiBlockPart) te).setTarget((IMultiBlockController) t, modes); ((Controller) t).registerSpecialCasings((MultiBlockPart) te); @@ -233,7 +225,7 @@ public class GT_StructureUtilityMuTE { private final Integer[] validIds; public MuTEStructureCasing(String registryName, Integer... validIds) { - MultiTileEntityRegistry registry = MultiTileEntityRegistry.getRegistry(registryName); + final MultiTileEntityRegistry registry = MultiTileEntityRegistry.getRegistry(registryName); if (validIds == null || validIds.length == 0 || registry == null) { throw new IllegalArgumentException(); } -- cgit