aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Mitchell <mitchej@gmail.com>2024-06-29 10:48:10 -0700
committerJason Mitchell <mitchej+github@gmail.com>2024-07-09 21:38:05 -0700
commit59766c69f7622309075efd577c9543a8ac24c3f9 (patch)
tree1181f958421381e1a1464d1d004a9b7c849a7df3
parent3724fbbcb67ee2566419654e31eb88eb5b7f88f6 (diff)
downloadGT5-Unofficial-59766c69f7622309075efd577c9543a8ac24c3f9.tar.gz
GT5-Unofficial-59766c69f7622309075efd577c9543a8ac24c3f9.tar.bz2
GT5-Unofficial-59766c69f7622309075efd577c9543a8ac24c3f9.zip
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
-rw-r--r--dependencies.gradle1
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseTileEntity.java4
-rw-r--r--src/main/java/gregtech/api/multitileentity/MultiTileEntityBlock.java34
-rw-r--r--src/main/java/gregtech/api/multitileentity/MultiTileEntityBlockRegistryInternal.java47
-rw-r--r--src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java49
-rw-r--r--src/main/java/gregtech/api/multitileentity/MultiTileEntityContainer.java24
-rw-r--r--src/main/java/gregtech/api/multitileentity/MultiTileEntityItem.java203
-rw-r--r--src/main/java/gregtech/api/multitileentity/MultiTileEntityRegistry.java174
-rw-r--r--src/main/java/gregtech/api/multitileentity/WeakTargetRef.java88
-rw-r--r--src/main/java/gregtech/api/multitileentity/base/MultiTileEntity.java20
-rw-r--r--src/main/java/gregtech/api/multitileentity/interfaces/IItemUpdatable.java19
-rw-r--r--src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockPart.java2
-rw-r--r--src/main/java/gregtech/api/multitileentity/interfaces/IMultiTileEntity.java5
-rw-r--r--src/main/java/gregtech/api/multitileentity/machine/MultiTileBasicMachine.java2
-rw-r--r--src/main/java/gregtech/api/multitileentity/multiblock/base/Controller.java97
-rw-r--r--src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlockPart.java86
-rw-r--r--src/main/java/gregtech/api/multitileentity/multiblock/base/WallShareablePart.java34
-rw-r--r--src/main/java/gregtech/api/multitileentity/multiblock/casing/UpgradeCasing.java4
-rw-r--r--src/main/java/gregtech/api/util/GT_StructureUtilityMuTE.java30
-rw-r--r--src/main/java/gregtech/common/render/GT_MultiTile_Renderer.java7
-rw-r--r--src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_RecipeFilter.java8
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multiblock/DistillationTower.java13
-rw-r--r--src/main/java/gregtech/loaders/preload/GT_Loader_MultiTileEntities.java248
23 files changed, 438 insertions, 761 deletions
diff --git a/dependencies.gradle b/dependencies.gradle
index 78b3c27480..842e51cd41 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -37,6 +37,7 @@ dependencies {
api("com.github.GTNewHorizons:StructureLib:1.3.1:dev")
api("net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev")
api("com.github.GTNewHorizons:NotEnoughItems:2.6.14-GTNH:dev")
+ api("com.github.GTNewHorizons:NotEnoughIds:2.1.0:dev")
api("com.github.GTNewHorizons:GTNHLib:0.3.2:dev")
api("com.github.GTNewHorizons:ModularUI:1.2.0:dev")
api("com.github.GTNewHorizons:waila:1.8.1:dev")
diff --git a/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java
index ac523eb82c..f3c65a1bfe 100644
--- a/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java
+++ b/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java
@@ -1,10 +1,7 @@
package gregtech.api.metatileentity;
-import static gregtech.api.enums.GT_Values.COMPASS_DIRECTIONS;
import static gregtech.api.enums.GT_Values.GT;
import static gregtech.api.enums.GT_Values.NW;
-import static gregtech.api.enums.GT_Values.SIDE_DOWN;
-import static gregtech.api.enums.GT_Values.SIDE_UP;
import java.util.Arrays;
import java.util.List;
@@ -26,7 +23,6 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.util.EnumChatFormatting;
-import net.minecraft.util.MathHelper;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlock.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlock.java
index 800e9af20a..1697eb03ce 100644
--- a/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlock.java
+++ b/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlock.java
@@ -14,6 +14,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.minecraft.block.Block;
+import net.minecraft.block.BlockContainer;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -24,7 +25,6 @@ import net.minecraft.entity.EnumCreatureType;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
-import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.stats.StatList;
import net.minecraft.tileentity.TileEntity;
@@ -62,11 +62,14 @@ import gregtech.common.render.GT_MultiTile_Renderer;
* MultiTileEntityBlock ported from GT6
*/
@Optional.Interface(iface = "com.cricketcraft.chisel.api.IFacade", modid = "ChiselAPI")
-public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITileEntityProvider, IFacade {
+public class MultiTileEntityBlock extends BlockContainer implements IDebugableBlock, ITileEntityProvider, IFacade {
+
+ private MultiTileEntityRegistry registry;
private static boolean LOCK = false;
- private boolean registered = false, normalCube;
+ private boolean registered = false;
+ private boolean normalCube;
protected String internalName, toolName, materialName, modID;
public String getName() {
@@ -125,7 +128,7 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil
internalName = getName();
lightOpacity = isOpaqueCube() ? 255 : 0;
- GameRegistry.registerBlock(this, ItemBlock.class, internalName);
+ GameRegistry.registerBlock(this, MultiTileEntityItem.class, internalName);
return this;
}
@@ -382,6 +385,18 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil
return 0;
}
+ public MultiTileEntityRegistry getRegistry() {
+ return registry;
+ }
+
+ public void setRegistry(MultiTileEntityRegistry registry) {
+ this.registry = registry;
+ }
+
+ public boolean isRegistered() {
+ return registered;
+ }
+
@Override
protected boolean canSilkHarvest() {
return false;
@@ -389,11 +404,13 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil
@Override
public final String getLocalizedName() {
+ // return StatCollector.translateToLocal(registry.getInternalName() + ".name");
return StatCollector.translateToLocal(internalName + ".name");
}
@Override
public final String getUnlocalizedName() {
+ // return registry.getInternalName();
return internalName;
}
@@ -571,12 +588,7 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil
}
@Override
- public final TileEntity createTileEntity(World world, int meta) {
- return null;
- }
-
- @Override
- public TileEntity createNewTileEntity(World world, int i) {
- return null;
+ public TileEntity createNewTileEntity(World world, int meta) {
+ return registry.getNewTileEntity(meta);
}
}
diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlockRegistryInternal.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlockRegistryInternal.java
deleted file mode 100644
index 3d8da5d796..0000000000
--- a/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlockRegistryInternal.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package gregtech.api.multitileentity;
-
-import net.minecraft.block.Block;
-import net.minecraft.block.material.Material;
-import net.minecraft.client.renderer.texture.IIconRegister;
-import net.minecraft.util.StatCollector;
-
-import gregtech.common.render.GT_MultiTile_Renderer;
-
-/*
- * The internal block used in the registry for lookup.
- * - Not the same as the block spawned with the MuTE to allow for multiple different types of blocks/materials
- * in each registry.
- */
-public class MultiTileEntityBlockRegistryInternal extends Block {
-
- public MultiTileEntityRegistry registry;
-
- public MultiTileEntityBlockRegistryInternal() {
- super(Material.anvil);
- }
-
- @Override
- public void registerBlockIcons(IIconRegister aIconRegister) {
- /* Do Nothing */
- }
-
- @Override
- public int getRenderType() {
- return GT_MultiTile_Renderer.INSTANCE == null ? super.getRenderType()
- : GT_MultiTile_Renderer.INSTANCE.getRenderId();
- }
-
- @Override
- public final String getUnlocalizedName() {
- return registry.getInternalName();
- }
-
- @Override
- public final String getLocalizedName() {
- return StatCollector.translateToLocal(registry.getInternalName() + ".name");
- }
-
- public MultiTileEntityRegistry getRegistry() {
- return registry;
- }
-}
diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java
index 6eba28bad9..325f583149 100644
--- a/src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java
+++ b/src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java
@@ -21,15 +21,11 @@ public class MultiTileEntityClassContainer {
private String localized;
private String categoryName;
- public final short muteID;
- public Class<? extends MultiTileEntity> muteClass;
- public MultiTileEntityBlock block;
- public MultiTileEntity referenceTileEntity;
- public NBTTagCompound parameters;
-
- // These have defaults
- public byte blockMetaData = 1;
- public byte maxStackSize = 64;
+ private final short muteID;
+ private final Class<? extends MultiTileEntity> muteClass;
+ private MultiTileEntity referenceTileEntity;
+ private NBTTagCompound parameters;
+
public boolean hidden = false;
public MultiTileEntityClassContainer(MultiTileEntityRegistry aRegistry, int aID,
@@ -72,26 +68,11 @@ public class MultiTileEntityClassContainer {
return this;
}
- public MultiTileEntityClassContainer meta(int aMeta) {
- blockMetaData = (byte) aMeta;
- return this;
- }
-
- public MultiTileEntityClassContainer stackSize(int aStackSize) {
- maxStackSize = (byte) aStackSize;
- return this;
- }
-
public MultiTileEntityClassContainer hide() {
hidden = true;
return this;
}
- public MultiTileEntityClassContainer setBlock(MultiTileEntityBlock aBlock) {
- block = aBlock;
- return this;
- }
-
/* These methods are builder methods for commonly used NBT tags */
// Need a base texture for the MTE machine, and then a separate texture set for the machine/active overlays
@@ -177,6 +158,26 @@ public class MultiTileEntityClassContainer {
return this;
}
+ public WeakReference<MultiTileEntityRegistry> getRegistry() {
+ return registry;
+ }
+
+ public Class<? extends MultiTileEntity> getMuteClass() {
+ return muteClass;
+ }
+
+ public short getMuteID() {
+ return muteID;
+ }
+
+ public MultiTileEntity getReferenceTileEntity() {
+ return referenceTileEntity;
+ }
+
+ public NBTTagCompound getParameters() {
+ return parameters;
+ }
+
private void verifyDescendentOf(Class<?> cls) {
// Check if cls is extended by mClass
if (!cls.isAssignableFrom(muteClass)) {
diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityContainer.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityContainer.java
deleted file mode 100644
index 3ca0ee46f4..0000000000
--- a/src/main/java/gregtech/api/multitileentity/MultiTileEntityContainer.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package gregtech.api.multitileentity;
-
-import net.minecraft.world.World;
-
-import gregtech.api.multitileentity.base.MultiTileEntity;
-import gregtech.api.util.GT_Util;
-
-public class MultiTileEntityContainer {
-
- public final MultiTileEntity tileEntity;
- public final MultiTileEntityBlock block;
- public final byte blockMetaData;
-
- public MultiTileEntityContainer(MultiTileEntity tileEntity, MultiTileEntityBlock block, byte blockMetaData) {
- this.blockMetaData = blockMetaData;
- this.tileEntity = tileEntity;
- this.block = block;
- }
-
- public void setMultiTile(World aWorld, int aX, int aY, int aZ) {
- GT_Util.setBlock(aWorld, aX, aY, aZ, block, blockMetaData, 0, false);
- GT_Util.setTileEntity(aWorld, aX, aY, aZ, tileEntity, true);
- }
-}
diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityItem.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityItem.java
index 8dc1d348ff..e67ab61e96 100644
--- a/src/main/java/gregtech/api/multitileentity/MultiTileEntityItem.java
+++ b/src/main/java/gregtech/api/multitileentity/MultiTileEntityItem.java
@@ -16,44 +16,43 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
-import net.minecraftforge.fluids.FluidStack;
-import net.minecraftforge.fluids.IFluidContainerItem;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.metatileentity.CoverableTileEntity;
-import gregtech.api.multitileentity.interfaces.IItemUpdatable;
import gregtech.api.multitileentity.interfaces.IMultiTileEntity;
-public class MultiTileEntityItem extends ItemBlock implements IFluidContainerItem, IItemUpdatable {
+public class MultiTileEntityItem extends ItemBlock {
- public final MultiTileEntityBlockRegistryInternal mBlock;
+ public final MultiTileEntityBlock block;
- public MultiTileEntityItem(Block aBlock) {
- super(aBlock);
+ public MultiTileEntityItem(Block block) {
+ super(block);
setMaxDamage(0);
setHasSubtypes(true);
- mBlock = (MultiTileEntityBlockRegistryInternal) aBlock;
+ this.block = (MultiTileEntityBlock) block;
}
@Override
@SuppressWarnings("unchecked")
- public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List<String> aList, boolean aF3_H) {
- final MultiTileEntityContainer tTileEntityContainer = mBlock.registry.getCachedTileEntityContainer(aStack);
- if (tTileEntityContainer == null) {
- aList.add("INVALID ITEM!");
+ public void addInformation(ItemStack stack, EntityPlayer player, List<String> list, boolean F3_H) {
+ final IMultiTileEntity mute = block.getRegistry()
+ .getReferenceTileEntity(stack);
+ if (mute == null) {
+ list.add("INVALID ITEM!");
return;
}
try {
- tTileEntityContainer.tileEntity.addToolTips(aList, aStack, aF3_H);
+ mute.addToolTips(list, stack, F3_H);
} catch (Throwable e) {
GT_FML_LOGGER.error("addInformation", e);
}
- final NBTTagCompound aNBT = aStack.getTagCompound();
- CoverableTileEntity.addInstalledCoversInformation(aNBT, aList);
+ final NBTTagCompound aNBT = stack.getTagCompound();
+ CoverableTileEntity.addInstalledCoversInformation(aNBT, list);
// TODO: Add anything else relevant
}
@@ -61,68 +60,68 @@ public class MultiTileEntityItem extends ItemBlock implements IFluidContainerIte
@SideOnly(Side.CLIENT)
@SuppressWarnings("unchecked")
public void getSubItems(Item aItem, CreativeTabs aTab, List<ItemStack> aList) {
- for (MultiTileEntityClassContainer tClass : mBlock.registry.registrations) {
- if (!tClass.hidden && ((IMultiTileEntity) tClass.referenceTileEntity)
- .getSubItems(mBlock, aItem, aTab, aList, tClass.muteID)) {
- aList.add(mBlock.registry.getItem(tClass.muteID));
+ for (MultiTileEntityClassContainer tClass : block.getRegistry().registrations) {
+ if (!tClass.hidden && ((IMultiTileEntity) tClass.getReferenceTileEntity())
+ .getSubItems(block, aItem, aTab, aList, tClass.getMuteID())) {
+ aList.add(
+ block.getRegistry()
+ .getItem(tClass.getMuteID()));
}
}
}
@Override
- public boolean onItemUse(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ,
- int ordinalSide, float aHitX, float aHitY, float aHitZ) {
+ public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int ordinalSide,
+ float hitX, float hitY, float hitZ) {
- if (aY < 0 || aY > aWorld.getHeight()) return false;
+ if (y < 0 || y > world.getHeight()) return false;
- if (aPlayer == null) return false;
+ if (player == null) return false;
try {
ForgeDirection side = ForgeDirection.getOrientation(ordinalSide);
- final Block tClickedBlock = aWorld.getBlock(aX, aY, aZ);
+ final Block clickedBlock = world.getBlock(x, y, z);
- if (tClickedBlock instanceof BlockSnow && (aWorld.getBlockMetadata(aX, aY, aZ) & 7) < 1) {
+ if (clickedBlock instanceof BlockSnow && (world.getBlockMetadata(x, y, z) & 7) < 1) {
ordinalSide = SIDE_TOP;
side = ForgeDirection.UP;
- } else if (tClickedBlock != Blocks.vine && tClickedBlock != Blocks.tallgrass
- && tClickedBlock != Blocks.deadbush
- && !tClickedBlock.isReplaceable(aWorld, aX, aY, aZ)) {
- aX += side.offsetX;
- aY += side.offsetY;
- aZ += side.offsetZ;
+ } else if (clickedBlock != Blocks.vine && clickedBlock != Blocks.tallgrass
+ && clickedBlock != Blocks.deadbush
+ && !clickedBlock.isReplaceable(world, x, y, z)) {
+ x += side.offsetX;
+ y += side.offsetY;
+ z += side.offsetZ;
}
- final Block tReplacedBlock = aWorld.getBlock(aX, aY, aZ);
+ final Block tReplacedBlock = world.getBlock(x, y, z);
- if (!tReplacedBlock.isReplaceable(aWorld, aX, aY, aZ)
- || !mBlock.canReplace(aWorld, aX, aY, aZ, ordinalSide, aStack)) {
+ if (!tReplacedBlock.isReplaceable(world, x, y, z)
+ || !block.canReplace(world, x, y, z, ordinalSide, stack)) {
return false;
}
- if (aStack.stackSize == 0 || (!aPlayer.canPlayerEdit(aX, aY, aZ, ordinalSide, aStack))) {
+ if (stack.stackSize == 0 || (!player.canPlayerEdit(x, y, z, ordinalSide, stack))) {
return false;
}
+ // final TileEntity tileEntity = block.getRegistry().getNewTileEntity(world, x, y, z, stack);
- final MultiTileEntityContainer MuTEContainer = mBlock.registry
- .getNewTileEntityContainer(aWorld, aX, aY, aZ, aStack);
-
- if (MuTEContainer == null) return false;
-
- if (!aWorld.setBlock(aX, aY, aZ, MuTEContainer.block, 15 - MuTEContainer.blockMetaData, 2)) {
+ if (!world.setBlock(x, y, z, block, Items.feather.getDamage(stack), 2)) {
return false;
}
-
- MuTEContainer.setMultiTile(aWorld, aX, aY, aZ);
+ final TileEntity te = world.getTileEntity(x, y, z);
+ if (!(te instanceof IMultiTileEntity mute)) {
+ throw new IllegalStateException("TileEntity is not an IMultiTileEntity");
+ }
+ // MuTEContainer.setMultiTile(world, x, y, z);
try {
- if (((IMultiTileEntity) MuTEContainer.tileEntity)
- .onPlaced(aStack, aPlayer, aWorld, aX, aY, aZ, side, aHitX, aHitY, aHitZ)) {
- aWorld.playSoundEffect(
- aX + 0.5,
- aY + 0.5,
- aZ + 0.5,
- MuTEContainer.block.stepSound.func_150496_b(),
- (MuTEContainer.block.stepSound.getVolume() + 1) / 2,
- MuTEContainer.block.stepSound.getPitch() * 0.8F);
+ if (mute.onPlaced(stack, player, world, x, y, z, side, hitX, hitY, hitZ)) {
+ world.playSoundEffect(
+ x + 0.5,
+ y + 0.5,
+ z + 0.5,
+ block.stepSound.func_150496_b(),
+ (block.stepSound.getVolume() + 1) / 2,
+ block.stepSound.getPitch() * 0.8F);
}
} catch (Throwable e) {
GT_FML_LOGGER.error("onPlaced", e);
@@ -139,25 +138,25 @@ public class MultiTileEntityItem extends ItemBlock implements IFluidContainerIte
// }
// spotless:on
try {
- if (!aWorld.isRemote) {
- aWorld.notifyBlockChange(aX, aY, aZ, tReplacedBlock);
- aWorld.func_147453_f /* updateNeighborsAboutBlockChange */(aX, aY, aZ, MuTEContainer.block);
+ if (!world.isRemote) {
+ world.notifyBlockChange(x, y, z, tReplacedBlock);
+ world.func_147453_f /* updateNeighborsAboutBlockChange */(x, y, z, block);
}
} catch (Throwable e) {
GT_FML_LOGGER.error("notifyBlockChange", e);
}
try {
- ((IMultiTileEntity) MuTEContainer.tileEntity).onTileEntityPlaced();
+ mute.onTileEntityPlaced();
} catch (Throwable e) {
GT_FML_LOGGER.error("onTileEntityPlaced", e);
}
try {
- aWorld.func_147451_t /* updateAllLightTypes */(aX, aY, aZ);
+ world.func_147451_t /* updateAllLightTypes */(x, y, z);
} catch (Throwable e) {
GT_FML_LOGGER.error("updateAllLightTypes", e);
}
- aStack.stackSize--;
+ stack.stackSize--;
return true;
} catch (Throwable e) {
@@ -167,87 +166,6 @@ public class MultiTileEntityItem extends ItemBlock implements IFluidContainerIte
}
@Override
- public void updateItemStack(ItemStack aStack) {
- final MultiTileEntityClassContainer tContainer = mBlock.registry.getClassContainer(aStack);
- if (tContainer == null) return;
- final MultiTileEntityContainer tTileEntityContainer = mBlock.registry.getCachedTileEntityContainer(aStack);
- if (tTileEntityContainer != null && tTileEntityContainer.tileEntity instanceof IItemUpdatable itemUpdatable) {
- itemUpdatable.updateItemStack(aStack);
- }
- }
-
- @Override
- public void updateItemStack(ItemStack aStack, World aWorld, int aX, int aY, int aZ) {
- final MultiTileEntityClassContainer tContainer = mBlock.registry.getClassContainer(aStack);
- if (tContainer == null) return;
- final MultiTileEntityContainer tTileEntityContainer = mBlock.registry.getCachedTileEntityContainer(aStack);
- if (tTileEntityContainer != null && tTileEntityContainer.tileEntity instanceof IItemUpdatable itemUpdatable) {
- itemUpdatable.updateItemStack(aStack, aWorld, aX, aY, aZ);
- }
- }
-
- @Override
- public int getItemStackLimit(ItemStack aStack) {
- final MultiTileEntityClassContainer tContainer = mBlock.registry.getClassContainer(aStack);
- if (tContainer == null) return 1;
- final MultiTileEntityContainer tTileEntityContainer = mBlock.registry.getCachedTileEntityContainer(aStack);
- return tContainer.maxStackSize;
- }
-
- @Override
- public void onCreated(ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
- updateItemStack(aStack);
- }
-
- @Override
- public FluidStack getFluid(ItemStack aStack) {
- final MultiTileEntityContainer tTileEntityContainer = mBlock.registry.getCachedTileEntityContainer(aStack);
- if (tTileEntityContainer != null
- && tTileEntityContainer.tileEntity instanceof IFluidContainerItem fluidContainerItem) {
- final FluidStack rFluid = fluidContainerItem.getFluid(aStack);
- updateItemStack(aStack);
- return rFluid;
- }
- return null;
- }
-
- @Override
- public int getCapacity(ItemStack aStack) {
- final MultiTileEntityContainer tTileEntityContainer = mBlock.registry.getCachedTileEntityContainer(aStack);
- if (tTileEntityContainer != null
- && tTileEntityContainer.tileEntity instanceof IFluidContainerItem fluidContainerItem) {
- final int rCapacity = fluidContainerItem.getCapacity(aStack);
- updateItemStack(aStack);
- return rCapacity;
- }
- return 0;
- }
-
- @Override
- public int fill(ItemStack aStack, FluidStack aFluid, boolean aDoFill) {
- final MultiTileEntityContainer tTileEntityContainer = mBlock.registry.getCachedTileEntityContainer(aStack);
- if (tTileEntityContainer != null
- && tTileEntityContainer.tileEntity instanceof IFluidContainerItem fluidContainerItem) {
- final int tFilled = fluidContainerItem.fill(aStack, aFluid, aDoFill);
- updateItemStack(aStack);
- return tFilled;
- }
- return 0;
- }
-
- @Override
- public FluidStack drain(ItemStack aStack, int aMaxDrain, boolean aDoDrain) {
- final MultiTileEntityContainer tTileEntityContainer = mBlock.registry.getCachedTileEntityContainer(aStack);
- if (tTileEntityContainer != null
- && tTileEntityContainer.tileEntity instanceof IFluidContainerItem fluidContainerItem) {
- final FluidStack rFluid = fluidContainerItem.drain(aStack, aMaxDrain, aDoDrain);
- updateItemStack(aStack);
- return rFluid;
- }
- return null;
- }
-
- @Override
public boolean func_150936_a /* canPlaceAtSide */(World aWorld, int aX, int aY, int aZ, int ordinalSide,
EntityPlayer aPlayer, ItemStack aStack) {
return true;
@@ -255,12 +173,15 @@ public class MultiTileEntityItem extends ItemBlock implements IFluidContainerIte
@Override
public final String getUnlocalizedName() {
- return mBlock.registry.getInternalName();
+ return block.getRegistry()
+ .getInternalName();
}
@Override
public final String getUnlocalizedName(ItemStack aStack) {
- return mBlock.registry.getInternalName() + "." + getDamage(aStack);
+ return block.getRegistry()
+ .getInternalName() + "."
+ + getDamage(aStack);
}
@Override
diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityRegistry.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityRegistry.java
index 7fe83075cd..0b5afbb043 100644
--- a/src/main/java/gregtech/api/multitileentity/MultiTileEntityRegistry.java
+++ b/src/main/java/gregtech/api/multitileentity/MultiTileEntityRegistry.java
@@ -10,7 +10,6 @@ import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
-import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
@@ -22,7 +21,6 @@ import com.gtnewhorizon.gtnhlib.util.map.ItemStackMap;
import appeng.core.CreativeTab;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.LoaderState;
-import cpw.mods.fml.common.registry.GameRegistry;
import gregtech.api.enums.GT_Values;
import gregtech.api.multitileentity.base.MultiTileEntity;
import gregtech.api.multitileentity.interfaces.IMultiTileEntity;
@@ -39,59 +37,50 @@ public class MultiTileEntityRegistry {
// TODO: NBT sensitive or not? Starting with not for now
private static final ItemStackMap<MultiTileEntityRegistry> REGISTRIES = new ItemStackMap<>(false);
private static final HashSet<Class<?>> sRegisteredTileEntities = new HashSet<>();
- private final HashMap<Integer, MultiTileEntityContainer> cachedTileEntityContainers = new HashMap<>();
public HashMap<Short, CreativeTab> creativeTabs = new HashMap<>();
public final Short2ObjectMap<MultiTileEntityClassContainer> registry = new Short2ObjectOpenHashMap<>();
public List<MultiTileEntityClassContainer> registrations = new ArrayList<>();
private final String internalName;
- private final MultiTileEntityBlockRegistryInternal block;
-
- private static MultiTileEntityBlockRegistryInternal regblock(String internalName,
- MultiTileEntityBlockRegistryInternal block, Class<? extends ItemBlock> itemClass) {
- GameRegistry.registerBlock(block, itemClass == null ? ItemBlock.class : itemClass, internalName);
- return block;
- }
-
- /**
- * @param internalName the internal Name of the Item
- */
- public MultiTileEntityRegistry(String internalName) {
- this(internalName, new MultiTileEntityBlockRegistryInternal(), MultiTileEntityItem.class);
- }
+ private final MultiTileEntityBlock block;
/**
* @param internalName the internal Name of the Item
*/
- public MultiTileEntityRegistry(String internalName, MultiTileEntityBlockRegistryInternal block,
- Class<? extends ItemBlock> itemClass) {
- this(internalName, regblock(internalName, block, itemClass));
- }
-
- /**
- * @param internalName the internal Name of the Item
- */
- public MultiTileEntityRegistry(String internalName, MultiTileEntityBlockRegistryInternal block) {
+ public MultiTileEntityRegistry(String internalName, MultiTileEntityBlock block) {
if (!Loader.instance()
.isInState(LoaderState.PREINITIALIZATION)) {
throw new IllegalStateException(
"The MultiTileEntity Registry must be initialized during Preload Phase and not before");
}
+ if (!block.isRegistered()) {
+ throw new IllegalStateException("Block not registered");
+ }
this.internalName = internalName;
this.block = block;
- GT_FML_LOGGER.info(internalName + " " + Block.getIdFromBlock(block) + "This is the answer");
- this.block.registry = this;
+ GT_FML_LOGGER.info(internalName + " " + Block.getIdFromBlock(block) + " This is the answer");
+ this.block.setRegistry(this);
REGISTRIES.put(new ItemStack(Item.getItemById(Block.getIdFromBlock(block)), 1, GT_Values.W), this);
NAMED_REGISTRIES.put(internalName, this);
}
- public static TileEntity getCanonicalTileEntity(int aRegistryID, int aMultiTileEntityID) {
+ public static TileEntity getReferenceTileEntity(int aRegistryID, int aMultiTileEntityID) {
final MultiTileEntityRegistry tRegistry = getRegistry(aRegistryID);
if (tRegistry == null) return null;
final MultiTileEntityClassContainer tClassContainer = tRegistry.getClassContainer(aMultiTileEntityID);
if (tClassContainer == null) return null;
- return tClassContainer.referenceTileEntity;
+ return tClassContainer.getReferenceTileEntity();
+ }
+
+ public MultiTileEntity getReferenceTileEntity(ItemStack stack) {
+ return getReferenceTileEntity(Items.feather.getDamage(stack));
+ }
+
+ public MultiTileEntity getReferenceTileEntity(int metaId) {
+ final MultiTileEntityClassContainer muteClass = registry.get((short) metaId);
+ if (muteClass == null) return null;
+ return muteClass.getReferenceTileEntity();
}
public static MultiTileEntityRegistry getRegistry(int aRegistryID) {
@@ -120,27 +109,27 @@ public class MultiTileEntityRegistry {
GT_FML_LOGGER.error("MULTI-TILE REGISTRY ERROR: Class Container is null!");
tFailed = true;
} else {
- if (aClassContainer.muteClass == null) {
+ if (aClassContainer.getMuteClass() == null) {
GT_FML_LOGGER.error("MULTI-TILE REGISTRY ERROR: Class inside Class Container is null!");
tFailed = true;
}
- if (aClassContainer.muteID == GT_Values.W) {
+ if (aClassContainer.getMuteID() == GT_Values.W) {
GT_FML_LOGGER.error("MULTI-TILE REGISTRY ERROR: Class Container uses Wildcard MetaData!");
tFailed = true;
}
- if (aClassContainer.muteID < 0) {
+ if (aClassContainer.getMuteID() < 0) {
GT_FML_LOGGER.error("MULTI-TILE REGISTRY ERROR: Class Container uses negative MetaData!");
tFailed = true;
}
- if (registry.containsKey(aClassContainer.muteID)) {
+ if (registry.containsKey(aClassContainer.getMuteID())) {
GT_FML_LOGGER.error(
- "MULTI-TILE REGISTRY ERROR: Class Container uses occupied MetaData! (" + aClassContainer.muteID
+ "MULTI-TILE REGISTRY ERROR: Class Container uses occupied MetaData! (" + aClassContainer.getMuteID()
+ ")");
tFailed = true;
}
}
if (tFailed) {
- GT_FML_LOGGER.error("MULTI-TILE REGISTRY ERROR: STACKTRACE START");
+ GT_FML_LOGGER.error("MULTI-TILE REGISTRY ERROR " + aLocalised + " : STACKTRACE START");
int i = 0;
for (StackTraceElement tElement : new Exception().getStackTrace()) if (i++ < 5 && !tElement.getClassName()
.startsWith("sun")) GT_FML_LOGGER.error("\tat " + tElement);
@@ -149,16 +138,20 @@ public class MultiTileEntityRegistry {
return null;
}
- GT_LanguageManager.addStringLocalization(internalName + "." + aClassContainer.muteID + ".name", aLocalised);
- registry.put(aClassContainer.muteID, aClassContainer);
- mLastRegisteredID = aClassContainer.muteID;
+ GT_LanguageManager
+ .addStringLocalization(internalName + "." + aClassContainer.getMuteID() + ".name", aLocalised);
+ registry.put(aClassContainer.getMuteID(), aClassContainer);
+ mLastRegisteredID = aClassContainer.getMuteID();
registrations.add(aClassContainer);
- if (sRegisteredTileEntities.add(aClassContainer.referenceTileEntity.getClass())) {
- aClassContainer.referenceTileEntity.onRegistrationFirst(this, aClassContainer.muteID);
+ if (sRegisteredTileEntities.add(
+ aClassContainer.getReferenceTileEntity()
+ .getClass())) {
+ aClassContainer.getReferenceTileEntity()
+ .onRegistrationFirst(this, aClassContainer.getMuteID());
}
- return getItem(aClassContainer.muteID);
+ return getItem(aClassContainer.getMuteID());
}
public short mLastRegisteredID = GT_Values.W;
@@ -179,15 +172,15 @@ public class MultiTileEntityRegistry {
return getItem(aID, aAmount, null);
}
- public ItemStack getItem(int aID, long aAmount, NBTTagCompound nbt) {
- final ItemStack rStack = new ItemStack(block, (int) aAmount, aID);
+ public ItemStack getItem(int metaID, long amount, NBTTagCompound nbt) {
+ final ItemStack stack = new ItemStack(block, (int) amount, metaID);
if (nbt == null || nbt.hasNoTags()) {
nbt = new NBTTagCompound();
- final MultiTileEntityContainer tTileEntityContainer = getNewTileEntityContainer(aID, nbt);
- if (tTileEntityContainer != null) ((IMultiTileEntity) tTileEntityContainer.tileEntity).writeItemNBT(nbt);
+ final TileEntity tileEntity = getNewTileEntity(metaID, nbt);
+ ((IMultiTileEntity) tileEntity).writeItemNBT(nbt);
}
- rStack.setTagCompound(nbt);
- return rStack;
+ stack.setTagCompound(nbt);
+ return stack;
}
public String getLocal(int aID) {
@@ -203,84 +196,37 @@ public class MultiTileEntityRegistry {
}
public TileEntity getNewTileEntity(int aID) {
- final MultiTileEntityContainer tContainer = getNewTileEntityContainer(null, 0, 0, 0, aID, null);
- return tContainer == null ? null : tContainer.tileEntity;
- }
-
- public MultiTileEntityContainer getNewTileEntityContainer(World world, int x, int y, int z, int aID,
- NBTTagCompound nbt) {
- final MultiTileEntityClassContainer tClass = registry.get((short) aID);
- if (tClass == null || tClass.block == null) return null;
- final MultiTileEntityContainer container = new MultiTileEntityContainer(
- (MultiTileEntity) GT_Utility.callConstructor(tClass.muteClass, -1, null, true),
- tClass.block,
- tClass.blockMetaData);
- if (container.tileEntity == null) return null;
- final MultiTileEntity tileEntity = container.tileEntity;
- tileEntity.setWorldObj(world);
- tileEntity.xCoord = x;
- tileEntity.yCoord = y;
- tileEntity.zCoord = z;
- tileEntity.initFromNBT(
- nbt == null || nbt.hasNoTags() ? tClass.parameters : GT_Util.fuseNBT(nbt, tClass.parameters),
- (short) aID,
- (short) Block.getIdFromBlock(block));
- return container;
- }
-
- public TileEntity getNewTileEntity(World world, int x, int y, int z, int aID) {
- final MultiTileEntityContainer tContainer = getNewTileEntityContainer(world, x, y, z, aID, null);
- return tContainer == null ? null : tContainer.tileEntity;
- }
-
- public TileEntity getNewTileEntity(ItemStack stack) {
- final MultiTileEntityContainer tContainer = getNewTileEntityContainer(
- null,
- 0,
- 0,
- 0,
- Items.feather.getDamage(stack),
- stack.getTagCompound());
- return tContainer == null ? null : tContainer.tileEntity;
- }
-
- public TileEntity getNewTileEntity(World world, int x, int y, int z, ItemStack stack) {
- final MultiTileEntityContainer tContainer = getNewTileEntityContainer(
- world,
- x,
- y,
- z,
- Items.feather.getDamage(stack),
- stack.getTagCompound());
- return tContainer == null ? null : tContainer.tileEntity;
- }
-
- public MultiTileEntityContainer getCachedTileEntityContainer(ItemStack stack) {
- MultiTileEntityContainer container = cachedTileEntityContainers.get(Items.feather.getDamage(stack));
- if (container == null) {
- container = getNewTileEntityContainer(stack);
- cachedTileEntityContainers.put(Items.feather.getDamage(stack), container);
- }
- return container;
+ return getNewTileEntity(null, 0, 0, 0, aID);
}
- public MultiTileEntityContainer getNewTileEntityContainer(ItemStack stack) {
- return getNewTileEntityContainer(null, 0, 0, 0, Items.feather.getDamage(stack), stack.getTagCompound());
+ public TileEntity getNewTileEntity(World aWorld, int x, int y, int z, int metaID) {
+ return getNewTileEntity(aWorld, x, y, z, metaID, null);
}
- public MultiTileEntityContainer getNewTileEntityContainer(World world, int x, int y, int z, ItemStack stack) {
- return getNewTileEntityContainer(world, x, y, z, Items.feather.getDamage(stack), stack.getTagCompound());
+ public TileEntity getNewTileEntity(World aWorld, int x, int y, int z, int metaID, NBTTagCompound nbt) {
+ final MultiTileEntityClassContainer container = registry.get((short) metaID);
+ if (container == null) return null;
+ final MultiTileEntity te = (MultiTileEntity) GT_Utility
+ .callConstructor(container.getMuteClass(), -1, null, true);
+ te.setWorldObj(aWorld);
+ te.xCoord = x;
+ te.yCoord = y;
+ te.zCoord = z;
+ nbt = (nbt == null || nbt.hasNoTags()) ? container.getParameters()
+ : GT_Util.fuseNBT(nbt, container.getParameters());
+ te.initFromNBT(nbt, (short) metaID, (short) Block.getIdFromBlock(block));
+ return te;
}
- public MultiTileEntityContainer getNewTileEntityContainer(int aID, NBTTagCompound nbt) {
- return getNewTileEntityContainer(null, 0, 0, 0, aID, nbt);
+ public TileEntity getNewTileEntity(int meta, NBTTagCompound nbt) {
+ return getNewTileEntity(null, 0, 0, 0, meta, nbt);
}
public String getInternalName() {
return internalName;
}
- public MultiTileEntityBlockRegistryInternal getBlock() {
+ public MultiTileEntityBlock getBlock() {
return block;
}
}
diff --git a/src/main/java/gregtech/api/multitileentity/WeakTargetRef.java b/src/main/java/gregtech/api/multitileentity/WeakTargetRef.java
new file mode 100644
index 0000000000..1509384f5e
--- /dev/null
+++ b/src/main/java/gregtech/api/multitileentity/WeakTargetRef.java
@@ -0,0 +1,88 @@
+package gregtech.api.multitileentity;
+
+import java.lang.ref.WeakReference;
+
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.ChunkCoordinates;
+import net.minecraft.world.World;
+
+import gregtech.api.multitileentity.interfaces.IMultiTileEntity;
+
+public class WeakTargetRef<T extends IMultiTileEntity> {
+
+ protected final ChunkCoordinates position = new ChunkCoordinates(0, -1, 0);
+ protected final Class<?> targetClass;
+ protected boolean shouldCache;
+ protected WeakReference<T> target = new WeakReference<>(null);
+ protected World world = null;
+
+ public WeakTargetRef(Class<?> targetClass, boolean shouldCache) {
+ this.targetClass = targetClass;
+ this.shouldCache = shouldCache;
+ }
+
+ public WeakTargetRef(T target, boolean shouldCache) {
+ this(target.getClass(), shouldCache);
+ setTarget(target);
+ }
+
+ public void setTarget(T newTarget) {
+ if (!targetClass.isInstance(newTarget)) {
+ throw new IllegalArgumentException("Target is not of the correct type");
+ }
+ position.set(newTarget.getXCoord(), newTarget.getYCoord(), newTarget.getZCoord());
+ world = newTarget.getWorld();
+ }
+
+ public void setWorld(World world) {
+ this.world = world;
+ }
+
+ public void setPosition(ChunkCoordinates position) {
+ this.position.set(position.posX, position.posY, position.posZ);
+ }
+
+ public void setPosition(int x, int y, int z) {
+ this.position.set(x, y, z);
+ }
+
+ public void setShouldCache(boolean shouldCache) {
+ this.shouldCache = shouldCache;
+ }
+
+ public T get() {
+ if (!shouldCache) {
+ return resolveTarget();
+ }
+ T result = target.get();
+ if (result == null || result.isDead()) {
+ result = resolveTarget();
+ if (result != null) {
+ target = new WeakReference<>(result);
+ } else {
+ target.clear();
+ }
+ }
+ return result;
+ }
+
+ @SuppressWarnings("unchecked")
+ protected T resolveTarget() {
+ if (world != null && position.posX >= 0 && world.blockExists(position.posX, position.posY, position.posZ)) {
+ final TileEntity te = world.getTileEntity(position.posX, position.posY, position.posZ);
+ return this.targetClass.isInstance(te) ? (T) te : null;
+ }
+ return null;
+ }
+
+ public ChunkCoordinates getPosition() {
+ return position;
+ }
+
+ public void invalidate() {
+ target.clear();
+ world = null;
+ position.set(0, -1, 0);
+ }
+
+}
diff --git a/src/main/java/gregtech/api/multitileentity/base/MultiTileEntity.java b/src/main/java/gregtech/api/multitileentity/base/MultiTileEntity.java
index 85f9f2497a..eeadfe7602 100644
--- a/src/main/java/gregtech/api/multitileentity/base/MultiTileEntity.java
+++ b/src/main/java/gregtech/api/multitileentity/base/MultiTileEntity.java
@@ -47,7 +47,7 @@ import gregtech.api.gui.modularui.GT_UIInfos;
import gregtech.api.interfaces.ITexture;
import gregtech.api.metatileentity.CoverableTileEntity;
import gregtech.api.metatileentity.GregTechTileClientEvents;
-import gregtech.api.multitileentity.MultiTileEntityBlockRegistryInternal;
+import gregtech.api.multitileentity.MultiTileEntityBlock;
import gregtech.api.multitileentity.MultiTileEntityClassContainer;
import gregtech.api.multitileentity.MultiTileEntityRegistry;
import gregtech.api.multitileentity.interfaces.IMultiTileEntity;
@@ -171,12 +171,11 @@ public abstract class MultiTileEntity extends CoverableTileEntity
@Override
public void copyTextures() {
// Loading an instance
- final TileEntity tCanonicalTileEntity = MultiTileEntityRegistry
- .getCanonicalTileEntity(getMultiTileEntityRegistryID(), getMultiTileEntityID());
- if (!(tCanonicalTileEntity instanceof MultiTileEntity)) {
+ final TileEntity referenceTileEntity = MultiTileEntityRegistry
+ .getReferenceTileEntity(getMultiTileEntityRegistryID(), getMultiTileEntityID());
+ if (!(referenceTileEntity instanceof MultiTileEntity canonicalEntity)) {
return;
}
- final MultiTileEntity canonicalEntity = (MultiTileEntity) tCanonicalTileEntity;
baseTexture = canonicalEntity.baseTexture;
topOverlayTexture = canonicalEntity.topOverlayTexture;
bottomOverlayTexture = canonicalEntity.bottomOverlayTexture;
@@ -225,7 +224,7 @@ public abstract class MultiTileEntity extends CoverableTileEntity
if (tClass != null) {
// Add the Default Parameters. Useful for things that differ between different tiers/types of the
// same machine
- nbt = GT_Util.fuseNBT(nbt, tClass.parameters);
+ nbt = GT_Util.fuseNBT(nbt, tClass.getParameters());
}
}
}
@@ -996,8 +995,8 @@ public abstract class MultiTileEntity extends CoverableTileEntity
}
@Override
- public boolean getSubItems(MultiTileEntityBlockRegistryInternal block, Item item, CreativeTabs tab,
- List<ItemStack> list, short aID) {
+ public boolean getSubItems(MultiTileEntityBlock block, Item item, CreativeTabs tab, List<ItemStack> list,
+ short aID) {
return true;
}
@@ -1378,4 +1377,9 @@ public abstract class MultiTileEntity extends CoverableTileEntity
getTimedPacketData(timedPacket);
GT_Values.NW.sendPacketToAllPlayersInRange(worldObj, timedPacket, getXCoord(), getZCoord());
}
+
+ @Override
+ public void onChunkUnload() {
+ super.onChunkUnload();
+ }
}
diff --git a/src/main/java/gregtech/api/multitileentity/interfaces/IItemUpdatable.java b/src/main/java/gregtech/api/multitileentity/interfaces/IItemUpdatable.java
deleted file mode 100644
index 89d281eb27..0000000000
--- a/src/main/java/gregtech/api/multitileentity/interfaces/IItemUpdatable.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package gregtech.api.multitileentity.interfaces;
-
-import net.minecraft.item.ItemStack;
-import net.minecraft.world.World;
-
-public interface IItemUpdatable {
-
- /**
- * Updates the Data of the ItemStack. Not called every tick but instead called whenever something important happens
- * to the Stack.
- */
- void updateItemStack(ItemStack aStack);
-
- /**
- * Updates the Data of the ItemStack. Not called every tick but instead called whenever something important happens
- * to the Stack.
- */
- void updateItemStack(ItemStack aStack, World aWorld, int aX, int aY, int aZ);
-}
diff --git a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockPart.java b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockPart.java
index b239f4c4c0..f5bbbec7ab 100644
--- a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockPart.java
+++ b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockPart.java
@@ -12,8 +12,6 @@ public interface IMultiBlockPart extends IMultiTileEntity, ItemInventoryLogicHos
ChunkCoordinates getTargetPos();
- void setTargetPos(ChunkCoordinates aTargetPos);
-
void setLockedInventoryIndex(int aIndex);
int getLockedInventoryIndex();
diff --git a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiTileEntity.java b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiTileEntity.java
index d504e34c25..b16ca8a376 100644
--- a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiTileEntity.java
+++ b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiTileEntity.java
@@ -21,7 +21,7 @@ import net.minecraftforge.common.util.ForgeDirection;
import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.interfaces.tileentity.IDebugableTileEntity;
import gregtech.api.interfaces.tileentity.ITurnable;
-import gregtech.api.multitileentity.MultiTileEntityBlockRegistryInternal;
+import gregtech.api.multitileentity.MultiTileEntityBlock;
import gregtech.api.multitileentity.MultiTileEntityRegistry;
/*
@@ -169,8 +169,7 @@ public interface IMultiTileEntity extends ICoverable, ITurnable, IDebugableTileE
boolean recolourBlock(ForgeDirection side, byte aColor);
/** Adds to the Creative Tab. return false to prevent it from being added. */
- boolean getSubItems(MultiTileEntityBlockRegistryInternal block, Item item, CreativeTabs tab, List<ItemStack> list,
- short aID);
+ boolean getSubItems(MultiTileEntityBlock block, Item item, CreativeTabs tab, List<ItemStack> list, short aID);
ItemStack getPickBlock(MovingObjectPosition aTarget);
diff --git a/src/main/java/gregtech/api/multitileentity/machine/MultiTileBasicMachine.java b/src/main/java/gregtech/api/multitileentity/machine/MultiTileBasicMachine.java
index 4b348c2fec..0953b4905c 100644
--- a/src/main/java/gregtech/api/multitileentity/machine/MultiTileBasicMachine.java
+++ b/src/main/java/gregtech/api/multitileentity/machine/MultiTileBasicMachine.java
@@ -246,7 +246,7 @@ public abstract class MultiTileBasicMachine<P extends MuTEProcessingLogic<P>> ex
public void copyTextures() {
super.copyTextures();
final TileEntity tCanonicalTileEntity = MultiTileEntityRegistry
- .getCanonicalTileEntity(getMultiTileEntityRegistryID(), getMultiTileEntityID());
+ .getReferenceTileEntity(getMultiTileEntityRegistryID(), getMultiTileEntityID());
if (!(tCanonicalTileEntity instanceof MultiTileBasicMachine)) {
return;
}
diff --git a/src/main/java/gregtech/api/multitileentity/multiblock/base/Controller.java b/src/main/java/gregtech/api/multitileentity/multiblock/base/Controller.java
index 442d37a47a..552cf6d94e 100644
--- a/src/main/java/gregtech/api/multitileentity/multiblock/base/Controller.java
+++ b/src/main/java/gregtech/api/multitileentity/multiblock/base/Controller.java
@@ -4,11 +4,9 @@ import static gregtech.api.util.GT_Utility.moveMultipleItemStacks;
import static gregtech.common.misc.WirelessNetworkManager.strongCheckOrAddUser;
import static mcp.mobius.waila.api.SpecialChars.*;
-import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
-import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -16,6 +14,7 @@ import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -31,6 +30,7 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import org.jetbrains.annotations.NotNull;
import org.lwjgl.input.Keyboard;
import com.gtnewhorizon.structurelib.StructureLibAPI;
@@ -57,6 +57,7 @@ import gregtech.api.logic.FluidInventoryLogic;
import gregtech.api.logic.ItemInventoryLogic;
import gregtech.api.logic.MuTEProcessingLogic;
import gregtech.api.logic.PowerLogic;
+import gregtech.api.multitileentity.WeakTargetRef;
import gregtech.api.multitileentity.enums.MultiTileCasingPurpose;
import gregtech.api.multitileentity.interfaces.IMultiBlockController;
import gregtech.api.multitileentity.interfaces.IMultiBlockPart;
@@ -81,8 +82,8 @@ public abstract class Controller<C extends Controller<C, P>, P extends MuTEProce
protected static final int AUTO_OUTPUT_FREQUENCY_TICK = 20;
private static final Map<Integer, GT_Multiblock_Tooltip_Builder> tooltip = new ConcurrentHashMap<>();
- private final List<UpgradeCasing> upgradeCasings = new ArrayList<>();
- private final List<FunctionalCasing> functionalCasings = new ArrayList<>();
+ private final List<WeakTargetRef<UpgradeCasing>> upgradeCasings = new ArrayList<>();
+ private final List<WeakTargetRef<FunctionalCasing>> functionalCasings = new ArrayList<>();
protected BuildState buildState = new BuildState();
private boolean structureOkay = false, structureChanged = false;
@@ -104,20 +105,20 @@ public abstract class Controller<C extends Controller<C, P>, P extends MuTEProce
// A list of sides
// Each side has a list of parts that have a cover that need to be ticked
- protected List<LinkedList<WeakReference<IMultiBlockPart>>> registeredCoveredParts = Arrays.asList(
- new LinkedList<>(),
- new LinkedList<>(),
- new LinkedList<>(),
- new LinkedList<>(),
- new LinkedList<>(),
- new LinkedList<>());
+ protected List<List<WeakTargetRef<IMultiBlockPart>>> registeredCoveredParts = Arrays.asList(
+ new ArrayList<>(),
+ new ArrayList<>(),
+ new ArrayList<>(),
+ new ArrayList<>(),
+ new ArrayList<>(),
+ new ArrayList<>());
// A list for each purpose that a casing can register to, to be ticked
- protected List<LinkedList<WeakReference<IMultiBlockPart>>> registeredTickableParts = new ArrayList<>();
+ protected List<List<WeakTargetRef<IMultiBlockPart>>> registeredTickableParts = new ArrayList<>();
public Controller() {
for (int i = 0; i < MultiTileCasingPurpose.values().length; i++) {
- registeredTickableParts.add(new LinkedList<>());
+ registeredTickableParts.add(new ArrayList<>());
}
}
@@ -157,11 +158,13 @@ public abstract class Controller<C extends Controller<C, P>, P extends MuTEProce
}
protected void calculateTier() {
- double sum = 0;
- if (functionalCasings == null || functionalCasings.size() == 0) {
+ if (functionalCasings.size() == 0) {
return;
}
- for (FunctionalCasing casing : functionalCasings) {
+ double sum = 0;
+ for (WeakTargetRef<FunctionalCasing> casingRef : functionalCasings) {
+ final FunctionalCasing casing = casingRef.get();
+ if (casing == null) continue;
sum += casing.getPartTier() * casing.getPartModifier();
}
tier = (int) Math.min(Math.floor(sum / functionalCasings.size()), 14);
@@ -432,17 +435,17 @@ public abstract class Controller<C extends Controller<C, P>, P extends MuTEProce
public void registerCoveredPartOnSide(final ForgeDirection side, IMultiBlockPart part) {
if (side == ForgeDirection.UNKNOWN) return;
- final LinkedList<WeakReference<IMultiBlockPart>> registeredCovers = registeredCoveredParts.get(side.ordinal());
+ final List<WeakTargetRef<IMultiBlockPart>> registeredCovers = registeredCoveredParts.get(side.ordinal());
// TODO: Make sure that we're not already registered on this side
- registeredCovers.add(new WeakReference<>(part));
+ registeredCovers.add(new WeakTargetRef<>(part, true));
}
@Override
public void unregisterCoveredPartOnSide(final ForgeDirection side, IMultiBlockPart aPart) {
if (side == ForgeDirection.UNKNOWN) return;
- final LinkedList<WeakReference<IMultiBlockPart>> coveredParts = registeredCoveredParts.get(side.ordinal());
- final Iterator<WeakReference<IMultiBlockPart>> it = coveredParts.iterator();
+ final List<WeakTargetRef<IMultiBlockPart>> coveredParts = registeredCoveredParts.get(side.ordinal());
+ final Iterator<WeakTargetRef<IMultiBlockPart>> it = coveredParts.listIterator();
while (it.hasNext()) {
final IMultiBlockPart part = (it.next()).get();
if (part == null || part == aPart) it.remove();
@@ -451,8 +454,8 @@ public abstract class Controller<C extends Controller<C, P>, P extends MuTEProce
@Override
public void registerCaseWithPurpose(MultiTileCasingPurpose purpose, IMultiBlockPart part) {
- final LinkedList<WeakReference<IMultiBlockPart>> tickableParts = registeredTickableParts.get(purpose.ordinal());
- final Iterator<WeakReference<IMultiBlockPart>> it = tickableParts.iterator();
+ final List<WeakTargetRef<IMultiBlockPart>> tickableParts = registeredTickableParts.get(purpose.ordinal());
+ final Iterator<WeakTargetRef<IMultiBlockPart>> it = tickableParts.listIterator();
while (it.hasNext()) {
final IMultiBlockPart next = (it.next()).get();
if (next == null) {
@@ -461,13 +464,13 @@ public abstract class Controller<C extends Controller<C, P>, P extends MuTEProce
return;
}
}
- tickableParts.add(new WeakReference<>(part));
+ tickableParts.add(new WeakTargetRef<>(part, true));
}
@Override
public void unregisterCaseWithPurpose(MultiTileCasingPurpose purpose, IMultiBlockPart part) {
- final LinkedList<WeakReference<IMultiBlockPart>> tickableParts = registeredTickableParts.get(purpose.ordinal());
- final Iterator<WeakReference<IMultiBlockPart>> it = tickableParts.iterator();
+ final List<WeakTargetRef<IMultiBlockPart>> tickableParts = registeredTickableParts.get(purpose.ordinal());
+ final Iterator<WeakTargetRef<IMultiBlockPart>> it = tickableParts.listIterator();
while (it.hasNext()) {
final IMultiBlockPart next = (it.next()).get();
if (next == null || next == part) it.remove();
@@ -487,9 +490,8 @@ public abstract class Controller<C extends Controller<C, P>, P extends MuTEProce
private boolean tickCovers() {
for (final ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) {
// TODO: Tick controller covers, if any
- final LinkedList<WeakReference<IMultiBlockPart>> coveredParts = this.registeredCoveredParts
- .get(side.ordinal());
- final Iterator<WeakReference<IMultiBlockPart>> it = coveredParts.iterator();
+ final List<WeakTargetRef<IMultiBlockPart>> coveredParts = this.registeredCoveredParts.get(side.ordinal());
+ final Iterator<WeakTargetRef<IMultiBlockPart>> it = coveredParts.listIterator();
while (it.hasNext()) {
final IMultiBlockPart part = (it.next()).get();
if (part == null) {
@@ -505,9 +507,7 @@ public abstract class Controller<C extends Controller<C, P>, P extends MuTEProce
@Override
public void onTick(long tick, boolean isServerSide) {
- if (!tickCovers()) {
- return;
- }
+ tickCovers();
}
@Override
@@ -535,9 +535,9 @@ public abstract class Controller<C extends Controller<C, P>, P extends MuTEProce
protected void pushItemOutputs(long tick) {
if (tick % AUTO_OUTPUT_FREQUENCY_TICK != 0) return;
- final LinkedList<WeakReference<IMultiBlockPart>> registeredItemOutputs = registeredTickableParts
+ final List<WeakTargetRef<IMultiBlockPart>> registeredItemOutputs = registeredTickableParts
.get(MultiTileCasingPurpose.ItemOutput.ordinal());
- final Iterator<WeakReference<IMultiBlockPart>> itemOutputIterator = registeredItemOutputs.iterator();
+ final Iterator<WeakTargetRef<IMultiBlockPart>> itemOutputIterator = registeredItemOutputs.listIterator();
while (itemOutputIterator.hasNext()) {
final IMultiBlockPart part = (itemOutputIterator.next()).get();
if (part == null) {
@@ -567,7 +567,8 @@ public abstract class Controller<C extends Controller<C, P>, P extends MuTEProce
(byte) 1,
part.getSizeInventory());
for (int i = 0; i < part.getSizeInventory(); i++) {
- if (part.getStackInSlot(i) != null && part.getStackInSlot(i).stackSize <= 0) {
+ final ItemStack stack = part.getStackInSlot(i);
+ if (stack != null && stack.stackSize <= 0) {
part.setInventorySlotContents(i, null);
}
}
@@ -577,9 +578,9 @@ public abstract class Controller<C extends Controller<C, P>, P extends MuTEProce
protected void pushFluidOutputs(long tick) {
if (tick % AUTO_OUTPUT_FREQUENCY_TICK != 0) return;
- final LinkedList<WeakReference<IMultiBlockPart>> registeredFluidOutputs = registeredTickableParts
+ final List<WeakTargetRef<IMultiBlockPart>> registeredFluidOutputs = registeredTickableParts
.get(MultiTileCasingPurpose.FluidOutput.ordinal());
- final Iterator<WeakReference<IMultiBlockPart>> fluidOutputIterator = registeredFluidOutputs.iterator();
+ final Iterator<WeakTargetRef<IMultiBlockPart>> fluidOutputIterator = registeredFluidOutputs.listIterator();
while (fluidOutputIterator.hasNext()) {
final IMultiBlockPart part = (fluidOutputIterator.next()).get();
if (part == null) {
@@ -694,11 +695,11 @@ public abstract class Controller<C extends Controller<C, P>, P extends MuTEProce
}
public void registerSpecialCasings(MultiBlockPart part) {
- if (part instanceof UpgradeCasing) {
- upgradeCasings.add((UpgradeCasing) part);
+ if (part instanceof UpgradeCasing upgradeCasing) {
+ upgradeCasings.add(new WeakTargetRef<>(upgradeCasing, true));
}
- if (part instanceof FunctionalCasing) {
- functionalCasings.add((FunctionalCasing) part);
+ if (part instanceof FunctionalCasing functionalCasing) {
+ functionalCasings.add(new WeakTargetRef<>(functionalCasing, true));
}
}
@@ -715,12 +716,13 @@ public abstract class Controller<C extends Controller<C, P>, P extends MuTEProce
};
}
- @Nullable
- public FluidInventoryLogic getFluidLogic(@Nonnull InventoryType type, @Nullable UUID id) {
+ @Override
+ @Nonnull
+ public @NotNull FluidInventoryLogic getFluidLogic(@Nonnull InventoryType type, @Nullable UUID id) {
return switch (type) {
case Input -> controllerFluidInput.getInventoryLogic(id);
case Output -> controllerFluidOutput.getInventoryLogic(id);
- default -> null;
+ default -> throw new IllegalStateException("Unexpected value: " + type);
};
}
@@ -753,9 +755,8 @@ public abstract class Controller<C extends Controller<C, P>, P extends MuTEProce
FluidInventoryLogic input = controllerFluidInput.removeInventory(id);
FluidInventoryLogic output = controllerFluidOutput.removeInventory(id);
yield new FluidInventoryLogic(
- Arrays.asList(input, output)
- .stream()
- .map(inv -> inv.getInventory())
+ Stream.of(input, output)
+ .map(FluidInventoryLogic::getInventory)
.collect(Collectors.toList()));
}
};
@@ -794,12 +795,12 @@ public abstract class Controller<C extends Controller<C, P>, P extends MuTEProce
}
@Override
- @Nullable
+ @Nonnull
public ItemInventoryLogic getItemLogic(@Nonnull InventoryType type, @Nullable UUID id) {
return switch (type) {
case Input -> controllerItemInput.getInventoryLogic(id);
case Output -> controllerItemOutput.getInventoryLogic(id);
- default -> null;
+ default -> throw new IllegalStateException("Unexpected value: " + type);
};
}
diff --git a/src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlockPart.java b/src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlockPart.java
index 2b030899ed..5a16ed4b38 100644
--- a/src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlockPart.java
+++ b/src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlockPart.java
@@ -48,6 +48,7 @@ import gregtech.api.logic.NullPowerLogic;
import gregtech.api.logic.PowerLogic;
import gregtech.api.logic.interfaces.PowerLogicHost;
import gregtech.api.multitileentity.MultiTileEntityRegistry;
+import gregtech.api.multitileentity.WeakTargetRef;
import gregtech.api.multitileentity.base.NonTickableMultiTileEntity;
import gregtech.api.multitileentity.enums.MultiTileCasingPurpose;
import gregtech.api.multitileentity.interfaces.IMultiBlockController;
@@ -70,7 +71,9 @@ public abstract class MultiBlockPart extends NonTickableMultiTileEntity
protected Set<MultiTileCasingPurpose> registeredPurposes = new HashSet<>();
- protected ChunkCoordinates targetPosition = null;
+ protected final WeakTargetRef<IMultiBlockController> controller = new WeakTargetRef<>(
+ IMultiBlockController.class,
+ false);
protected int allowedModes = NOTHING; // BITMASK - Modes allowed for this part
protected int mode = 0; // Mode selected for this part
@@ -95,17 +98,17 @@ public abstract class MultiBlockPart extends NonTickableMultiTileEntity
return lockedInventory;
}
- public void setTarget(IMultiBlockController newTarget, int aAllowedModes) {
- final IMultiBlockController currentTarget = getTarget(false);
- if (currentTarget != null && currentTarget != newTarget) {
+ public void setTarget(IMultiBlockController newController, int aAllowedModes) {
+ final IMultiBlockController currentController = getTarget(false);
+ if (currentController != null && currentController != newController) {
for (MultiTileCasingPurpose purpose : registeredPurposes) {
unregisterPurpose(purpose);
}
}
- targetPosition = (newTarget == null ? null : newTarget.getCoords());
+
allowedModes = aAllowedModes;
- if (newTarget != null) {
- registerCovers(newTarget);
+ if (newController != currentController) {
+ registerCovers(newController);
registerPurposes();
}
}
@@ -156,26 +159,11 @@ public abstract class MultiBlockPart extends NonTickableMultiTileEntity
}
public IMultiBlockController getTarget(boolean aCheckValidity) {
- if (targetPosition == null) {
- return null;
- }
-
- if (!worldObj.blockExists(targetPosition.posX, targetPosition.posY, targetPosition.posZ)) {
- return null;
- }
- final TileEntity te = worldObj.getTileEntity(targetPosition.posX, targetPosition.posY, targetPosition.posZ);
- IMultiBlockController target = null;
- if (te instanceof IMultiBlockController targetFound) {
- target = targetFound;
- } else {
- targetPosition = null;
- return null;
- }
-
- if (aCheckValidity) {
- return target != null && target.checkStructure(false) ? target : null;
+ final IMultiBlockController res = controller.get();
+ if (res != null && aCheckValidity) {
+ return res.checkStructure(false) ? res : null;
}
- return target;
+ return res;
}
public void registerCovers(IMultiBlockController controller) {
@@ -232,10 +220,9 @@ public abstract class MultiBlockPart extends NonTickableMultiTileEntity
if (aNBT.hasKey(NBT.ALLOWED_MODES)) allowedModes = aNBT.getInteger(NBT.ALLOWED_MODES);
if (aNBT.hasKey(NBT.MODE)) setMode(aNBT.getByte(NBT.MODE));
if (aNBT.hasKey(NBT.TARGET)) {
- targetPosition = new ChunkCoordinates(
- aNBT.getInteger(NBT.TARGET_X),
- aNBT.getShort(NBT.TARGET_Y),
- aNBT.getInteger(NBT.TARGET_Z));
+ controller
+ .setPosition(aNBT.getInteger(NBT.TARGET_X), aNBT.getShort(NBT.TARGET_Y), aNBT.getInteger(NBT.TARGET_Z));
+ controller.setWorld(worldObj);
}
if (aNBT.hasKey(NBT.LOCKED_INVENTORY)) {
lockedInventory = UUID.fromString(aNBT.getString(NBT.LOCKED_INVENTORY));
@@ -255,27 +242,31 @@ public abstract class MultiBlockPart extends NonTickableMultiTileEntity
}
@Override
- public void writeMultiTileNBT(NBTTagCompound aNBT) {
- if (allowedModes != NOTHING) aNBT.setInteger(NBT.ALLOWED_MODES, allowedModes);
- if (mode != 0) aNBT.setInteger(NBT.MODE, mode);
- if (targetPosition != null) {
- aNBT.setBoolean(NBT.TARGET, true);
- aNBT.setInteger(NBT.TARGET_X, targetPosition.posX);
- aNBT.setShort(NBT.TARGET_Y, (short) targetPosition.posY);
- aNBT.setInteger(NBT.TARGET_Z, targetPosition.posZ);
+ public void writeMultiTileNBT(NBTTagCompound nbt) {
+ if (allowedModes != NOTHING) nbt.setInteger(NBT.ALLOWED_MODES, allowedModes);
+ if (mode != 0) nbt.setInteger(NBT.MODE, mode);
+
+ final ChunkCoordinates pos = controller.getPosition();
+ if (pos.posY >= 0) {
+ // Valid position
+ nbt.setBoolean(NBT.TARGET, true);
+ nbt.setInteger(NBT.TARGET_X, pos.posX);
+ nbt.setShort(NBT.TARGET_Y, (short) pos.posY);
+ nbt.setInteger(NBT.TARGET_Z, pos.posZ);
}
+
if (lockedInventory != null) {
- aNBT.setString(NBT.LOCKED_INVENTORY, lockedInventory.toString());
+ nbt.setString(NBT.LOCKED_INVENTORY, lockedInventory.toString());
}
if (mLockedInventoryIndex != 0) {
- aNBT.setInteger(NBT.LOCKED_INVENTORY_INDEX, mLockedInventoryIndex);
+ nbt.setInteger(NBT.LOCKED_INVENTORY_INDEX, mLockedInventoryIndex);
}
- configurationTank.writeToNBT(aNBT, NBT.LOCKED_FLUID);
+ configurationTank.writeToNBT(nbt, NBT.LOCKED_FLUID);
}
@Override
- public void setLockedInventoryIndex(int aIndex) {
- mLockedInventoryIndex = aIndex;
+ public void setLockedInventoryIndex(int index) {
+ mLockedInventoryIndex = index;
}
@Override
@@ -284,15 +275,8 @@ public abstract class MultiBlockPart extends NonTickableMultiTileEntity
}
@Override
- public void setTargetPos(ChunkCoordinates aTargetPos) {
- targetPosition = aTargetPos;
- IMultiBlockController target = getTarget(false);
- setTarget(target, allowedModes);
- }
-
- @Override
public ChunkCoordinates getTargetPos() {
- return targetPosition;
+ return controller.getPosition();
}
@Override
diff --git a/src/main/java/gregtech/api/multitileentity/multiblock/base/WallShareablePart.java b/src/main/java/gregtech/api/multitileentity/multiblock/base/WallShareablePart.java
index 7005e3a60a..238ce1eb2d 100644
--- a/src/main/java/gregtech/api/multitileentity/multiblock/base/WallShareablePart.java
+++ b/src/main/java/gregtech/api/multitileentity/multiblock/base/WallShareablePart.java
@@ -8,32 +8,34 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChunkCoordinates;
import net.minecraftforge.common.util.ForgeDirection;
+import gregtech.api.multitileentity.WeakTargetRef;
import gregtech.api.multitileentity.interfaces.IMultiBlockController;
public class WallShareablePart extends MultiBlockPart {
- protected List<ChunkCoordinates> targetPositions = new ArrayList<>();
+ protected List<WeakTargetRef<IMultiBlockController>> targets = new ArrayList<>();
@Override
- public void setTarget(IMultiBlockController aTarget, int aAllowedModes) {
- if (targetPositions.size() >= 1) {
- allowedModes = 0;
+ public void setTarget(IMultiBlockController newController, int allowedModes) {
+ if (targets.size() >= 1) {
+ this.allowedModes = 0;
setMode((byte) 0);
- targetPosition = null;
+ controller.invalidate();
} else {
- allowedModes = aAllowedModes;
+ this.allowedModes = allowedModes;
+ controller.setTarget(newController);
}
- if (aTarget == null) {
+ if (newController == null) {
return;
}
- targetPositions.add(aTarget.getCoords());
+ targets.add(new WeakTargetRef<IMultiBlockController>(IMultiBlockController.class, true));
}
@Override
public UUID getLockedInventory() {
- if (targetPositions.size() > 1) {
+ if (targets.size() > 1) {
return null;
}
return super.getLockedInventory();
@@ -41,11 +43,13 @@ public class WallShareablePart extends MultiBlockPart {
@Override
public IMultiBlockController getTarget(boolean aCheckValidity) {
- if (targetPositions.size() != 1) {
+ if (targets.size() != 1) {
return null;
}
- targetPosition = targetPositions.get(0);
+ controller.setTarget(
+ targets.get(0)
+ .get());
return super.getTarget(aCheckValidity);
}
@@ -56,8 +60,8 @@ public class WallShareablePart extends MultiBlockPart {
@Override
public boolean onBlockBroken() {
- for (final ChunkCoordinates coordinates : targetPositions) {
- IMultiBlockController target = getTarget(coordinates, false);
+ for (final WeakTargetRef<IMultiBlockController> tar : targets) {
+ IMultiBlockController target = getTarget(tar.getPosition(), false);
if (target == null) {
continue;
}
@@ -73,8 +77,8 @@ public class WallShareablePart extends MultiBlockPart {
if (te instanceof MultiBlockPart part) {
final IMultiBlockController tController = part.getTarget(false);
if (tController != null) tController.onStructureChange();
- } else if (te instanceof IMultiBlockController controller) {
- controller.onStructureChange();
+ } else if (te instanceof IMultiBlockController tController) {
+ tController.onStructureChange();
}
}
}
diff --git a/src/main/java/gregtech/api/multitileentity/multiblock/casing/UpgradeCasing.java b/src/main/java/gregtech/api/multitileentity/multiblock/casing/UpgradeCasing.java
index fb045557e4..566afcd770 100644
--- a/src/main/java/gregtech/api/multitileentity/multiblock/casing/UpgradeCasing.java
+++ b/src/main/java/gregtech/api/multitileentity/multiblock/casing/UpgradeCasing.java
@@ -16,8 +16,8 @@ public abstract class UpgradeCasing extends MultiBlockPart {
}
@Override
- public void setTarget(IMultiBlockController newTarget, int aAllowedModes) {
- super.setTarget(newTarget, aAllowedModes);
+ public void setTarget(IMultiBlockController newController, int aAllowedModes) {
+ super.setTarget(newController, aAllowedModes);
if (getTarget(false) != null) {
customWork(getTarget(false));
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();
}
diff --git a/src/main/java/gregtech/common/render/GT_MultiTile_Renderer.java b/src/main/java/gregtech/common/render/GT_MultiTile_Renderer.java
index b34c577834..c8c1d832b0 100644
--- a/src/main/java/gregtech/common/render/GT_MultiTile_Renderer.java
+++ b/src/main/java/gregtech/common/render/GT_MultiTile_Renderer.java
@@ -16,7 +16,7 @@ import gregtech.GT_Mod;
import gregtech.api.interfaces.ITexture;
import gregtech.api.logic.ModelRenderLogic;
import gregtech.api.logic.interfaces.ModelRenderLogicHost;
-import gregtech.api.multitileentity.MultiTileEntityBlockRegistryInternal;
+import gregtech.api.multitileentity.MultiTileEntityBlock;
import gregtech.api.multitileentity.MultiTileEntityClassContainer;
import gregtech.api.multitileentity.MultiTileEntityRegistry;
import gregtech.api.multitileentity.interfaces.IMultiBlockController;
@@ -35,7 +35,7 @@ public class GT_MultiTile_Renderer implements ISimpleBlockRenderingHandler {
@Override
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
- if (!(block instanceof MultiTileEntityBlockRegistryInternal muteBlock)) {
+ if (!(block instanceof MultiTileEntityBlock muteBlock)) {
return;
}
@@ -49,7 +49,8 @@ public class GT_MultiTile_Renderer implements ISimpleBlockRenderingHandler {
renderer.setRenderBoundsFromBlock(muteBlock);
for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) {
- ITexture texture = classContainer.referenceTileEntity.getTexture(side);
+ final ITexture texture = classContainer.getReferenceTileEntity()
+ .getTexture(side);
if (texture == null) continue;
switch (side) {
case DOWN -> renderYNegative(null, renderer, 0, 0, 0, block, texture, side);
diff --git a/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_RecipeFilter.java b/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_RecipeFilter.java
index 28cfc4e5a8..d446009ac7 100644
--- a/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_RecipeFilter.java
+++ b/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_RecipeFilter.java
@@ -14,6 +14,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.PacketBuffer;
+import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StatCollector;
import net.minecraftforge.common.util.Constants;
@@ -34,7 +35,6 @@ import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.interfaces.tileentity.RecipeMapWorkable;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_SpecialFilter;
-import gregtech.api.multitileentity.MultiTileEntityContainer;
import gregtech.api.multitileentity.MultiTileEntityItem;
import gregtech.api.recipe.RecipeMap;
import gregtech.api.render.TextureFactory;
@@ -90,10 +90,8 @@ public class GT_MetaTileEntity_RecipeFilter extends GT_MetaTileEntity_SpecialFil
}
private static RecipeMap<?> getMuTeRecipeMap(@NotNull ItemStack stack) {
- MultiTileEntityContainer muTeEntityContainer = GT_Loader_MultiTileEntities.MACHINE_REGISTRY
- .getNewTileEntityContainer(stack);
- if (muTeEntityContainer != null
- && muTeEntityContainer.tileEntity instanceof RecipeMapWorkable recipeMapWorkable) {
+ final TileEntity tileEntity = GT_Loader_MultiTileEntities.MACHINE_REGISTRY.getReferenceTileEntity(stack);
+ if (tileEntity instanceof RecipeMapWorkable recipeMapWorkable) {
return recipeMapWorkable.getRecipeMap();
}
return null;
diff --git a/src/main/java/gregtech/common/tileentities/machines/multiblock/DistillationTower.java b/src/main/java/gregtech/common/tileentities/machines/multiblock/DistillationTower.java
index a34246e045..9e76883a8b 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multiblock/DistillationTower.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multiblock/DistillationTower.java
@@ -7,6 +7,8 @@ import static gregtech.api.util.GT_StructureUtilityMuTE.ofMuTECasings;
import javax.annotation.Nonnull;
+import net.minecraft.util.StatCollector;
+
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import com.gtnewhorizon.structurelib.util.Vec3Impl;
@@ -20,7 +22,6 @@ import gregtech.api.multitileentity.multiblock.base.StackableController;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_StructureUtility;
import gregtech.common.tileentities.machines.multiblock.logic.DistillationTowerProcessingLogic;
-import net.minecraft.util.StatCollector;
public class DistillationTower extends StackableController<DistillationTower, DistillationTowerProcessingLogic> {
@@ -162,11 +163,11 @@ public class DistillationTower extends StackableController<DistillationTower, Di
return StatCollector.translateToLocal(getTileEntityName());
}
-// @Override
-// public String getLocalName() {
-// return "Distillation Tower";
-// }
-//
+ // @Override
+ // public String getLocalName() {
+ // return "Distillation Tower";
+ // }
+ //
@Override
protected String getStackableMiddle(int stackIndex) {
return stackIndex % 2 == 0 ? STACKABLE_MIDDLE_1 : STACKABLE_MIDDLE_2;
diff --git a/src/main/java/gregtech/loaders/preload/GT_Loader_MultiTileEntities.java b/src/main/java/gregtech/loaders/preload/GT_Loader_MultiTileEntities.java
index 81ce52d04f..c0946a7334 100644
--- a/src/main/java/gregtech/loaders/preload/GT_Loader_MultiTileEntities.java
+++ b/src/main/java/gregtech/loaders/preload/GT_Loader_MultiTileEntities.java
@@ -46,36 +46,42 @@ public class GT_Loader_MultiTileEntities implements Runnable {
public static final String MACHINE_REGISTRY_NAME = "gt.multitileentity.controllers";
// MuTE Registries
- public static final MultiTileEntityRegistry MACHINE_REGISTRY = new MultiTileEntityRegistry(MACHINE_REGISTRY_NAME);
- public static final MultiTileEntityRegistry CASING_REGISTRY = new MultiTileEntityRegistry(CASING_REGISTRY_NAME);
+ public static final MultiTileEntityRegistry MACHINE_REGISTRY = new MultiTileEntityRegistry(
+ MACHINE_REGISTRY_NAME,
+ new MultiTileEntityBlock(Material.iron).modID("gregtech")
+ .materialName("machine")
+ .tool("wrench")
+ .sound(Block.soundTypeMetal)
+ .opaque(true)
+ .normalCube(true)
+ .register());
+ public static final MultiTileEntityRegistry CASING_REGISTRY = new MultiTileEntityRegistry(
+ CASING_REGISTRY_NAME,
+ new MultiTileEntityBlock(Material.iron).modID("gregtech")
+ .materialName("casing")
+ .tool("wrench")
+ .sound(Block.soundTypeMetal)
+ .opaque(true)
+ .normalCube(true)
+ .register());
public static final MultiTileEntityRegistry COMPONENT_CASING_REGISTRY = new MultiTileEntityRegistry(
- COMPONENT_CASING_REGISTRY_NAME);
+ COMPONENT_CASING_REGISTRY_NAME,
+ new MultiTileEntityBlock(Material.iron).modID("gregtech")
+ .materialName("componentCasing")
+ .tool("wrench")
+ .sound(Block.soundTypeMetal)
+ .opaque(true)
+ .normalCube(true)
+ .register());
public static final MultiTileEntityRegistry UPGRADE_CASING_REGISTRY = new MultiTileEntityRegistry(
- UPGRADE_CASING_REGISTRY_NAME);
-
- // MuTE Blocks
- public static final MultiTileEntityBlock MACHINE_BLOCK = new MultiTileEntityBlock(Material.iron).modID("gregtech")
- .materialName("machine")
- .tool("wrench")
- .sound(Block.soundTypeMetal)
- .opaque(true)
- .normalCube(true)
- .register();
- public static final MultiTileEntityBlock CASING_BLOCK = new MultiTileEntityBlock(Material.iron).modID("gregtech")
- .materialName("casing")
- .tool("wrench")
- .sound(Block.soundTypeMetal)
- .opaque(true)
- .normalCube(true)
- .register();
- public static final MultiTileEntityBlock COMPONENT_CASING_BLOCK = new MultiTileEntityBlock(Material.iron)
- .modID("gregtech")
- .materialName("componentCasing")
- .tool("wrench")
- .sound(Block.soundTypeMetal)
- .opaque(true)
- .normalCube(true)
- .register();
+ UPGRADE_CASING_REGISTRY_NAME,
+ new MultiTileEntityBlock(Material.iron).modID("gregtech")
+ .materialName("upgradeCasing")
+ .tool("wrench")
+ .sound(Block.soundTypeMetal)
+ .opaque(true)
+ .normalCube(true)
+ .register());
@Override
public void run() {
@@ -90,7 +96,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
MACHINE_REGISTRY.create(1000, Macerator.class)
.name("Large Macerator")
.category("Multiblock Controller")
- .setBlock(MACHINE_BLOCK)
.material(Materials.Iron)
.textureFolder("macerator")
.tankCapacity(128000L)
@@ -100,7 +105,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
MACHINE_REGISTRY.create(0, CokeOven.class)
.name("Coke Oven")
.category("MultiblockController")
- .setBlock(MACHINE_BLOCK)
.textureFolder("cokeOven")
.inputInventorySize(1)
.outputInventorySize(1)
@@ -108,7 +112,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
MACHINE_REGISTRY.create(1, AdvChemicalProcessor.class)
.name("Advanced Chemical Processor")
.category("MultiblockController")
- .setBlock(MACHINE_BLOCK)
// TODO: Texture
.textureFolder("advChemicalProcessor")
.inputInventorySize(16)
@@ -118,7 +121,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
MACHINE_REGISTRY.create(2, DistillationTower.class)
.name("Distillation Tower")
.category("MultiblockController")
- .setBlock(MACHINE_BLOCK)
.textureFolder("distillationTower")
.inputInventorySize(16)
.outputInventorySize(16)
@@ -127,7 +129,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
MACHINE_REGISTRY.create(3, LayeredCokeBattery.class)
.name("Layered Coke Battery")
.category("Multiblock Controller")
- .setBlock(MACHINE_BLOCK)
.material(Materials.Iron)
.textureFolder("macerator")
.tankCapacity(128000L)
@@ -137,7 +138,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
MACHINE_REGISTRY.create(4, LaserEngraver.class)
.name("Big Laser Engraver")
.category("Multiblock Controller")
- .setBlock(MACHINE_BLOCK)
.textureFolder("BigLaserEngraver")
.inputInventorySize(16)
.outputInventorySize(16)
@@ -150,68 +150,57 @@ public class GT_Loader_MultiTileEntities implements Runnable {
CASING_REGISTRY.create(CokeOven.getId(), WallShareablePart.class)
.name("Coke Oven Bricks")
.category("MultiBlock Casing")
- .setBlock(CASING_BLOCK)
.textureFolder("cokeOven")
.register();
CASING_REGISTRY.create(Chemical.getId(), BasicCasing.class)
.name("Chemical Casing")
.category("MultiBlock Casing")
- .setBlock(CASING_BLOCK)
.textureFolder("advChemicalProcessor")
.register();
CASING_REGISTRY.create(Distillation.getId(), BasicCasing.class)
.name("Distillation Casing")
.category("MultiBlock Casing")
- .setBlock(CASING_BLOCK)
.textureFolder("distillationTower")
.register();
CASING_REGISTRY.create(18000, BasicCasing.class)
.name("Test Casing")
.category("Multiblock Casing")
- .setBlock(CASING_BLOCK)
.material(Materials.Cobalt)
.textureFolder("macerator")
.register();
CASING_REGISTRY.create(LaserEngraver.getId(), BasicCasing.class)
.name("Laser Engraver Casing")
.category("MultiBlock Casing")
- .setBlock(CASING_BLOCK)
.textureFolder("BigLaserEngraver")
.register();
CASING_REGISTRY.create(Mirror.getId(), BasicCasing.class)
.name("Mirror")
.category("MultiBlock Casing")
- .setBlock(CASING_BLOCK)
.textureFolder("Laserblock")
.register();
CASING_REGISTRY.create(BlackLaserEngraverCasing.getId(), BasicCasing.class)
.name("Black Laser Engraver Casing")
.category("MultiBlock Casing")
- .setBlock(CASING_BLOCK)
.textureFolder("BlackLaserEngraver")
.register();
CASING_REGISTRY.create(LaserEngraverUpgrade1.getId(), BasicCasing.class)
.name("Crude Laser Engraving Casing")
.category("MultiBlock Casing")
- .setBlock(CASING_BLOCK)
.textureFolder("laserengraverupgrade1")
.register();
CASING_REGISTRY.create(LaserEngraverUpgrade2.getId(), BasicCasing.class)
.name("Advanced Laser Engraving Casing")
.category("MultiBlock Casing")
- .setBlock(CASING_BLOCK)
.textureFolder("laserengraverupgrade2")
.register();
CASING_REGISTRY.create(LaserEngraverUpgrade3.getId(), BasicCasing.class)
.name("Ultimate Laser Engraving Casing")
.category("MultiBlock Casing")
- .setBlock(CASING_BLOCK)
.textureFolder("laserengraverupgrade3")
.register();
CASING_REGISTRY.create(LaserEngraverUpgrade4.getId(), BasicCasing.class)
.name("Superb Laser Engraving Casing")
.category("MultiBlock Casing")
- .setBlock(CASING_BLOCK)
.textureFolder("laserengraverupgrade4")
.register();
@@ -231,7 +220,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(ULV_Inventory.getId(), Inventory.class)
.name("Inventory Upgrade ULV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("inventory")
.upgradeInventorySize(1)
.tier(0)
@@ -239,7 +227,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(LV_Inventory.getId(), Inventory.class)
.name("Inventory Upgrade LV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("inventory")
.upgradeInventorySize(4)
.tier(1)
@@ -247,7 +234,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(MV_Inventory.getId(), Inventory.class)
.name("Inventory Upgrade MV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("inventory")
.upgradeInventorySize(8)
.tier(2)
@@ -255,7 +241,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(HV_Inventory.getId(), Inventory.class)
.name("Inventory Upgrade HV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("inventory")
.upgradeInventorySize(16)
.tier(3)
@@ -263,7 +248,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(EV_Inventory.getId(), Inventory.class)
.name("Inventory Upgrade EV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("inventory")
.upgradeInventorySize(32)
.tier(4)
@@ -271,7 +255,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(IV_Inventory.getId(), Inventory.class)
.name("Inventory Upgrade IV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("inventory")
.upgradeInventorySize(64)
.tier(5)
@@ -279,7 +262,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(LuV_Inventory.getId(), Inventory.class)
.name("Inventory Upgrade LuV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("inventory")
.upgradeInventorySize(128)
.tier(6)
@@ -287,7 +269,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(ZPM_Inventory.getId(), Inventory.class)
.name("Inventory Upgrade ZPM")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("inventory")
.upgradeInventorySize(256)
.tier(7)
@@ -295,7 +276,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(UV_Inventory.getId(), Inventory.class)
.name("Inventory Upgrade UV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("inventory")
.upgradeInventorySize(256)
.tier(8)
@@ -303,7 +283,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(UHV_Inventory.getId(), Inventory.class)
.name("Inventory Upgrade UHV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("inventory")
.upgradeInventorySize(256)
.tier(9)
@@ -311,7 +290,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(UEV_Inventory.getId(), Inventory.class)
.name("Inventory Upgrade UEV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("inventory")
.upgradeInventorySize(256)
.tier(10)
@@ -319,7 +297,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(UIV_Inventory.getId(), Inventory.class)
.name("Inventory Upgrade UIV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("inventory")
.upgradeInventorySize(256)
.tier(11)
@@ -327,7 +304,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(UMV_Inventory.getId(), Inventory.class)
.name("Inventory Upgrade UMV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("inventory")
.upgradeInventorySize(256)
.tier(12)
@@ -335,7 +311,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(UXV_Inventory.getId(), Inventory.class)
.name("Inventory Upgrade UXV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("inventory")
.upgradeInventorySize(256)
.tier(13)
@@ -343,7 +318,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(MAX_Inventory.getId(), Inventory.class)
.name("Inventory Upgrade MAX")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("inventory")
.upgradeInventorySize(256)
.tier(14)
@@ -352,7 +326,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(ULV_Tank.getId(), Tank.class)
.name("Tank Upgrade ULV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("tank")
.upgradeTankCapacity(8_000L)
.upgradeTankCount(1)
@@ -361,7 +334,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(LV_Tank.getId(), Tank.class)
.name("Tank Upgrade LV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("tank")
.upgradeTankCapacity(16_000L)
.upgradeTankCount(2)
@@ -370,7 +342,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(MV_Tank.getId(), Tank.class)
.name("Tank Upgrade MV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("tank")
.upgradeTankCapacity(32_000L)
.upgradeTankCount(4)
@@ -379,7 +350,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(HV_Tank.getId(), Tank.class)
.name("Tank Upgrade HV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("tank")
.upgradeTankCapacity(64_000L)
.upgradeTankCount(6)
@@ -388,7 +358,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(EV_Tank.getId(), Tank.class)
.name("Tank Upgrade EV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("tank")
.upgradeTankCapacity(128_000L)
.upgradeTankCount(8)
@@ -397,7 +366,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(IV_Tank.getId(), Tank.class)
.name("Tank Upgrade IV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("tank")
.upgradeTankCapacity(256_000L)
.upgradeTankCount(10)
@@ -406,7 +374,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(LuV_Tank.getId(), Tank.class)
.name("Tank Upgrade LuV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("tank")
.upgradeTankCapacity(512_000L)
.upgradeTankCount(12)
@@ -415,7 +382,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(ZPM_Tank.getId(), Tank.class)
.name("Tank Upgrade ZPM")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("tank")
.upgradeTankCapacity(1_024_000L)
.upgradeTankCount(14)
@@ -424,7 +390,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(UV_Tank.getId(), Tank.class)
.name("Tank Upgrade UV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("tank")
.upgradeTankCapacity(2_048_000L)
.upgradeTankCount(16)
@@ -433,7 +398,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(UHV_Tank.getId(), Tank.class)
.name("Tank Upgrade UHV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("tank")
.upgradeTankCapacity(4_096_000L)
.upgradeTankCount(16)
@@ -442,7 +406,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(UEV_Tank.getId(), Tank.class)
.name("Tank Upgrade UEV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("tank")
.upgradeTankCapacity(8_192_000L)
.upgradeTankCount(16)
@@ -451,7 +414,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(UIV_Tank.getId(), Tank.class)
.name("Tank Upgrade UIV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("tank")
.upgradeTankCapacity(16_384_000L)
.upgradeTankCount(16)
@@ -460,7 +422,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(UMV_Tank.getId(), Tank.class)
.name("Tank Upgrade UMV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("tank")
.upgradeTankCapacity(32_768_000L)
.upgradeTankCount(16)
@@ -469,7 +430,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(UXV_Tank.getId(), Tank.class)
.name("Tank Upgrade UXV")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("tank")
.upgradeTankCapacity(65_536_000L)
.upgradeTankCount(16)
@@ -478,7 +438,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(MAX_Tank.getId(), Tank.class)
.name("Tank Upgrade MAX")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("tank")
.upgradeTankCapacity(131_072_000L)
.upgradeTankCount(16)
@@ -488,7 +447,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(Amp_4.getId(), Ampere.class)
.name("Amperage Upgrade (4 A)")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("amperage")
.upgradeAmperage(4)
.tier(1)
@@ -496,7 +454,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(Amp_16.getId(), Ampere.class)
.name("Amperage Upgrade (16 A)")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("amperage")
.upgradeAmperage(16)
.tier(2)
@@ -504,7 +461,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(Amp_64.getId(), Ampere.class)
.name("Amperage Upgrade (64 A)")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("amperage")
.upgradeAmperage(64)
.tier(3)
@@ -512,7 +468,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(Amp_256.getId(), Ampere.class)
.name("Amperage Upgrade (256 A)")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("amperage")
.upgradeAmperage(256)
.tier(4)
@@ -520,7 +475,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(Amp_1_024.getId(), Ampere.class)
.name("Amperage Upgrade (1,024 A)")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("amperage")
.upgradeAmperage(1_024)
.tier(5)
@@ -528,7 +482,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(Amp_4_096.getId(), Ampere.class)
.name("Amperage Upgrade (4,096 A)")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("amperage")
.upgradeAmperage(4_096)
.tier(6)
@@ -536,7 +489,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(Amp_16_384.getId(), Ampere.class)
.name("Amperage Upgrade (16,384 A)")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("amperage")
.upgradeAmperage(16_384)
.tier(7)
@@ -544,7 +496,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(Amp_65_536.getId(), Ampere.class)
.name("Amperage Upgrade (65,536 A)")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("amperage")
.upgradeAmperage(65_536)
.tier(8)
@@ -552,7 +503,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(Amp_262_144.getId(), Ampere.class)
.name("Amperage Upgrade (262,144 A)")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("amperage")
.upgradeAmperage(262_144)
.tier(9)
@@ -560,7 +510,6 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(Amp_1_048_576.getId(), Ampere.class)
.name("Amperage Upgrade (1,048,576 A)")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("amperage")
.upgradeAmperage(1_048_576)
.tier(10)
@@ -569,21 +518,18 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(Cleanroom.getId(), Cleanroom.class)
.name("Cleanroom Upgrade")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("cleanroom")
.tier(1)
.register();
UPGRADE_CASING_REGISTRY.create(Laser.getId(), Laser.class)
.name("Laser Upgrade")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("laser")
.tier(8)
.register();
UPGRADE_CASING_REGISTRY.create(Wireless.getId(), Wireless.class)
.name("Wireless Upgrade")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("wireless")
.tier(11)
.register();
@@ -591,35 +537,30 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(Heater_Prototype.getId(), Heater.class)
.name("Prototype Heater Upgrade")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("heater")
.tier(1)
.register();
UPGRADE_CASING_REGISTRY.create(Heater_IndustrialGrade.getId(), Heater.class)
.name("Industrial-Grade Heater Upgrade")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("heater")
.tier(4)
.register();
UPGRADE_CASING_REGISTRY.create(Heater_NextGen.getId(), Heater.class)
.name("Next-Gen Heater Upgrade")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("heater")
.tier(7)
.register();
UPGRADE_CASING_REGISTRY.create(Heater_Omnipotent.getId(), Heater.class)
.name("Omnipotent Heater Upgrade")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("heater")
.tier(10)
.register();
UPGRADE_CASING_REGISTRY.create(Heater_OmegaType.getId(), Heater.class)
.name("OMEGA-Type Heater Upgrade")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("heater")
.tier(12)
.register();
@@ -627,35 +568,30 @@ public class GT_Loader_MultiTileEntities implements Runnable {
UPGRADE_CASING_REGISTRY.create(Insulator_Prototype.getId(), Insulator.class)
.name("Prototype Insulator Upgrade")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("insulator")
.tier(1)
.register();
UPGRADE_CASING_REGISTRY.create(Insulator_IndustrialGrade.getId(), Insulator.class)
.name("Industrial-Grade Insulator Upgrade")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("insulator")
.tier(4)
.register();
UPGRADE_CASING_REGISTRY.create(Insulator_NextGen.getId(), Insulator.class)
.name("Next-Gen Insulator Upgrade")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("insulator")
.tier(7)
.register();
UPGRADE_CASING_REGISTRY.create(Insulator_Omnipotent.getId(), Insulator.class)
.name("Omnipotent Insulator Upgrade")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("insulator")
.tier(10)
.register();
UPGRADE_CASING_REGISTRY.create(Insulator_OmegaType.getId(), Insulator.class)
.name("OMEGA-Type Insulator Upgrade")
.category("MultiBlock Upgrade Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("insulator")
.tier(12)
.register();
@@ -666,98 +602,84 @@ public class GT_Loader_MultiTileEntities implements Runnable {
.name("Motor Casing LV")
.tier(1)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("motor")
.register();
COMPONENT_CASING_REGISTRY.create(MV_Motor.getId(), Motor.class)
.name("Motor Casing MV")
.tier(2)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("motor")
.register();
COMPONENT_CASING_REGISTRY.create(HV_Motor.getId(), Motor.class)
.name("Motor Casing HV")
.tier(3)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("motor")
.register();
COMPONENT_CASING_REGISTRY.create(EV_Motor.getId(), Motor.class)
.name("Motor Casing EV")
.tier(4)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("motor")
.register();
COMPONENT_CASING_REGISTRY.create(IV_Motor.getId(), Motor.class)
.name("Motor Casing IV")
.tier(5)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("motor")
.register();
COMPONENT_CASING_REGISTRY.create(LuV_Motor.getId(), Motor.class)
.name("Motor Casing LuV")
.tier(6)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("motor")
.register();
COMPONENT_CASING_REGISTRY.create(ZPM_Motor.getId(), Motor.class)
.name("Motor Casing ZPM")
.tier(7)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("motor")
.register();
COMPONENT_CASING_REGISTRY.create(UV_Motor.getId(), Motor.class)
.name("Motor Casing UV")
.tier(8)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("motor")
.register();
COMPONENT_CASING_REGISTRY.create(UHV_Motor.getId(), Motor.class)
.name("Motor Casing UHV")
.tier(9)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("motor")
.register();
COMPONENT_CASING_REGISTRY.create(UEV_Motor.getId(), Motor.class)
.name("Motor Casing UEV")
.tier(10)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("motor")
.register();
COMPONENT_CASING_REGISTRY.create(UIV_Motor.getId(), Motor.class)
.name("Motor Casing UIV")
.tier(11)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("motor")
.register();
COMPONENT_CASING_REGISTRY.create(UMV_Motor.getId(), Motor.class)
.name("Motor Casing UMV")
.tier(12)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("motor")
.register();
COMPONENT_CASING_REGISTRY.create(UXV_Motor.getId(), Motor.class)
.name("Motor Casing UXV")
.tier(13)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("motor")
.register();
COMPONENT_CASING_REGISTRY.create(MAX_Motor.getId(), Motor.class)
.name("Motor Casing MAX")
.tier(14)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("motor")
.register();
}
@@ -767,105 +689,84 @@ public class GT_Loader_MultiTileEntities implements Runnable {
.name("Pump Casing LV")
.tier(1)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("pump")
.register();
COMPONENT_CASING_REGISTRY.create(MV_Pump.getId(), Pump.class)
.name("Pump Casing MV")
.tier(2)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("pump")
.register();
COMPONENT_CASING_REGISTRY.create(HV_Pump.getId(), Pump.class)
.name("Pump Casing HV")
.tier(3)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("pump")
.register();
COMPONENT_CASING_REGISTRY.create(EV_Pump.getId(), Pump.class)
.name("Pump Casing EV")
.tier(4)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("pump")
.register();
COMPONENT_CASING_REGISTRY.create(IV_Pump.getId(), Pump.class)
.name("Pump Casing IV")
.tier(5)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
- .textureFolder("pump")
- .register();
- COMPONENT_CASING_REGISTRY.create(LuV_Pump.getId(), Pump.class)
- .name("Pump Casing LuV")
- .tier(6)
- .category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("pump")
.register();
COMPONENT_CASING_REGISTRY.create(LuV_Pump.getId(), Pump.class)
.name("Pump Casing LuV")
.tier(6)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("pump")
.register();
COMPONENT_CASING_REGISTRY.create(ZPM_Pump.getId(), Pump.class)
.name("Pump Casing ZPM")
.tier(7)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("pump")
.register();
COMPONENT_CASING_REGISTRY.create(UV_Pump.getId(), Pump.class)
.name("Pump Casing UV")
.tier(8)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("pump")
.register();
COMPONENT_CASING_REGISTRY.create(UHV_Pump.getId(), Pump.class)
.name("Pump Casing UHV")
.tier(9)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("pump")
.register();
COMPONENT_CASING_REGISTRY.create(UEV_Pump.getId(), Pump.class)
.name("Pump Casing UEV")
.tier(10)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("pump")
.register();
COMPONENT_CASING_REGISTRY.create(UIV_Pump.getId(), Pump.class)
.name("Pump Casing UIV")
.tier(11)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("pump")
.register();
COMPONENT_CASING_REGISTRY.create(UMV_Pump.getId(), Pump.class)
.name("Pump Casing UMV")
.tier(12)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("pump")
.register();
COMPONENT_CASING_REGISTRY.create(UXV_Pump.getId(), Pump.class)
.name("Pump Casing UXV")
.tier(13)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("pump")
.register();
COMPONENT_CASING_REGISTRY.create(MAX_Pump.getId(), Pump.class)
.name("Pump Casing MAX")
.tier(14)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("pump")
.register();
}
@@ -875,98 +776,84 @@ public class GT_Loader_MultiTileEntities implements Runnable {
.name("Piston Casing LV")
.tier(1)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("piston")
.register();
COMPONENT_CASING_REGISTRY.create(MV_Piston.getId(), Piston.class)
.name("Piston Casing MV")
.tier(2)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("piston")
.register();
COMPONENT_CASING_REGISTRY.create(HV_Piston.getId(), Piston.class)
.name("Piston Casing HV")
.tier(3)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("piston")
.register();
COMPONENT_CASING_REGISTRY.create(EV_Piston.getId(), Piston.class)
.name("Piston Casing EV")
.tier(4)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("piston")
.register();
COMPONENT_CASING_REGISTRY.create(IV_Piston.getId(), Piston.class)
.name("Piston Casing IV")
.tier(5)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("piston")
.register();
COMPONENT_CASING_REGISTRY.create(LuV_Piston.getId(), Piston.class)
.name("Piston Casing LuV")
.tier(6)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("piston")
.register();
COMPONENT_CASING_REGISTRY.create(ZPM_Piston.getId(), Piston.class)
.name("Piston Casing ZPM")
.tier(7)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("piston")
.register();
COMPONENT_CASING_REGISTRY.create(UV_Piston.getId(), Piston.class)
.name("Piston Casing UV")
.tier(8)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("piston")
.register();
COMPONENT_CASING_REGISTRY.create(UHV_Piston.getId(), Piston.class)
.name("Piston Casing UHV")
.tier(9)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("piston")
.register();
COMPONENT_CASING_REGISTRY.create(UEV_Piston.getId(), Piston.class)
.name("Piston Casing UEV")
.tier(10)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("piston")
.register();
COMPONENT_CASING_REGISTRY.create(UIV_Piston.getId(), Piston.class)
.name("Piston Casing UIV")
.tier(11)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("piston")
.register();
COMPONENT_CASING_REGISTRY.create(UMV_Piston.getId(), Piston.class)
.name("Piston Casing UMV")
.tier(12)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("piston")
.register();
COMPONENT_CASING_REGISTRY.create(UXV_Piston.getId(), Piston.class)
.name("Piston Casing UXV")
.tier(13)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("piston")
.register();
COMPONENT_CASING_REGISTRY.create(MAX_Piston.getId(), Piston.class)
.name("Piston Casing MAX")
.tier(14)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("piston")
.register();
}
@@ -976,77 +863,66 @@ public class GT_Loader_MultiTileEntities implements Runnable {
.name("Conveyor Casing LV")
.tier(1)
.category("MultiBlock Structural Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("conveyor")
.register();
COMPONENT_CASING_REGISTRY.create(MV_Conveyor.getId(), Conveyor.class)
.name("Conveyor Casing MV")
.tier(2)
.category("MultiBlock Structural Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("conveyor")
.register();
COMPONENT_CASING_REGISTRY.create(HV_Conveyor.getId(), Conveyor.class)
.name("Conveyor Casing HV")
.tier(3)
.category("MultiBlock Structural Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("conveyor")
.register();
COMPONENT_CASING_REGISTRY.create(EV_Conveyor.getId(), Conveyor.class)
.name("Conveyor Casing EV")
.tier(4)
.category("MultiBlock Structural Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("conveyor")
.register();
COMPONENT_CASING_REGISTRY.create(IV_Conveyor.getId(), Conveyor.class)
.name("Conveyor Casing IV")
.tier(5)
.category("MultiBlock Structural Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("conveyor")
.register();
COMPONENT_CASING_REGISTRY.create(LuV_Conveyor.getId(), Conveyor.class)
.name("Conveyor Casing LuV")
.tier(6)
.category("MultiBlock Structural Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("conveyor")
.register();
COMPONENT_CASING_REGISTRY.create(ZPM_Conveyor.getId(), Conveyor.class)
.name("Conveyor Casing ZPM")
.tier(7)
.category("MultiBlock Structural Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("conveyor")
.register();
COMPONENT_CASING_REGISTRY.create(UV_Conveyor.getId(), Conveyor.class)
.name("Conveyor Casing UV")
.tier(8)
.category("MultiBlock Structural Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("conveyor")
.register();
COMPONENT_CASING_REGISTRY.create(UHV_Conveyor.getId(), Conveyor.class)
.name("Conveyor Casing UHV")
.tier(9)
.category("MultiBlock Structural Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("conveyor")
.register();
COMPONENT_CASING_REGISTRY.create(UEV_Conveyor.getId(), Conveyor.class)
.name("Conveyor Casing UEV")
.tier(10)
.category("MultiBlock Structural Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("conveyor")
.register();
COMPONENT_CASING_REGISTRY.create(UIV_Conveyor.getId(), Conveyor.class)
.name("Conveyor Casing UIV")
.tier(11)
.category("MultiBlock Structural Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("conveyor")
.register();
}
@@ -1056,98 +932,84 @@ public class GT_Loader_MultiTileEntities implements Runnable {
.name("Robot Arm Casing LV")
.tier(1)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("robotArm")
.register();
COMPONENT_CASING_REGISTRY.create(MV_RobotArm.getId(), RobotArm.class)
.name("Robot Arm Casing MV")
.tier(2)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("robotArm")
.register();
COMPONENT_CASING_REGISTRY.create(HV_RobotArm.getId(), RobotArm.class)
.name("Robot Arm Casing HV")
.tier(3)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("robotArm")
.register();
COMPONENT_CASING_REGISTRY.create(EV_RobotArm.getId(), RobotArm.class)
.name("Robot Arm Casing EV")
.tier(4)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("robotArm")
.register();
COMPONENT_CASING_REGISTRY.create(IV_RobotArm.getId(), RobotArm.class)
.name("Robot Arm Casing IV")
.tier(5)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("robotArm")
.register();
COMPONENT_CASING_REGISTRY.create(LuV_RobotArm.getId(), RobotArm.class)
.name("Robot Arm Casing LuV")
.tier(6)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("robotArm")
.register();
COMPONENT_CASING_REGISTRY.create(ZPM_RobotArm.getId(), RobotArm.class)
.name("Robot Arm Casing ZPM")
.tier(7)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("robotArm")
.register();
COMPONENT_CASING_REGISTRY.create(UV_RobotArm.getId(), RobotArm.class)
.name("Robot Arm Casing UV")
.tier(8)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("robotArm")
.register();
COMPONENT_CASING_REGISTRY.create(UHV_RobotArm.getId(), RobotArm.class)
.name("Robot Arm Casing UHV")
.tier(9)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("robotArm")
.register();
COMPONENT_CASING_REGISTRY.create(UEV_RobotArm.getId(), RobotArm.class)
.name("Robot Arm Casing UEV")
.tier(10)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("robotArm")
.register();
COMPONENT_CASING_REGISTRY.create(UIV_RobotArm.getId(), RobotArm.class)
.name("Robot Arm Casing UIV")
.tier(11)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("robotArm")
.register();
COMPONENT_CASING_REGISTRY.create(UMV_RobotArm.getId(), RobotArm.class)
.name("Robot Arm Casing UMV")
.tier(12)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("robotArm")
.register();
COMPONENT_CASING_REGISTRY.create(UXV_RobotArm.getId(), RobotArm.class)
.name("Robot Arm Casing UXV")
.tier(13)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("robotArm")
.register();
COMPONENT_CASING_REGISTRY.create(MAX_RobotArm.getId(), RobotArm.class)
.name("Robot Arm Casing MAX")
.tier(14)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("robotArm")
.register();
}
@@ -1157,98 +1019,84 @@ public class GT_Loader_MultiTileEntities implements Runnable {
.name("Sensor Casing LV")
.tier(1)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("sensor")
.register();
COMPONENT_CASING_REGISTRY.create(MV_Sensor.getId(), Sensor.class)
.name("Sensor Casing MV")
.tier(2)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("sensor")
.register();
COMPONENT_CASING_REGISTRY.create(HV_Sensor.getId(), Sensor.class)
.name("Sensor Casing HV")
.tier(3)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("sensor")
.register();
COMPONENT_CASING_REGISTRY.create(EV_Sensor.getId(), Sensor.class)
.name("Sensor Casing EV")
.tier(4)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("sensor")
.register();
COMPONENT_CASING_REGISTRY.create(IV_Sensor.getId(), Sensor.class)
.name("Sensor Casing IV")
.tier(5)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("sensor")
.register();
COMPONENT_CASING_REGISTRY.create(LuV_Sensor.getId(), Sensor.class)
.name("Sensor Casing LuV")
.tier(6)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("sensor")
.register();
COMPONENT_CASING_REGISTRY.create(ZPM_Sensor.getId(), Sensor.class)
.name("Sensor Casing ZPM")
.tier(7)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("sensor")
.register();
COMPONENT_CASING_REGISTRY.create(UV_Sensor.getId(), Sensor.class)
.name("Sensor Casing UV")
.tier(8)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("sensor")
.register();
COMPONENT_CASING_REGISTRY.create(UHV_Sensor.getId(), Sensor.class)
.name("Sensor Casing UHV")
.tier(9)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("sensor")
.register();
COMPONENT_CASING_REGISTRY.create(UEV_Sensor.getId(), Sensor.class)
.name("Sensor Casing UEV")
.tier(10)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("sensor")
.register();
COMPONENT_CASING_REGISTRY.create(UIV_Sensor.getId(), Sensor.class)
.name("Sensor Casing UIV")
.tier(11)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("sensor")
.register();
COMPONENT_CASING_REGISTRY.create(UMV_Sensor.getId(), Sensor.class)
.name("Sensor Casing UMV")
.tier(12)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("sensor")
.register();
COMPONENT_CASING_REGISTRY.create(UXV_Sensor.getId(), Sensor.class)
.name("Sensor Casing UXV")
.tier(13)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("sensor")
.register();
COMPONENT_CASING_REGISTRY.create(MAX_Sensor.getId(), Sensor.class)
.name("Sensor Casing MAX")
.tier(14)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("sensor")
.register();
}
@@ -1258,98 +1106,84 @@ public class GT_Loader_MultiTileEntities implements Runnable {
.name("Emitter Casing LV")
.tier(1)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("emitter")
.register();
COMPONENT_CASING_REGISTRY.create(MV_Emitter.getId(), Emitter.class)
.name("Emitter Casing MV")
.tier(2)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("emitter")
.register();
COMPONENT_CASING_REGISTRY.create(HV_Emitter.getId(), Emitter.class)
.name("Emitter Casing HV")
.tier(3)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("emitter")
.register();
COMPONENT_CASING_REGISTRY.create(EV_Emitter.getId(), Emitter.class)
.name("Emitter Casing EV")
.tier(4)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("emitter")
.register();
COMPONENT_CASING_REGISTRY.create(IV_Emitter.getId(), Emitter.class)
.name("Emitter Casing IV")
.tier(5)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("emitter")
.register();
COMPONENT_CASING_REGISTRY.create(LuV_Emitter.getId(), Emitter.class)
.name("Emitter Casing LuV")
.tier(6)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("emitter")
.register();
COMPONENT_CASING_REGISTRY.create(ZPM_Emitter.getId(), Emitter.class)
.name("Emitter Casing ZPM")
.tier(7)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("emitter")
.register();
COMPONENT_CASING_REGISTRY.create(UV_Emitter.getId(), Emitter.class)
.name("Emitter Casing UV")
.tier(8)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("emitter")
.register();
COMPONENT_CASING_REGISTRY.create(UHV_Emitter.getId(), Emitter.class)
.name("Emitter Casing UHV")
.tier(9)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("emitter")
.register();
COMPONENT_CASING_REGISTRY.create(UEV_Emitter.getId(), Emitter.class)
.name("Emitter Casing UEV")
.tier(10)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("emitter")
.register();
COMPONENT_CASING_REGISTRY.create(UIV_Emitter.getId(), Emitter.class)
.name("Emitter Casing UIV")
.tier(11)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("emitter")
.register();
COMPONENT_CASING_REGISTRY.create(UMV_Emitter.getId(), Emitter.class)
.name("Emitter Casing UMV")
.tier(12)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("emitter")
.register();
COMPONENT_CASING_REGISTRY.create(UXV_Emitter.getId(), Emitter.class)
.name("Emitter Casing UXV")
.tier(13)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("emitter")
.register();
COMPONENT_CASING_REGISTRY.create(MAX_Emitter.getId(), Emitter.class)
.name("Emitter Casing MAX")
.tier(14)
.category("MultiBlock Functional Casing")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("emitter")
.register();
}
@@ -1359,98 +1193,84 @@ public class GT_Loader_MultiTileEntities implements Runnable {
.name("Field Generator LV")
.tier(1)
.category("Multiblock Energy Field")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("fieldGenerator")
.register();
COMPONENT_CASING_REGISTRY.create(MV_FieldGenerator.getId(), FieldGenerator.class)
.name("Field Generator MV")
.tier(2)
.category("Multiblock Energy Field")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("fieldGenerator")
.register();
COMPONENT_CASING_REGISTRY.create(HV_FieldGenerator.getId(), FieldGenerator.class)
.name("Field Generator HV")
.tier(3)
.category("Multiblock Energy Field")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("fieldGenerator")
.register();
COMPONENT_CASING_REGISTRY.create(EV_FieldGenerator.getId(), FieldGenerator.class)
.name("Field Generator EV")
.tier(4)
.category("Multiblock Energy Field")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("fieldGenerator")
.register();
COMPONENT_CASING_REGISTRY.create(IV_FieldGenerator.getId(), FieldGenerator.class)
.name("Field Generator IV")
.tier(5)
.category("Multiblock Energy Field")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("fieldGenerator")
.register();
COMPONENT_CASING_REGISTRY.create(LuV_FieldGenerator.getId(), FieldGenerator.class)
.name("Field Generator LuV")
.tier(6)
.category("Multiblock Energy Field")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("fieldGenerator")
.register();
COMPONENT_CASING_REGISTRY.create(ZPM_FieldGenerator.getId(), FieldGenerator.class)
.name("Field Generator ZPM")
.tier(7)
.category("Multiblock Energy Field")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("fieldGenerator")
.register();
COMPONENT_CASING_REGISTRY.create(UV_FieldGenerator.getId(), FieldGenerator.class)
.name("Field Generator UV")
.tier(8)
.category("Multiblock Energy Field")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("fieldGenerator")
.register();
COMPONENT_CASING_REGISTRY.create(UHV_FieldGenerator.getId(), FieldGenerator.class)
.name("Field Generator UHV")
.tier(9)
.category("Multiblock Energy Field")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("fieldGenerator")
.register();
COMPONENT_CASING_REGISTRY.create(UEV_FieldGenerator.getId(), FieldGenerator.class)
.name("Field Generator UEV")
.tier(10)
.category("Multiblock Energy Field")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("fieldGenerator")
.register();
COMPONENT_CASING_REGISTRY.create(UIV_FieldGenerator.getId(), FieldGenerator.class)
.name("Field Generator UIV")
.tier(11)
.category("Multiblock Energy Field")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("fieldGenerator")
.register();
COMPONENT_CASING_REGISTRY.create(UMV_FieldGenerator.getId(), FieldGenerator.class)
.name("Field Generator UMV")
.tier(12)
.category("Multiblock Energy Field")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("fieldGenerator")
.register();
COMPONENT_CASING_REGISTRY.create(UXV_FieldGenerator.getId(), FieldGenerator.class)
.name("Field Generator UXV")
.tier(13)
.category("Multiblock Energy Field")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("fieldGenerator")
.register();
COMPONENT_CASING_REGISTRY.create(MAX_FieldGenerator.getId(), FieldGenerator.class)
.name("Field Generator MAX")
.tier(14)
.category("Multiblock Energy Field")
- .setBlock(COMPONENT_CASING_BLOCK)
.textureFolder("fieldGenerator")
.register();
}