From 5af8cf2f678f84c4cf47f5eafdd48eab778f88a8 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 7 Dec 2025 12:18:00 +1100 Subject: [PATCH 01/41] implement new machine trait construction for steam machines (rebased) --- .../gtceu/api/machine/MetaMachine.java | 22 ++++++++----- .../api/machine/steam/SimpleSteamMachine.java | 18 ++++------ .../api/machine/steam/SteamBoilerMachine.java | 13 +++----- .../gtceu/api/machine/steam/SteamMachine.java | 18 +++++++--- .../machine/steam/SteamWorkableMachine.java | 22 ++++++------- .../electric/WorldAcceleratorMachine.java | 5 +++ .../electric/ActiveTransformerMachine.java | 5 +++ .../electric/AssemblyLineMachine.java | 5 +++ .../steam/SteamLiquidBoilerMachine.java | 12 ++++--- .../machine/steam/SteamMinerMachine.java | 33 ++++++------------- .../machine/steam/SteamSolarBoiler.java | 19 ++++++++--- .../steam/SteamSolidBoilerMachine.java | 12 +++---- .../machine/storage/CreativeTankMachine.java | 5 +++ 13 files changed, 104 insertions(+), 85 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index bed3c3cc006..8d9bf751a68 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -80,6 +80,7 @@ import java.util.function.Consumer; import java.util.function.Predicate; +import javax.annotation.OverridingMethodsMustInvokeSuper; import javax.annotation.ParametersAreNonnullByDefault; import static com.gregtechceu.gtceu.api.item.tool.ToolHelper.getBehaviorsTag; @@ -119,6 +120,8 @@ public class MetaMachine implements ISyncManaged, IToolable, ITickSubscription, private final List serverTicks; private final List waitingToAdd; + public static abstract class MetaMachineTraits {} + public MetaMachine(IMachineBlockEntity holder) { this.holder = holder; this.coverContainer = new MachineCoverContainer(this); @@ -199,6 +202,7 @@ public boolean isInValid() { return holder.self().isRemoved(); } + @OverridingMethodsMustInvokeSuper public void onUnload() { traits.forEach(MachineTrait::onMachineUnLoad); coverContainer.onUnload(); @@ -208,6 +212,7 @@ public void onUnload() { serverTicks.clear(); } + @OverridingMethodsMustInvokeSuper public void onLoad() { traits.forEach(MachineTrait::onMachineLoad); coverContainer.onLoad(); @@ -293,7 +298,7 @@ private void executeTick() { * animations will be played */ @Override - public final Pair onToolClick(Set<@NotNull GTToolType> toolType, ItemStack itemStack, + public final Pair onToolClick(Set toolType, ItemStack itemStack, UseOnContext context) { // the side hit from the machine grid var playerIn = context.getPlayer(); @@ -475,7 +480,7 @@ public void clearInventory(IItemHandlerModifiable inventory) { ItemStack stackInSlot = inventory.getStackInSlot(i); if (!stackInSlot.isEmpty()) { inventory.setStackInSlot(i, ItemStack.EMPTY); - Block.popResource(getLevel(), getPos(), stackInSlot); + Block.popResource(Objects.requireNonNull(getLevel()), getPos(), stackInSlot); } } } @@ -551,7 +556,7 @@ public boolean canSetIoOnSide(@Nullable Direction direction) { return !hasFrontFacing() || getFrontFacing() != direction; } - public static @NotNull Direction getFrontFacing(@Nullable MetaMachine machine) { + public static Direction getFrontFacing(@Nullable MetaMachine machine) { return machine == null ? Direction.NORTH : machine.getFrontFacing(); } @@ -588,7 +593,8 @@ public void setFrontFacing(Direction facing) { var blockState = getBlockState(); if (isFacingValid(facing)) { - getLevel().setBlockAndUpdate(getPos(), blockState.setValue(getRotationState().property, facing)); + Objects.requireNonNull(getLevel()).setBlockAndUpdate(getPos(), + blockState.setValue(getRotationState().property, facing)); } if (getLevel() != null && !getLevel().isClientSide) { @@ -596,7 +602,7 @@ public void setFrontFacing(Direction facing) { } } - public static @NotNull Direction getUpwardFacing(@Nullable MetaMachine machine) { + public static Direction getUpwardFacing(@Nullable MetaMachine machine) { return machine == null || !machine.allowExtendedFacing() ? Direction.NORTH : machine.getBlockState().getValue(GTBlockStateProperties.UPWARDS_FACING); } @@ -606,7 +612,7 @@ public Direction getUpwardsFacing() { Direction.NORTH; } - public void setUpwardsFacing(@NotNull Direction upwardsFacing) { + public void setUpwardsFacing(Direction upwardsFacing) { if (!getDefinition().isAllowExtendedFacing()) { return; } @@ -617,7 +623,7 @@ public void setUpwardsFacing(@NotNull Direction upwardsFacing) { var blockState = getBlockState(); if (blockState.getBlock() instanceof MetaMachineBlock && blockState.getValue(GTBlockStateProperties.UPWARDS_FACING) != upwardsFacing) { - getLevel().setBlockAndUpdate(getPos(), + Objects.requireNonNull(getLevel()).setBlockAndUpdate(getPos(), blockState.setValue(GTBlockStateProperties.UPWARDS_FACING, upwardsFacing)); if (getLevel() != null && !getLevel().isClientSide) { notifyBlockUpdate(); @@ -685,8 +691,6 @@ public int getOutputSignal(@Nullable Direction side) { @Override public boolean canConnectRedstone(Direction side) { - if (side == null) return false; - // For some reason, Minecraft requests the output signal from the opposite side... CoverBehavior cover = getCoverContainer().getCoverAtSide(side); if (cover == null) return false; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java index 634ee83fded..f819df47994 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java @@ -12,7 +12,6 @@ import com.gregtechceu.gtceu.api.machine.feature.IExhaustVentMachine; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; -import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; @@ -32,7 +31,6 @@ import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.player.Player; -import net.minecraftforge.fluids.FluidType; import com.google.common.collect.Tables; import lombok.Getter; @@ -56,10 +54,10 @@ public class SimpleSteamMachine extends SteamWorkableMachine implements IExhaust @SaveField private boolean needsVenting; - public SimpleSteamMachine(IMachineBlockEntity holder, boolean isHighPressure, Object... args) { - super(holder, isHighPressure, args); - this.importItems = createImportItemHandler(args); - this.exportItems = createExportItemHandler(args); + public SimpleSteamMachine(IMachineBlockEntity holder, boolean isHighPressure) { + super(holder, isHighPressure, new SteamWorkableMachineTraits()); + this.importItems = createImportItemHandler(); + this.exportItems = createExportItemHandler(); MachineRenderState renderState = getRenderState(); if (renderState.hasProperty(GTMachineModelProperties.VENT_DIRECTION)) { @@ -72,16 +70,12 @@ public SimpleSteamMachine(IMachineBlockEntity holder, boolean isHighPressure, Ob // ***** Initialization *****// ////////////////////////////////////// - @Override - protected NotifiableFluidTank createSteamTank(Object... args) { - return new NotifiableFluidTank(this, 1, 16 * FluidType.BUCKET_VOLUME, IO.IN); - } - protected NotifiableItemStackHandler createImportItemHandler(@SuppressWarnings("unused") Object... args) { + protected NotifiableItemStackHandler createImportItemHandler() { return new NotifiableItemStackHandler(this, getRecipeType().getMaxInputs(ItemRecipeCapability.CAP), IO.IN); } - protected NotifiableItemStackHandler createExportItemHandler(@SuppressWarnings("unused") Object... args) { + protected NotifiableItemStackHandler createExportItemHandler() { return new NotifiableItemStackHandler(this, getRecipeType().getMaxOutputs(ItemRecipeCapability.CAP), IO.OUT); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java index 9401567fb01..719e1fda6e0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java @@ -85,9 +85,9 @@ public abstract class SteamBoilerMachine extends SteamWorkableMachine @Nullable protected ISubscription steamTankSubs; - public SteamBoilerMachine(IMachineBlockEntity holder, boolean isHighPressure, Object... args) { - super(holder, isHighPressure, args); - this.waterTank = createWaterTank(args); + public SteamBoilerMachine(IMachineBlockEntity holder, boolean isHighPressure) { + super(holder, isHighPressure, new SteamWorkableMachineTraits()); + this.waterTank = createWaterTank(); this.waterTank.setFilter(fluid -> fluid.getFluid().is(GTMaterials.Water.getFluidTag())); } @@ -95,12 +95,7 @@ public SteamBoilerMachine(IMachineBlockEntity holder, boolean isHighPressure, Ob // ***** Initialization *****// ////////////////////////////////////// - @Override - protected NotifiableFluidTank createSteamTank(Object... args) { - return new NotifiableFluidTank(this, 1, 16 * FluidType.BUCKET_VOLUME, IO.OUT); - } - - protected NotifiableFluidTank createWaterTank(@SuppressWarnings("unused") Object... args) { + protected NotifiableFluidTank createWaterTank() { return new NotifiableFluidTank(this, 1, 16 * FluidType.BUCKET_VOLUME, IO.IN); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java index 55644ab2f39..1aa2956397c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.machine.steam; +import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; @@ -10,6 +11,7 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraftforge.fluids.FluidType; import lombok.Getter; @@ -26,11 +28,19 @@ public abstract class SteamMachine extends MetaMachine implements ITieredMachine @SaveField public final NotifiableFluidTank steamTank; - public SteamMachine(IMachineBlockEntity holder, boolean isHighPressure, Object... args) { + public static abstract class SteamMachineTraits extends MetaMachineTraits { + + public NotifiableFluidTank steamTank(SteamMachine machine) { + NotifiableFluidTank tank = new NotifiableFluidTank(machine, 1, 16 * FluidType.BUCKET_VOLUME, IO.IN); + tank.setFilter(f -> f.getFluid().is(GTMaterials.Steam.getFluidTag())); + return tank; + } + } + + public SteamMachine(IMachineBlockEntity holder, boolean isHighPressure, SteamMachineTraits traits) { super(holder); this.isHighPressure = isHighPressure; - this.steamTank = createSteamTank(args); - this.steamTank.setFilter(fluidStack -> fluidStack.getFluid().is(GTMaterials.Steam.getFluidTag())); + this.steamTank = traits.steamTank(this); } ////////////////////////////////////// @@ -41,6 +51,4 @@ public SteamMachine(IMachineBlockEntity holder, boolean isHighPressure, Object.. public int getTier() { return isHighPressure ? 1 : 0; } - - protected abstract NotifiableFluidTank createSteamTank(Object... args); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java index 304cd9039f5..680fd6910c1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java @@ -10,10 +10,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.feature.IMufflableMachine; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; -import com.gregtechceu.gtceu.api.machine.trait.IRecipeHandlerTrait; -import com.gregtechceu.gtceu.api.machine.trait.MachineTrait; -import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; -import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.machine.trait.*; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.syncsystem.annotations.RerenderOnChanged; import com.gregtechceu.gtceu.syncsystem.annotations.SaveField; @@ -75,11 +72,18 @@ public abstract class SteamWorkableMachine extends SteamMachine protected final Map, List>>> capabilitiesFlat; protected final List traitSubscriptions; - public SteamWorkableMachine(IMachineBlockEntity holder, boolean isHighPressure, Object... args) { - super(holder, isHighPressure, args); + public static class SteamWorkableMachineTraits extends SteamMachineTraits { + + public RecipeLogic recipeLogic(SteamWorkableMachine machine) { + return new RecipeLogic(machine); + } + } + + public SteamWorkableMachine(IMachineBlockEntity holder, boolean isHighPressure, SteamWorkableMachineTraits traits) { + super(holder, isHighPressure, traits); this.recipeTypes = getDefinition().getRecipeTypes(); this.activeRecipeType = 0; - this.recipeLogic = createRecipeLogic(args); + this.recipeLogic = traits.recipeLogic(this); this.capabilitiesProxy = new EnumMap<>(IO.class); this.capabilitiesFlat = new EnumMap<>(IO.class); this.traitSubscriptions = new ArrayList<>(); @@ -109,10 +113,6 @@ public void onLoad() { } } - protected RecipeLogic createRecipeLogic(@SuppressWarnings("unused") Object... args) { - return new RecipeLogic(this); - } - @Override public void onUnload() { super.onUnload(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java index 88bacf93b0c..e9206cf537c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java @@ -21,6 +21,7 @@ import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; @@ -47,6 +48,10 @@ import java.util.Map; import java.util.Set; +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault public class WorldAcceleratorMachine extends TieredEnergyMachine implements IControllable { private static final Map> blacklistedClasses = new Object2ObjectOpenHashMap<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java index 2ad53abea17..884520870f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java @@ -24,6 +24,7 @@ import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import com.lowdragmc.lowdraglib.gui.widget.*; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.Block; @@ -36,8 +37,12 @@ import java.util.Comparator; import java.util.List; +import javax.annotation.ParametersAreNonnullByDefault; + import static com.gregtechceu.gtceu.api.pattern.Predicates.abilities; +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault public class ActiveTransformerMachine extends WorkableElectricMultiblockMachine implements IControllable, IExplosionMachine, IFancyUIMachine, IDisplayUIMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java index cc47ad07ef6..3943cdb19ab 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java @@ -22,6 +22,7 @@ import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.syncsystem.annotations.SaveField; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.fluids.FluidStack; @@ -33,6 +34,10 @@ import java.util.*; +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault public class AssemblyLineMachine extends WorkableElectricMultiblockMachine { @Accessors(fluent = true) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java index 00f09889c02..be3e9eebef5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java @@ -32,6 +32,7 @@ import java.util.Arrays; import java.util.Collections; +import java.util.Objects; import javax.annotation.ParametersAreNonnullByDefault; @@ -44,9 +45,9 @@ public class SteamLiquidBoilerMachine extends SteamBoilerMachine { @SaveField public final NotifiableFluidTank fuelTank; - public SteamLiquidBoilerMachine(IMachineBlockEntity holder, boolean isHighPressure, Object... args) { - super(holder, isHighPressure, args); - this.fuelTank = createFuelTank(args).setFilter(fluid -> FUEL_CACHE.computeIfAbsent(fluid.getFluid(), f -> { + public SteamLiquidBoilerMachine(IMachineBlockEntity holder, boolean isHighPressure) { + super(holder, isHighPressure); + this.fuelTank = createFuelTank().setFilter(fluid -> FUEL_CACHE.computeIfAbsent(fluid.getFluid(), f -> { if (isRemote()) return true; return recipeLogic.getRecipeManager().getAllRecipesFor(getRecipeType()).stream().anyMatch(recipe -> { var list = recipe.inputs.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()); @@ -63,7 +64,7 @@ public SteamLiquidBoilerMachine(IMachineBlockEntity holder, boolean isHighPressu // ***** Initialization *****// ////////////////////////////////////// - protected NotifiableFluidTank createFuelTank(Object... args) { + protected NotifiableFluidTank createFuelTank() { return new NotifiableFluidTank(this, 1, 16 * FluidType.BUCKET_VOLUME, IO.IN); } @@ -86,7 +87,8 @@ public ModularUI createUI(Player entityPlayer) { protected void randomDisplayTick(RandomSource random, float x, float y, float z) { super.randomDisplayTick(random, x, y, z); if (random.nextFloat() < 0.3F) { - getLevel().addParticle(ParticleTypes.LAVA, x + random.nextFloat(), y, z + random.nextFloat(), 0.0F, 0.0F, + Objects.requireNonNull(getLevel()).addParticle(ParticleTypes.LAVA, x + random.nextFloat(), y, + z + random.nextFloat(), 0.0F, 0.0F, 0.0F); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java index e9837c67c13..2d9c91cb0ef 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java @@ -11,7 +11,6 @@ import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.*; import com.gregtechceu.gtceu.api.machine.steam.SteamWorkableMachine; -import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.common.item.PortableScannerBehavior; @@ -35,7 +34,6 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.Block; -import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.capability.IFluidHandler; import lombok.Getter; @@ -70,41 +68,30 @@ public class SteamMinerMachine extends SteamWorkableMachine implements IMiner, I public SteamMinerMachine(IMachineBlockEntity holder, boolean isHighPressure, int speed, int maximumRadius, int fortune, int energyPerTick) { - super(holder, isHighPressure, fortune, speed, maximumRadius); + super(holder, isHighPressure, new SteamWorkableMachineTraits() { + + @Override + public RecipeLogic recipeLogic(SteamWorkableMachine machine) { + return new SteamMinerLogic(machine, fortune, speed, maximumRadius); + } + }); + this.inventorySize = 4; this.energyPerTick = energyPerTick; this.importItems = createImportItemHandler(); this.exportItems = createExportItemHandler(); } - ////////////////////////////////////// - // ***** Initialization ******// - ////////////////////////////////////// - @Override - protected @NotNull RecipeLogic createRecipeLogic(Object... args) { - if (args.length > 2 && args[args.length - 3] instanceof Integer fortune && - args[args.length - 2] instanceof Integer speed && args[args.length - 1] instanceof Integer maxRadius) { - return new SteamMinerLogic(this, fortune, speed, maxRadius); - } - throw new IllegalArgumentException( - "MinerMachine need args [fortune, speed, maximumRadius] for initialization"); - } - @Override public SteamMinerLogic getRecipeLogic() { return (SteamMinerLogic) super.getRecipeLogic(); } - @Override - protected NotifiableFluidTank createSteamTank(Object... args) { - return new NotifiableFluidTank(this, 1, 16 * FluidType.BUCKET_VOLUME, IO.IN); - } - - protected NotifiableItemStackHandler createImportItemHandler(@SuppressWarnings("unused") Object... args) { + protected NotifiableItemStackHandler createImportItemHandler() { return new NotifiableItemStackHandler(this, 0, IO.IN); } - protected NotifiableItemStackHandler createExportItemHandler(@SuppressWarnings("unused") Object... args) { + protected NotifiableItemStackHandler createExportItemHandler() { return new NotifiableItemStackHandler(this, inventorySize, IO.OUT); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java index 6cfd39650b2..726d9b352b1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java @@ -10,16 +10,23 @@ import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import com.lowdragmc.lowdraglib.gui.widget.ProgressWidget; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Player; import org.jetbrains.annotations.NotNull; +import java.util.Objects; + +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault public class SteamSolarBoiler extends SteamBoilerMachine { - public SteamSolarBoiler(IMachineBlockEntity holder, boolean isHighPressure, Object... args) { - super(holder, isHighPressure, args); + public SteamSolarBoiler(IMachineBlockEntity holder, boolean isHighPressure) { + super(holder, isHighPressure); } @Override @@ -36,13 +43,13 @@ protected long getBaseSteamOutput() { @Override protected void updateSteamSubscription() { if (temperatureSubs == null) { - temperatureSubs = subscribeServerTick(temperatureSubs, this::updateCurrentTemperature); + temperatureSubs = subscribeServerTick(null, this::updateCurrentTemperature); } } @Override protected void updateCurrentTemperature() { - if (GTUtil.canSeeSunClearly(getLevel(), getPos())) { + if (GTUtil.canSeeSunClearly(Objects.requireNonNull(getLevel()), getPos())) { recipeLogic.setStatus(RecipeLogic.Status.WORKING); } else { recipeLogic.setStatus(RecipeLogic.Status.IDLE); @@ -63,7 +70,9 @@ protected int getCoolDownRate() { @Override public ModularUI createUI(Player entityPlayer) { return super.createUI(entityPlayer) - .widget(new ProgressWidget(() -> GTUtil.canSeeSunClearly(getLevel(), getPos()) ? 1.0 : 0.0, 114, 44, 20, + .widget(new ProgressWidget( + () -> GTUtil.canSeeSunClearly(Objects.requireNonNull(getLevel()), getPos()) ? 1.0 : 0.0, 114, + 44, 20, 20) .setProgressTexture( GuiTextures.PROGRESS_BAR_SOLAR_STEAM.get(isHighPressure).getSubTexture(0, 0, 1, 0.5), diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java index b630bb4a8ff..6b67a0fa41d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java @@ -43,9 +43,9 @@ public class SteamSolidBoilerMachine extends SteamBoilerMachine implements IMach @SaveField public final NotifiableItemStackHandler fuelHandler, ashHandler; - public SteamSolidBoilerMachine(IMachineBlockEntity holder, boolean isHighPressure, Object... args) { - super(holder, isHighPressure, args); - this.fuelHandler = createFuelHandler(args).setFilter(itemStack -> { + public SteamSolidBoilerMachine(IMachineBlockEntity holder, boolean isHighPressure) { + super(holder, isHighPressure); + this.fuelHandler = createFuelHandler().setFilter(itemStack -> { if (FluidUtil.getFluidContained(itemStack).isPresent()) { return false; } @@ -61,18 +61,18 @@ public SteamSolidBoilerMachine(IMachineBlockEntity holder, boolean isHighPressur }); }); }); - this.ashHandler = createAshHandler(args); + this.ashHandler = createAshHandler(); } ////////////////////////////////////// // ***** Initialization *****// ////////////////////////////////////// - protected NotifiableItemStackHandler createFuelHandler(Object... args) { + protected NotifiableItemStackHandler createFuelHandler() { return new NotifiableItemStackHandler(this, 1, IO.IN, IO.IN); } - protected NotifiableItemStackHandler createAshHandler(Object... args) { + protected NotifiableItemStackHandler createAshHandler() { return new NotifiableItemStackHandler(this, 1, IO.OUT, IO.OUT); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java index a0eb96fd468..f17bd1f4b49 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java @@ -13,6 +13,7 @@ import com.lowdragmc.lowdraglib.gui.texture.TextTexture; import com.lowdragmc.lowdraglib.gui.widget.*; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.InteractionHand; @@ -29,6 +30,10 @@ import lombok.Getter; import org.jetbrains.annotations.NotNull; +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault public class CreativeTankMachine extends QuantumTankMachine { @Getter From be89a96d9f7b7245c8ebe9771b3e9b52d4e23def Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 7 Dec 2025 13:21:33 +1100 Subject: [PATCH 02/41] port all the singleblocks (rebased --- .../api/machine/SimpleGeneratorMachine.java | 21 ++--- .../api/machine/SimpleTieredMachine.java | 50 ++++++------ .../api/machine/TieredEnergyMachine.java | 25 ++++-- .../api/machine/WorkableTieredMachine.java | 77 +++++++++++-------- .../machine/electric/AirScrubberMachine.java | 4 +- .../electric/BatteryBufferMachine.java | 55 ++++++------- .../machine/electric/BlockBreakerMachine.java | 2 +- .../machine/electric/ChargerMachine.java | 52 ++++++------- .../machine/electric/ConverterMachine.java | 17 ++-- .../machine/electric/FisherMachine.java | 2 +- .../electric/ItemCollectorMachine.java | 2 +- .../common/machine/electric/MinerMachine.java | 48 +++++------- .../common/machine/electric/PumpMachine.java | 8 +- .../machine/electric/RockCrusherMachine.java | 4 +- .../machine/electric/TransformerMachine.java | 31 ++++---- .../electric/WorldAcceleratorMachine.java | 15 ++-- .../electric/MultiblockTankMachine.java | 15 +--- .../common/machine/storage/BufferMachine.java | 14 ++-- .../machine/storage/CreativeChestMachine.java | 2 +- .../machine/storage/CreativeTankMachine.java | 2 +- .../machine/storage/QuantumChestMachine.java | 8 +- .../machine/storage/QuantumTankMachine.java | 8 +- .../gtceu/utils/DummyMachineBlockEntity.java | 5 +- .../gtceu/utils/DummyRecipeLogicMachine.java | 5 +- 24 files changed, 236 insertions(+), 236 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java index d61cafe6651..a7db187225b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; import com.gregtechceu.gtceu.api.machine.feature.IEnvironmentalHazardEmitter; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; -import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; @@ -44,27 +43,21 @@ public class SimpleGeneratorMachine extends WorkableTieredMachine private final float hazardStrengthPerOperation; public SimpleGeneratorMachine(IMachineBlockEntity holder, int tier, - float hazardStrengthPerOperation, Int2IntFunction tankScalingFunction, - Object... args) { - super(holder, tier, tankScalingFunction, args); + float hazardStrengthPerOperation, Int2IntFunction tankScalingFunction) { + super(holder, tier, tankScalingFunction); + + energyContainer.setSideOutputCondition(side -> !hasFrontFacing() || side == getFrontFacing()); this.hazardStrengthPerOperation = hazardStrengthPerOperation; } - public SimpleGeneratorMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction, - Object... args) { - this(holder, tier, 0.25f, tankScalingFunction, args); + public SimpleGeneratorMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction) { + this(holder, tier, 0.25f, tankScalingFunction); } + ////////////////////////////////////// // ***** Initialization ******// ////////////////////////////////////// - @Override - protected NotifiableEnergyContainer createEnergyContainer(Object... args) { - var energyContainer = super.createEnergyContainer(args); - energyContainer.setSideOutputCondition(side -> !hasFrontFacing() || side == getFrontFacing()); - return energyContainer; - } - @Override protected boolean isEnergyEmitter() { return true; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java index 41bb3cbe453..4f773b7a814 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java @@ -105,40 +105,42 @@ public class SimpleTieredMachine extends WorkableTieredMachine @Nullable protected ISubscription exportItemSubs, exportFluidSubs, energySubs; - public SimpleTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction, - Object... args) { - super(holder, tier, tankScalingFunction, args); - this.outputFacingItems = hasFrontFacing() ? getFrontFacing().getOpposite() : Direction.UP; - this.outputFacingFluids = outputFacingItems; - this.chargerInventory = createChargerItemHandler(args); - this.circuitInventory = createCircuitItemHandler(args); - } + public static class SimpleTieredMachineTraits extends WorkableTieredMachineTraits { + public CustomItemStackHandler chargerItemHandler(SimpleTieredMachine machine) { + var handler = new CustomItemStackHandler() { - ////////////////////////////////////// - // ***** Initialization ******// - ////////////////////////////////////// + public int getSlotLimit(int slot) { + return 1; + } + }; + handler.setFilter(item -> GTCapabilityHelper.getElectricItem(item) != null || + (ConfigHolder.INSTANCE.compat.energy.nativeEUToFE && + GTCapabilityHelper.getForgeEnergyItem(item) != null)); + return handler; + } - protected CustomItemStackHandler createChargerItemHandler(Object... args) { - var handler = new CustomItemStackHandler() { + public NotifiableItemStackHandler circuitItemHandler(SimpleTieredMachine machine) { + return new NotifiableItemStackHandler(machine, 1, IO.IN, IO.NONE) + .setFilter(IntCircuitBehaviour::isIntegratedCircuit); + } + } - public int getSlotLimit(int slot) { - return 1; - } - }; - handler.setFilter(item -> GTCapabilityHelper.getElectricItem(item) != null || - (ConfigHolder.INSTANCE.compat.energy.nativeEUToFE && - GTCapabilityHelper.getForgeEnergyItem(item) != null)); - return handler; + public SimpleTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction, SimpleTieredMachineTraits traits) { + super(holder, tier, tankScalingFunction, traits); + this.outputFacingItems = hasFrontFacing() ? getFrontFacing().getOpposite() : Direction.UP; + this.outputFacingFluids = outputFacingItems; + this.chargerInventory = traits.chargerItemHandler(this); + this.circuitInventory = traits.circuitItemHandler(this); } - protected NotifiableItemStackHandler createCircuitItemHandler(Object... args) { - return new NotifiableItemStackHandler(this, 1, IO.IN, IO.NONE) - .setFilter(IntCircuitBehaviour::isIntegratedCircuit); + public SimpleTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction) { + this(holder, tier, tankScalingFunction, new SimpleTieredMachineTraits()); } ////////////////////////////////////// // ***** Initialization ******// ////////////////////////////////////// + @Override public void onLoad() { super.onLoad(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java index 794b8e5e332..e58ea12a249 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java @@ -28,9 +28,24 @@ public class TieredEnergyMachine extends TieredMachine implements ITieredMachine public final NotifiableEnergyContainer energyContainer; protected TickableSubscription explosionSub; - public TieredEnergyMachine(IMachineBlockEntity holder, int tier, Object... args) { + public static class TieredEnergyMachineTraits extends MetaMachineTraits { + public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { + long tierVoltage = GTValues.V[machine.getTier()]; + if (machine.isEnergyEmitter()) { + return NotifiableEnergyContainer.emitterContainer(machine, + tierVoltage * 64L, tierVoltage, machine.getMaxInputOutputAmperage()); + } else return NotifiableEnergyContainer.receiverContainer(machine, + tierVoltage * 64L, tierVoltage, machine.getMaxInputOutputAmperage()); + } + } + + public TieredEnergyMachine(IMachineBlockEntity holder, int tier, TieredEnergyMachineTraits traits) { super(holder, tier); - energyContainer = createEnergyContainer(args); + energyContainer = traits.energyContainer(this); + } + + public TieredEnergyMachine(IMachineBlockEntity holder, int tier) { + this(holder, tier, new TieredEnergyMachineTraits()); } ////////////////////////////////////// @@ -115,9 +130,7 @@ protected static EditableUI createEnergyBar progressBar.setFillDirection(ProgressTexture.FillDirection.DOWN_TO_UP); progressBar.setBackground(GuiTextures.ENERGY_BAR_BACKGROUND); return progressBar; - }, (progressBar, machine) -> { - progressBar.setProgressSupplier( - () -> machine.energyContainer.getEnergyStored() * 1d / machine.energyContainer.getEnergyCapacity()); - }); + }, (progressBar, machine) -> progressBar.setProgressSupplier( + () -> machine.energyContainer.getEnergyStored() * 1d / machine.energyContainer.getEnergyCapacity())); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java index 5cd77a6358d..fd061ad0cd6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java @@ -70,9 +70,40 @@ public abstract class WorkableTieredMachine extends TieredEnergyMachine implemen protected boolean isMuffled; protected boolean previouslyMuffled = true; - public WorkableTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction, - Object... args) { - super(holder, tier, args); + public static class WorkableTieredMachineTraits extends TieredEnergyMachineTraits { + public RecipeLogic recipeLogic(WorkableTieredMachine machine) { + return new RecipeLogic(machine); + } + + public NotifiableItemStackHandler importItemHandler(WorkableTieredMachine machine) { + return new NotifiableItemStackHandler(machine, machine.getRecipeType().getMaxInputs(ItemRecipeCapability.CAP), IO.IN); + } + + public NotifiableItemStackHandler exportItemHandler(WorkableTieredMachine machine) { + return new NotifiableItemStackHandler(machine, machine.getRecipeType().getMaxOutputs(ItemRecipeCapability.CAP), IO.OUT); + } + + public NotifiableFluidTank importFluidTank(WorkableTieredMachine machine) { + return new NotifiableFluidTank(machine, machine.getRecipeType().getMaxInputs(FluidRecipeCapability.CAP), + machine.tankScalingFunction.applyAsInt(machine.getTier()), IO.IN); + } + + public NotifiableFluidTank exportFluidTank(WorkableTieredMachine machine) { + return new NotifiableFluidTank(machine, machine.getRecipeType().getMaxOutputs(FluidRecipeCapability.CAP), + machine.tankScalingFunction.applyAsInt(machine.getTier()), IO.OUT); + } + + public NotifiableComputationContainer importComputation(WorkableTieredMachine machine) { + return new NotifiableComputationContainer(machine, IO.IN, true); + } + + public NotifiableComputationContainer exportComputation(WorkableTieredMachine machine) { + return new NotifiableComputationContainer(machine, IO.OUT, false); + } + } + + public WorkableTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction, WorkableTieredMachineTraits traits) { + super(holder, tier, traits); this.overclockTier = getMaxOverclockTier(); this.recipeTypes = getDefinition().getRecipeTypes(); this.activeRecipeType = 0; @@ -80,13 +111,17 @@ public WorkableTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFuncti this.capabilitiesProxy = new EnumMap<>(IO.class); this.capabilitiesFlat = new EnumMap<>(IO.class); this.traitSubscriptions = new ArrayList<>(); - this.recipeLogic = createRecipeLogic(args); - this.importItems = createImportItemHandler(args); - this.exportItems = createExportItemHandler(args); - this.importFluids = createImportFluidHandler(args); - this.exportFluids = createExportFluidHandler(args); - this.importComputation = createImportComputationContainer(args); - this.exportComputation = createExportComputationContainer(args); + this.recipeLogic = traits.recipeLogic(this); + this.importItems = traits.importItemHandler(this); + this.exportItems = traits.exportItemHandler(this); + this.importFluids = traits.importFluidTank(this); + this.exportFluids = traits.exportFluidTank(this); + this.importComputation = traits.importComputation(this); + this.exportComputation = traits.exportComputation(this); + } + + public WorkableTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction) { + this(holder, tier, tankScalingFunction, new WorkableTieredMachineTraits()); } ////////////////////////////////////// @@ -113,28 +148,6 @@ protected NotifiableItemStackHandler createExportItemHandler(Object... args) { return new NotifiableItemStackHandler(this, getRecipeType().getMaxOutputs(ItemRecipeCapability.CAP), IO.OUT); } - protected NotifiableFluidTank createImportFluidHandler(Object... args) { - return new NotifiableFluidTank(this, getRecipeType().getMaxInputs(FluidRecipeCapability.CAP), - this.tankScalingFunction.applyAsInt(this.getTier()), IO.IN); - } - - protected NotifiableFluidTank createExportFluidHandler(Object... args) { - return new NotifiableFluidTank(this, getRecipeType().getMaxOutputs(FluidRecipeCapability.CAP), - this.tankScalingFunction.applyAsInt(this.getTier()), IO.OUT); - } - - protected NotifiableComputationContainer createImportComputationContainer(Object... args) { - boolean transmitter = true; - if (args.length > 0 && args[args.length - 1] instanceof Boolean isTransmitter) { - transmitter = isTransmitter; - } - return new NotifiableComputationContainer(this, IO.IN, transmitter); - } - - protected NotifiableComputationContainer createExportComputationContainer(Object... args) { - return new NotifiableComputationContainer(this, IO.OUT, false); - } - protected RecipeLogic createRecipeLogic(Object... args) { return new RecipeLogic(this); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java index 34333331774..0ba0f0cb77d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java @@ -40,8 +40,8 @@ public class AirScrubberMachine extends SimpleTieredMachine implements IEnvironm @Getter private float removedLastSecond; - public AirScrubberMachine(IMachineBlockEntity holder, int tier, Object... args) { - super(holder, tier, GTMachineUtils.largeTankSizeFunction, args); + public AirScrubberMachine(IMachineBlockEntity holder, int tier) { + super(holder, tier, GTMachineUtils.largeTankSizeFunction); this.cleaningPerOperation = MIN_CLEANING_PER_OPERATION; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java index e261481043b..b8080b87980 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java @@ -52,11 +52,16 @@ public class BatteryBufferMachine extends TieredEnergyMachine @SaveField protected final CustomItemStackHandler batteryInventory; - public BatteryBufferMachine(IMachineBlockEntity holder, int tier, int inventorySize, Object... args) { - super(holder, tier, inventorySize); + public BatteryBufferMachine(IMachineBlockEntity holder, int tier, int inventorySize) { + super(holder, tier, new TieredEnergyMachineTraits() { + @Override + public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { + return new EnergyBatteryTrait((BatteryBufferMachine) machine, inventorySize); + } + }); this.isWorkingEnabled = true; this.inventorySize = inventorySize; - this.batteryInventory = createBatteryInventory(args); + this.batteryInventory = createBatteryInventory(); this.batteryInventory.setOnContentsChanged(energyContainer::checkOutputSubscription); } @@ -64,12 +69,7 @@ public BatteryBufferMachine(IMachineBlockEntity holder, int tier, int inventoryS // ***** Initialization ******// ////////////////////////////////////// - @Override - protected NotifiableEnergyContainer createEnergyContainer(Object... args) { - return new EnergyBatteryTrait((int) args[0]); - } - - protected CustomItemStackHandler createBatteryInventory(Object... ignoredArgs) { + protected CustomItemStackHandler createBatteryInventory() { var handler = new CustomItemStackHandler(this.inventorySize) { @Override @@ -203,18 +203,21 @@ public IGuiTexture getComponentIcon() { return GuiTextures.BUTTON_CHECK; // temporary } - protected class EnergyBatteryTrait extends NotifiableEnergyContainer { + protected static class EnergyBatteryTrait extends NotifiableEnergyContainer { - protected EnergyBatteryTrait(int inventorySize) { - super(BatteryBufferMachine.this, GTValues.V[tier] * inventorySize * 32L, GTValues.V[tier], - inventorySize * AMPS_PER_BATTERY, GTValues.V[tier], inventorySize); - this.setSideInputCondition(side -> side != getFrontFacing() && isWorkingEnabled()); - this.setSideOutputCondition(side -> side == getFrontFacing() && isWorkingEnabled()); + private BatteryBufferMachine machine; + private final int tier; + protected EnergyBatteryTrait(BatteryBufferMachine machine, int inventorySize) { + super(machine, GTValues.V[machine.getTier()] * inventorySize * 32L, GTValues.V[machine.getTier()], + inventorySize * AMPS_PER_BATTERY, GTValues.V[machine.getTier()], inventorySize); + tier = machine.getTier(); + this.setSideInputCondition(side -> side != machine.getFrontFacing() && machine.isWorkingEnabled()); + this.setSideOutputCondition(side -> side == machine.getFrontFacing() && machine.isWorkingEnabled()); } @Override public void checkOutputSubscription() { - if (isWorkingEnabled()) { + if (machine.isWorkingEnabled()) { super.checkOutputSubscription(); } else if (outputSubs != null) { outputSubs.unsubscribe(); @@ -224,15 +227,15 @@ public void checkOutputSubscription() { @Override public void serverTick() { - var outFacing = getFrontFacing(); - var energyContainer = GTCapabilityHelper.getEnergyContainer(getLevel(), getPos().relative(outFacing), + var outFacing = machine.getFrontFacing(); + var energyContainer = GTCapabilityHelper.getEnergyContainer(machine.getLevel(), machine.getPos().relative(outFacing), outFacing.getOpposite()); if (energyContainer == null) { return; } var voltage = getOutputVoltage(); - var batteries = getNonEmptyBatteries(); + var batteries = machine.getNonEmptyBatteries(); if (!batteries.isEmpty()) { // Prioritize as many packets as available of energy created long internalAmps = Math.abs(Math.min(0, getInternalStorage() / voltage)); @@ -250,7 +253,7 @@ public void serverTick() { boolean changed = false; for (IElectricItem electricItem : batteries) { - var charged = electricItem.discharge(distributed, getTier(), false, true, false); + var charged = electricItem.discharge(distributed, tier, false, true, false); if (charged > 0) { changed = true; } @@ -277,7 +280,7 @@ public long acceptEnergyFromNetwork(@Nullable Direction side, long voltage, long if (amperage <= 0 || voltage <= 0) return 0; - var batteries = getNonFullBatteries(); + var batteries = machine.getNonFullBatteries(); var leftAmps = batteries.size() * AMPS_PER_BATTERY - amps; var usedAmps = Math.min(leftAmps, amperage); if (leftAmps <= 0) @@ -285,7 +288,7 @@ public long acceptEnergyFromNetwork(@Nullable Direction side, long voltage, long if (side == null || inputsEnergy(side)) { if (voltage > getInputVoltage()) { - doExplosion(GTUtil.getExplosionPower(voltage)); + machine.doExplosion(GTUtil.getExplosionPower(voltage)); return usedAmps; } @@ -303,11 +306,11 @@ public long acceptEnergyFromNetwork(@Nullable Direction side, long voltage, long long charged = 0; if (item instanceof IElectricItem electricItem) { charged = electricItem.charge( - Math.min(distributed, GTValues.V[electricItem.getTier()] * AMPS_PER_BATTERY), getTier(), + Math.min(distributed, GTValues.V[electricItem.getTier()] * AMPS_PER_BATTERY), tier, true, false); } else if (item instanceof IEnergyStorage energyStorage) { charged = FeCompat.insertEu(energyStorage, - Math.min(distributed, GTValues.V[getTier()] * AMPS_PER_BATTERY), false); + Math.min(distributed, GTValues.V[tier] * AMPS_PER_BATTERY), false); } if (charged > 0) { changed = true; @@ -330,7 +333,7 @@ public long acceptEnergyFromNetwork(@Nullable Direction side, long voltage, long @Override public long getEnergyCapacity() { long energyCapacity = 0L; - for (Object battery : getAllBatteries()) { + for (Object battery : machine.getAllBatteries()) { if (battery instanceof IElectricItem electricItem) { energyCapacity += electricItem.getMaxCharge(); } else if (battery instanceof IEnergyStorage energyStorage) { @@ -343,7 +346,7 @@ public long getEnergyCapacity() { @Override public long getEnergyStored() { long energyStored = 0L; - for (Object battery : getAllBatteries()) { + for (Object battery : machine.getAllBatteries()) { if (battery instanceof IElectricItem electricItem) { energyStored += electricItem.getCharge(); } else if (battery instanceof IEnergyStorage energyStorage) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java index 962bd9e823f..6454710b4b9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java @@ -94,7 +94,7 @@ public class BlockBreakerMachine extends TieredEnergyMachine @SyncToClient private boolean isWorkingEnabled = true; - public BlockBreakerMachine(IMachineBlockEntity holder, int tier, Object... ignoredArgs) { + public BlockBreakerMachine(IMachineBlockEntity holder, int tier) { super(holder, tier); this.inventorySize = (tier + 1) * (tier + 1); this.cache = createCacheItemHandler(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java index 1333e87264d..2797ffbceb1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java @@ -75,11 +75,16 @@ public enum State implements StringRepresentable { @RerenderOnChanged private State state; - public ChargerMachine(IMachineBlockEntity holder, int tier, int inventorySize, Object... args) { - super(holder, tier, inventorySize); + public ChargerMachine(IMachineBlockEntity holder, int tier, int inventorySize) { + super(holder, tier, new TieredEnergyMachineTraits() { + @Override + public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { + return new EnergyBatteryTrait((ChargerMachine)machine, inventorySize); + } + }); this.isWorkingEnabled = true; this.inventorySize = inventorySize; - this.chargerInventory = createChargerInventory(args); + this.chargerInventory = createChargerInventory(); this.state = State.IDLE; } @@ -87,12 +92,7 @@ public ChargerMachine(IMachineBlockEntity holder, int tier, int inventorySize, O // ***** Initialization ******// ////////////////////////////////////// - @Override - protected NotifiableEnergyContainer createEnergyContainer(Object... args) { - return new EnergyBatteryTrait((int) args[0]); - } - - protected CustomItemStackHandler createChargerInventory(Object... args) { + protected CustomItemStackHandler createChargerInventory() { var handler = new CustomItemStackHandler(this.inventorySize) { @Override @@ -192,12 +192,12 @@ private void changeState(State newState) { } } - protected class EnergyBatteryTrait extends NotifiableEnergyContainer { - - protected EnergyBatteryTrait(int inventorySize) { - super(ChargerMachine.this, GTValues.V[tier] * inventorySize * 32L, GTValues.V[tier], + protected static class EnergyBatteryTrait extends NotifiableEnergyContainer { + private ChargerMachine machine; + protected EnergyBatteryTrait(ChargerMachine machine, int inventorySize) { + super(machine, GTValues.V[machine.tier] * inventorySize * 32L, GTValues.V[machine.tier], inventorySize * AMPS_PER_ITEM, 0L, 0L); - this.setSideInputCondition(side -> isWorkingEnabled()); + this.setSideInputCondition(side -> machine.isWorkingEnabled()); this.setSideOutputCondition(side -> false); } @@ -209,11 +209,11 @@ public long acceptEnergyFromNetwork(@Nullable Direction side, long voltage, long lastTimeStamp = latestTimeStamp; } if (amperage <= 0 || voltage <= 0) { - changeState(State.IDLE); + machine.changeState(State.IDLE); return 0; } - var electricItems = getNonFullElectricItem(); + var electricItems = machine.getNonFullElectricItem(); var maxAmps = electricItems.size() * AMPS_PER_ITEM - amps; var usedAmps = Math.min(maxAmps, amperage); if (maxAmps <= 0) { @@ -222,7 +222,7 @@ public long acceptEnergyFromNetwork(@Nullable Direction side, long voltage, long if (side == null || inputsEnergy(side)) { if (voltage > getInputVoltage()) { - doExplosion(GTUtil.getExplosionPower(voltage)); + machine.doExplosion(GTUtil.getExplosionPower(voltage)); return usedAmps; } @@ -240,10 +240,10 @@ public long acceptEnergyFromNetwork(@Nullable Direction side, long voltage, long long charged = 0; if (electricItem instanceof IElectricItem item) { charged = item.charge(Math.min(distributed, GTValues.V[item.getTier()] * AMPS_PER_ITEM), - getTier(), true, false); + machine.tier, true, false); } else if (electricItem instanceof IEnergyStorage energyStorage) { charged = FeCompat.insertEu(energyStorage, - Math.min(distributed, GTValues.V[getTier()] * AMPS_PER_ITEM), false); + Math.min(distributed, GTValues.V[machine.tier] * AMPS_PER_ITEM), false); } if (charged > 0) { changed = true; @@ -253,7 +253,7 @@ public long acceptEnergyFromNetwork(@Nullable Direction side, long voltage, long } if (changed) { - changeState(State.RUNNING); + machine.changeState(State.RUNNING); } // Remove energy used and then transfer overflow energy into the internal buffer @@ -266,8 +266,8 @@ public long acceptEnergyFromNetwork(@Nullable Direction side, long voltage, long @Override public long getEnergyCapacity() { long energyCapacity = 0L; - for (int i = 0; i < chargerInventory.getSlots(); i++) { - var electricItemStack = chargerInventory.getStackInSlot(i); + for (int i = 0; i < machine.chargerInventory.getSlots(); i++) { + var electricItemStack = machine.chargerInventory.getStackInSlot(i); var electricItem = GTCapabilityHelper.getElectricItem(electricItemStack); if (electricItem != null) { energyCapacity += electricItem.getMaxCharge(); @@ -281,7 +281,7 @@ public long getEnergyCapacity() { } if (energyCapacity == 0) { - changeState(State.IDLE); + machine.changeState(State.IDLE); } return energyCapacity; @@ -290,8 +290,8 @@ public long getEnergyCapacity() { @Override public long getEnergyStored() { long energyStored = 0L; - for (int i = 0; i < chargerInventory.getSlots(); i++) { - var electricItemStack = chargerInventory.getStackInSlot(i); + for (int i = 0; i < machine.chargerInventory.getSlots(); i++) { + var electricItemStack = machine.chargerInventory.getStackInSlot(i); var electricItem = GTCapabilityHelper.getElectricItem(electricItemStack); if (electricItem != null) { energyStored += electricItem.getCharge(); @@ -307,7 +307,7 @@ public long getEnergyStored() { var capacity = getEnergyCapacity(); if (capacity != 0 && capacity == energyStored) { - changeState(State.FINISHED); + machine.changeState(State.FINISHED); } return energyStored; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java index 2a0390108af..902aeb793a7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java @@ -35,22 +35,19 @@ public class ConverterMachine extends TieredEnergyMachine { public static final BooleanProperty FE_TO_EU_PROPERTY = GTMachineModelProperties.IS_FE_TO_EU; - public ConverterMachine(IMachineBlockEntity holder, int tier, int amps, Object... args) { - super(holder, tier, args, amps); + public ConverterMachine(IMachineBlockEntity holder, int tier, int amps) { + super(holder, tier, new TieredEnergyMachineTraits() { + @Override + public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { + return new ConverterTrait((ConverterMachine)machine, amps); + } + }); } ////////////////////////////////////// // ***** Initialization ******// ////////////////////////////////////// - @Override - protected NotifiableEnergyContainer createEnergyContainer(Object... args) { - if (args.length > 0 && args[args.length - 1] instanceof Integer ampsValue) { - return new ConverterTrait(this, ampsValue); - } - throw new IllegalArgumentException("ConverterMachine need args [amps] for initialization"); - } - public ConverterTrait getConverterTrait() { return (ConverterTrait) energyContainer; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java index afd5b630cfd..a3acc049a69 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java @@ -127,7 +127,7 @@ public class FisherMachine extends TieredEnergyMachine @SyncToClient protected boolean junkEnabled = true; - public FisherMachine(IMachineBlockEntity holder, int tier, Object... ignoredArgs) { + public FisherMachine(IMachineBlockEntity holder, int tier) { super(holder, tier); this.inventorySize = (tier + 1) * (tier + 1); this.maxProgress = calcMaxProgress(tier); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java index 58c253e0016..79b873380ea 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java @@ -125,7 +125,7 @@ public class ItemCollectorMachine extends TieredEnergyMachine @RerenderOnChanged private boolean active = false; - public ItemCollectorMachine(IMachineBlockEntity holder, int tier, Object... ignoredArgs) { + public ItemCollectorMachine(IMachineBlockEntity holder, int tier) { super(holder, tier); this.inventorySize = INVENTORY_SIZES[Mth.clamp(getTier(), 0, INVENTORY_SIZES.length - 1)]; this.energyPerTick = (long) BASE_EU_CONSUMPTION * (1L << (tier - 1)); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java index 470c0a386e7..cda3c144a16 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java @@ -93,10 +93,24 @@ public class MinerMachine extends WorkableTieredMachine @Nullable protected ISubscription exportItemSubs, energySubs; - public MinerMachine(IMachineBlockEntity holder, int tier, int speed, int maximumRadius, int fortune, - Object... args) { - super(holder, tier, GTMachineUtils.defaultTankSizeFunction, args, (tier + 1) * (tier + 1), fortune, speed, - maximumRadius); + public MinerMachine(IMachineBlockEntity holder, int tier, int speed, int maximumRadius, int fortune) { + super(holder, tier, GTMachineUtils.defaultTankSizeFunction, new WorkableTieredMachineTraits() { + @Override + public NotifiableItemStackHandler importItemHandler(WorkableTieredMachine machine) { + return new NotifiableItemStackHandler(machine, 0, IO.IN); + } + + @Override + public NotifiableItemStackHandler exportItemHandler(WorkableTieredMachine machine) { + return new NotifiableItemStackHandler(machine, (tier + 1) * (tier + 1), IO.OUT); + } + + @Override + public RecipeLogic recipeLogic(WorkableTieredMachine machine) { + return new MinerLogic(machine, fortune, speed, maximumRadius); + } + }); + this.energyPerTick = GTValues.V[tier - 1]; this.chargerInventory = createChargerItemHandler(); } @@ -105,7 +119,7 @@ public MinerMachine(IMachineBlockEntity holder, int tier, int speed, int maximum // ***** Initialization ******// ////////////////////////////////////// - protected CustomItemStackHandler createChargerItemHandler(Object... args) { + protected CustomItemStackHandler createChargerItemHandler() { var handler = new CustomItemStackHandler(); handler.setFilter(item -> GTCapabilityHelper.getElectricItem(item) != null || (ConfigHolder.INSTANCE.compat.energy.nativeEUToFE && @@ -113,30 +127,6 @@ protected CustomItemStackHandler createChargerItemHandler(Object... args) { return handler; } - @Override - protected NotifiableItemStackHandler createImportItemHandler(Object... args) { - return new NotifiableItemStackHandler(this, 0, IO.IN); - } - - @Override - protected NotifiableItemStackHandler createExportItemHandler(Object... args) { - if (args.length > 3 && args[args.length - 4] instanceof Integer invSize) { - return new NotifiableItemStackHandler(this, invSize, IO.OUT); - } - throw new IllegalArgumentException( - "MinerMachine need args [inventorySize, fortune, speed, maximumRadius] for initialization"); - } - - @Override - protected RecipeLogic createRecipeLogic(Object... args) { - if (args.length > 2 && args[args.length - 3] instanceof Integer fortune && - args[args.length - 2] instanceof Integer speed && args[args.length - 1] instanceof Integer maxRadius) { - return new MinerLogic(this, fortune, speed, maxRadius); - } - throw new IllegalArgumentException( - "MinerMachine need args [inventorySize, fortune, speed, maximumRadius] for initialization"); - } - @Override public void onMachineRemoved() { // Remove the miner pipes below this miner diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java index b3204b65c57..3d5ca741f6d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java @@ -75,16 +75,16 @@ public class PumpMachine extends TieredEnergyMachine implements IAutoOutputFluid @SaveField protected final NotifiableFluidTank cache; - public PumpMachine(IMachineBlockEntity holder, int tier, Object... args) { + public PumpMachine(IMachineBlockEntity holder, int tier) { super(holder, tier); - this.cache = createCacheFluidHandler(args); + this.cache = createCacheFluidHandler(); } ////////////////////////////////////// // ***** Initialization *****// ////////////////////////////////////// - protected NotifiableFluidTank createCacheFluidHandler(Object... args) { + protected NotifiableFluidTank createCacheFluidHandler() { return new NotifiableFluidTank(this, 1, 16 * FluidType.BUCKET_VOLUME * Math.max(1, getTier()), IO.NONE, IO.OUT); } @@ -107,7 +107,7 @@ public void setAutoOutputFluids(boolean autoOutputFluids) { } @Override - public void setOutputFacingFluids(Direction outputFacing) { + public void setOutputFacingFluids(@Nullable Direction outputFacing) { setFrontFacing(outputFacing); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/RockCrusherMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/RockCrusherMachine.java index b40a7fca0ac..9a51ea24ae2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/RockCrusherMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/RockCrusherMachine.java @@ -6,8 +6,8 @@ public class RockCrusherMachine extends SimpleTieredMachine { - public RockCrusherMachine(IMachineBlockEntity holder, int tier, Object... args) { - super(holder, tier, GTMachineUtils.defaultTankSizeFunction, args); + public RockCrusherMachine(IMachineBlockEntity holder, int tier) { + super(holder, tier, GTMachineUtils.defaultTankSizeFunction); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java index 80139917c2b..6610bef390f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java @@ -41,10 +41,22 @@ public class TransformerMachine extends TieredEnergyMachine implements IControll @Getter private final int baseAmp; - public TransformerMachine(IMachineBlockEntity holder, int tier, int baseAmp, Object... args) { - super(holder, tier, baseAmp, args); + public TransformerMachine(IMachineBlockEntity holder, int tier, int amp, Object... args) { + super(holder, tier, new TieredEnergyMachineTraits() { + @Override + public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { + NotifiableEnergyContainer energyContainer; + long tierVoltage = GTValues.V[machine.getTier()]; + energyContainer = new NotifiableEnergyContainer(machine, tierVoltage * 8L, tierVoltage * 4, amp, tierVoltage, + 4L * amp); + return energyContainer; + } + }); + + energyContainer.setSideInputCondition(s -> s == getFrontFacing() && isWorkingEnabled()); + energyContainer.setSideOutputCondition(s -> s != getFrontFacing() && isWorkingEnabled()); this.isWorkingEnabled = true; - this.baseAmp = baseAmp; + this.baseAmp = amp; } ////////////////////////////////////// @@ -57,19 +69,6 @@ private void onTransformUpdated() { updateEnergyContainer(isTransformUp); } - @Override - protected NotifiableEnergyContainer createEnergyContainer(Object... args) { - var amp = (args.length > 0 && args[0] instanceof Integer a) ? a : 1; - NotifiableEnergyContainer energyContainer; - long tierVoltage = GTValues.V[getTier()]; - // Since this.baseAmp is not yet initialized, we substitute with 1A as default - energyContainer = new NotifiableEnergyContainer(this, tierVoltage * 8L, tierVoltage * 4, amp, tierVoltage, - 4L * amp); - energyContainer.setSideInputCondition(s -> s == getFrontFacing() && isWorkingEnabled()); - energyContainer.setSideOutputCondition(s -> s != getFrontFacing() && isWorkingEnabled()); - return energyContainer; - } - @Override public void onLoad() { super.onLoad(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java index e9206cf537c..d8f5343b8f1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java @@ -87,18 +87,19 @@ public class WorldAcceleratorMachine extends TieredEnergyMachine implements ICon private boolean active = false; private TickableSubscription tickSubs; - public WorldAcceleratorMachine(IMachineBlockEntity holder, int tier, Object... args) { - super(holder, tier, GTMachineUtils.defaultTankSizeFunction, args); + public WorldAcceleratorMachine(IMachineBlockEntity holder, int tier) { + super(holder, tier, new TieredEnergyMachineTraits() { + @Override + public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { + long tierVoltage = GTValues.V[machine.getTier()]; + return new NotifiableEnergyContainer(machine, tierVoltage * 256L, tierVoltage, 8, 0L, 0L); + } + }); this.speed = (int) Math.pow(2, tier); this.successLimit = SUCCESS_LIMITS[tier - 1]; this.randRange = (getTier() << 1) + 1; } - @Override - protected @NotNull NotifiableEnergyContainer createEnergyContainer(Object @NotNull... args) { - long tierVoltage = GTValues.V[getTier()]; - return new NotifiableEnergyContainer(this, tierVoltage * 256L, tierVoltage, 8, 0L, 0L); - } public void updateSubscription() { if (isWorkingEnabled && drainEnergy(true)) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java index f7229468dde..6816e35eac2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java @@ -41,20 +41,11 @@ public class MultiblockTankMachine extends MultiblockControllerMachine implement @NotNull private final NotifiableFluidTank tank; - public MultiblockTankMachine(IMachineBlockEntity holder, int capacity, @Nullable PropertyFluidFilter filter, - Object... args) { + public MultiblockTankMachine(IMachineBlockEntity holder, int capacity, @Nullable PropertyFluidFilter filter) { super(holder); - this.tank = createTank(capacity, filter, args); - } - - protected NotifiableFluidTank createTank(int capacity, @Nullable PropertyFluidFilter filter, Object... args) { - var fluidTank = new NotifiableFluidTank(this, 1, capacity, IO.BOTH); - - if (filter != null) - fluidTank.setFilter(filter); - - return fluidTank; + tank = new NotifiableFluidTank(this, 1, capacity, IO.BOTH); + if (filter != null) tank.setFilter(filter); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java index c8047a125fc..66322921497 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java @@ -50,12 +50,12 @@ public class BufferMachine extends TieredMachine implements IMachineLife, IAutoO @SaveField @SyncToClient @RerenderOnChanged - protected Direction outputFacingItems; + protected @Nullable Direction outputFacingItems; @Getter @SaveField @SyncToClient @RerenderOnChanged - protected Direction outputFacingFluids; + protected @Nullable Direction outputFacingFluids; @Getter @SaveField @SyncToClient @@ -89,10 +89,10 @@ public class BufferMachine extends TieredMachine implements IMachineLife, IAutoO @Nullable protected ISubscription invSubs, tankSubs; - public BufferMachine(IMachineBlockEntity holder, int tier, Object... args) { + public BufferMachine(IMachineBlockEntity holder, int tier) { super(holder, tier); - this.inventory = createInventory(args); - this.tank = createTank(args); + this.inventory = createInventory(); + this.tank = createTank(); } //////////////////////////////// @@ -107,11 +107,11 @@ public static int getTankSize(int tier) { return tier + 2; } - protected NotifiableItemStackHandler createInventory(Object... args) { + protected NotifiableItemStackHandler createInventory() { return new NotifiableItemStackHandler(this, getInventorySize(tier), IO.BOTH); } - protected NotifiableFluidTank createTank(Object... args) { + protected NotifiableFluidTank createTank() { return new NotifiableFluidTank(this, getTankSize(tier), TANK_SIZE, IO.BOTH); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java index 47c5aac6ff2..39e02ec4137 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java @@ -43,7 +43,7 @@ public CreativeChestMachine(IMachineBlockEntity holder) { } @Override - protected ItemCache createCacheItemHandler(Object... args) { + protected ItemCache createCacheItemHandler() { return new InfiniteCache(this); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java index f17bd1f4b49..b4efed33600 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java @@ -47,7 +47,7 @@ public CreativeTankMachine(IMachineBlockEntity holder) { super(holder, GTValues.MAX, 1); } - protected FluidCache createCacheFluidHandler(Object... args) { + protected FluidCache createCacheFluidHandler() { return new InfiniteCache(this); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java index bcec81fd3e5..c7ae51ade2a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java @@ -80,7 +80,7 @@ public class QuantumChestMachine extends TieredMachine implements IAutoOutputIte @SaveField @SyncToClient @RerenderOnChanged - protected Direction outputFacingItems; + protected @Nullable Direction outputFacingItems; @Getter @SaveField @SyncToClient @@ -111,11 +111,11 @@ public class QuantumChestMachine extends TieredMachine implements IAutoOutputIte @Nullable protected TickableSubscription autoOutputSubs; - public QuantumChestMachine(IMachineBlockEntity holder, int tier, long maxAmount, Object... args) { + public QuantumChestMachine(IMachineBlockEntity holder, int tier, long maxAmount) { super(holder, tier); this.outputFacingItems = getFrontFacing().getOpposite(); this.maxAmount = maxAmount; - this.cache = createCacheItemHandler(args); + this.cache = createCacheItemHandler(); this.lockedItem = new CustomItemStackHandler(); lockedItem.setOnContentsChanged(() -> syncDataHolder.markClientSyncFieldDirty("lockedItem")); } @@ -124,7 +124,7 @@ public QuantumChestMachine(IMachineBlockEntity holder, int tier, long maxAmount, // ***** Initialization ******// ////////////////////////////////////// - protected ItemCache createCacheItemHandler(Object... args) { + protected ItemCache createCacheItemHandler() { return new ItemCache(this); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java index df064a033c2..d8fc1e12504 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java @@ -71,7 +71,7 @@ public class QuantumTankMachine extends TieredMachine implements IAutoOutputFlui @SaveField @SyncToClient @RerenderOnChanged - protected Direction outputFacingFluids; + protected @Nullable Direction outputFacingFluids; @Getter @SaveField @SyncToClient @@ -103,11 +103,11 @@ public class QuantumTankMachine extends TieredMachine implements IAutoOutputFlui @Nullable protected TickableSubscription autoOutputSubs; - public QuantumTankMachine(IMachineBlockEntity holder, int tier, long maxAmount, Object... args) { + public QuantumTankMachine(IMachineBlockEntity holder, int tier, long maxAmount) { super(holder, tier); this.outputFacingFluids = getFrontFacing().getOpposite(); this.maxAmount = maxAmount; - this.cache = createCacheFluidHandler(args); + this.cache = createCacheFluidHandler(); this.lockedFluid = new CustomFluidTank(1000); } @@ -115,7 +115,7 @@ public QuantumTankMachine(IMachineBlockEntity holder, int tier, long maxAmount, // ***** Initialization ******// ////////////////////////////////////// - protected FluidCache createCacheFluidHandler(Object... args) { + protected FluidCache createCacheFluidHandler() { return new FluidCache(this); } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/DummyMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/utils/DummyMachineBlockEntity.java index cd062fc3931..7f85400c1e6 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/DummyMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/DummyMachineBlockEntity.java @@ -35,14 +35,13 @@ public class DummyMachineBlockEntity implements IMachineBlockEntity { // TODO: Fix the proxy parameter public DummyMachineBlockEntity(int tier, GTRecipeType type, Int2IntFunction tankScalingFunction, - Collection handlers, - Object... args) { + Collection handlers) { this.definition = new MachineDefinition(GTCEu.id("dummy")); this.definition.setRecipeTypes(new GTRecipeType[] { type }); this.definition.setTier(tier); this.renderState = getDefinition().defaultRenderState(); - this.metaMachine = new DummyRecipeLogicMachine(this, tier, tankScalingFunction, handlers, args); + this.metaMachine = new DummyRecipeLogicMachine(this, tier, tankScalingFunction, handlers); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/utils/DummyRecipeLogicMachine.java b/src/main/java/com/gregtechceu/gtceu/utils/DummyRecipeLogicMachine.java index 93e1c6fce45..e4820fe02da 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/DummyRecipeLogicMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/DummyRecipeLogicMachine.java @@ -15,9 +15,8 @@ public class DummyRecipeLogicMachine extends WorkableTieredMachine implements IRecipeLogicMachine { public DummyRecipeLogicMachine(IMachineBlockEntity be, int tier, Int2IntFunction tankScalingFunction, - Collection handlers, - Object... args) { - super(be, tier, tankScalingFunction, args); + Collection handlers) { + super(be, tier, tankScalingFunction); reinitializeHandlers(handlers); } From dc9a3641d0ec49956f93b2bd8bbeb559884b2bb9 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 7 Dec 2025 14:03:17 +1100 Subject: [PATCH 03/41] multi parts --- .../api/machine/TieredEnergyMachine.java | 9 ----- .../api/machine/WorkableTieredMachine.java | 36 +++++++------------ .../part/MultiblockPartMachine.java | 6 +--- .../machine/electric/FisherMachine.java | 27 ++++---------- .../common/machine/electric/PumpMachine.java | 6 +--- .../multiblock/part/DualHatchPartMachine.java | 6 +--- .../part/EnergyHatchPartMachine.java | 6 ++-- .../part/FluidHatchPartMachine.java | 30 +++++++--------- .../multiblock/part/ItemBusPartMachine.java | 10 +++--- .../part/OpticalComputationHatchMachine.java | 13 +------ .../multiblock/part/PumpHatchPartMachine.java | 9 +++-- .../part/ReservoirHatchPartMachine.java | 6 ++-- .../part/SteamHatchPartMachine.java | 9 +++-- .../part/SteamItemBusPartMachine.java | 4 +-- .../multiblock/part/TankValvePartMachine.java | 16 +++------ .../common/machine/storage/DrumMachine.java | 6 ++-- .../ae2/machine/MEBusPartMachine.java | 4 +-- .../ae2/machine/MEInputBusPartMachine.java | 6 ++-- .../ae2/machine/MEInputHatchPartMachine.java | 6 ++-- .../ae2/machine/MEOutputBusPartMachine.java | 6 ++-- .../ae2/machine/MEOutputHatchPartMachine.java | 6 ++-- .../machine/MEPatternBufferPartMachine.java | 4 +-- .../ae2/machine/MEStockingBusPartMachine.java | 6 ++-- .../machine/MEStockingHatchPartMachine.java | 6 ++-- 24 files changed, 86 insertions(+), 157 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java index e58ea12a249..3788c11bd8b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java @@ -52,15 +52,6 @@ public TieredEnergyMachine(IMachineBlockEntity holder, int tier) { // ***** Initialization ******// ////////////////////////////////////// - protected NotifiableEnergyContainer createEnergyContainer(Object... args) { - long tierVoltage = GTValues.V[tier]; - if (isEnergyEmitter()) { - return NotifiableEnergyContainer.emitterContainer(this, - tierVoltage * 64L, tierVoltage, getMaxInputOutputAmperage()); - } else return NotifiableEnergyContainer.receiverContainer(this, - tierVoltage * 64L, tierVoltage, getMaxInputOutputAmperage()); - } - @Override public void onLoad() { super.onLoad(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java index fd061ad0cd6..257d1fe1a3e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java @@ -71,6 +71,18 @@ public abstract class WorkableTieredMachine extends TieredEnergyMachine implemen protected boolean previouslyMuffled = true; public static class WorkableTieredMachineTraits extends TieredEnergyMachineTraits { + @Override + public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { + long tierVoltage = GTValues.V[machine.getTier()]; + if (machine.isEnergyEmitter()) { + return RecipeAmperageEnergyContainer.makeEmitterContainer((IRecipeLogicMachine) machine, tierVoltage * 64L, + tierVoltage, machine.getMaxInputOutputAmperage()); + } else { + return RecipeAmperageEnergyContainer.makeReceiverContainer((IRecipeLogicMachine)machine, tierVoltage * 64L, + tierVoltage, machine.getMaxInputOutputAmperage()); + } + } + public RecipeLogic recipeLogic(WorkableTieredMachine machine) { return new RecipeLogic(machine); } @@ -128,30 +140,6 @@ public WorkableTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFuncti // ***** Initialization ******// ////////////////////////////////////// - @Override - protected NotifiableEnergyContainer createEnergyContainer(Object... args) { - long tierVoltage = GTValues.V[getTier()]; - if (isEnergyEmitter()) { - return RecipeAmperageEnergyContainer.makeEmitterContainer(this, tierVoltage * 64L, - tierVoltage, getMaxInputOutputAmperage()); - } else { - return RecipeAmperageEnergyContainer.makeReceiverContainer(this, tierVoltage * 64L, - tierVoltage, getMaxInputOutputAmperage()); - } - } - - protected NotifiableItemStackHandler createImportItemHandler(Object... args) { - return new NotifiableItemStackHandler(this, getRecipeType().getMaxInputs(ItemRecipeCapability.CAP), IO.IN); - } - - protected NotifiableItemStackHandler createExportItemHandler(Object... args) { - return new NotifiableItemStackHandler(this, getRecipeType().getMaxOutputs(ItemRecipeCapability.CAP), IO.OUT); - } - - protected RecipeLogic createRecipeLogic(Object... args) { - return new RecipeLogic(this); - } - @Override public void onLoad() { super.onLoad(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java index a51764d1adb..8f63e2d0030 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java @@ -25,11 +25,7 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.UnmodifiableView; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Set; -import java.util.SortedSet; +import java.util.*; import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java index a3acc049a69..4c77c974e22 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java @@ -132,32 +132,17 @@ public FisherMachine(IMachineBlockEntity holder, int tier) { this.inventorySize = (tier + 1) * (tier + 1); this.maxProgress = calcMaxProgress(tier); this.energyPerTick = GTValues.V[tier - 1]; - this.cache = createCacheItemHandler(); - this.baitHandler = createBaitItemHandler(); - this.chargerInventory = createChargerItemHandler(); - setOutputFacingItems(getFrontFacing()); - } + this.cache = new NotifiableItemStackHandler(this, inventorySize, IO.BOTH, IO.OUT); - ////////////////////////////////////// - // ***** Initialization *****// - ////////////////////////////////////// + this.baitHandler = new NotifiableItemStackHandler(this, 1, IO.BOTH, IO.IN); + baitHandler.setFilter(item -> item.is(Items.STRING)); - protected CustomItemStackHandler createChargerItemHandler() { - var handler = new CustomItemStackHandler(); - handler.setFilter(item -> GTCapabilityHelper.getElectricItem(item) != null || + this.chargerInventory = new CustomItemStackHandler(); + chargerInventory.setFilter(item -> GTCapabilityHelper.getElectricItem(item) != null || (ConfigHolder.INSTANCE.compat.energy.nativeEUToFE && GTCapabilityHelper.getForgeEnergyItem(item) != null)); - return handler; - } - - protected NotifiableItemStackHandler createCacheItemHandler() { - return new NotifiableItemStackHandler(this, inventorySize, IO.BOTH, IO.OUT); - } - protected NotifiableItemStackHandler createBaitItemHandler() { - var handler = new NotifiableItemStackHandler(this, 1, IO.BOTH, IO.IN); - handler.setFilter(item -> item.is(Items.STRING)); - return handler; + setOutputFacingItems(getFrontFacing()); } public void setWorkingEnabled(boolean enabled) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java index 3d5ca741f6d..256371cdd27 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java @@ -77,17 +77,13 @@ public class PumpMachine extends TieredEnergyMachine implements IAutoOutputFluid public PumpMachine(IMachineBlockEntity holder, int tier) { super(holder, tier); - this.cache = createCacheFluidHandler(); + this.cache = new NotifiableFluidTank(this, 1, 16 * FluidType.BUCKET_VOLUME * Math.max(1, getTier()), IO.NONE, IO.OUT); } ////////////////////////////////////// // ***** Initialization *****// ////////////////////////////////////// - protected NotifiableFluidTank createCacheFluidHandler() { - return new NotifiableFluidTank(this, 1, 16 * FluidType.BUCKET_VOLUME * Math.max(1, getTier()), IO.NONE, IO.OUT); - } - @Override public boolean isAllowInputFromOutputSideFluids() { return false; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java index f23a1287aed..e5664f302bd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java @@ -42,7 +42,7 @@ public class DualHatchPartMachine extends ItemBusPartMachine { public DualHatchPartMachine(IMachineBlockEntity holder, int tier, IO io, Object... args) { super(holder, tier, io); - this.tank = createTank(INITIAL_TANK_CAPACITY, (int) Math.sqrt(getInventorySize()), args); + this.tank = new NotifiableFluidTank(this, (int) Math.sqrt(getInventorySize()), getTankCapacity(INITIAL_TANK_CAPACITY, getTier()), io); } //////////////////////////////// @@ -58,10 +58,6 @@ public int getInventorySize() { return (int) Math.pow((getTier() - 4), 2); } - protected NotifiableFluidTank createTank(int initialCapacity, int slots, Object... args) { - return new NotifiableFluidTank(this, slots, getTankCapacity(initialCapacity, getTier()), io); - } - @Override public void onLoad() { super.onLoad(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java index 5cd2cb0fc06..edfad6d1683 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java @@ -29,17 +29,17 @@ public class EnergyHatchPartMachine extends TieredIOPartMachine implements IExpl @Getter protected int amperage; - public EnergyHatchPartMachine(IMachineBlockEntity holder, int tier, IO io, int amperage, Object... args) { + public EnergyHatchPartMachine(IMachineBlockEntity holder, int tier, IO io, int amperage) { super(holder, tier, io); this.amperage = amperage; - this.energyContainer = createEnergyContainer(args); + this.energyContainer = createEnergyContainer(); } ////////////////////////////////////// // ***** Initialization ******// ////////////////////////////////////// - protected NotifiableEnergyContainer createEnergyContainer(Object... args) { + protected NotifiableEnergyContainer createEnergyContainer() { NotifiableEnergyContainer container; if (io == IO.OUT) { container = NotifiableEnergyContainer.emitterContainer(this, GTValues.V[tier] * 64L * amperage, diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index 89b49d1f699..98df57bbae2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -50,6 +50,7 @@ import org.jetbrains.annotations.Nullable; import javax.annotation.ParametersAreNonnullByDefault; +import java.util.function.Function; @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault @@ -74,22 +75,26 @@ public class FluidHatchPartMachine extends TieredIOPartMachine implements IMachi @SaveField protected final NotifiableItemStackHandler circuitInventory; - // The `Object... args` parameter is necessary in case a superclass needs to pass any args along to createTank(). - // We can't use fields here because those won't be available while createTank() is called. - public FluidHatchPartMachine(IMachineBlockEntity holder, int tier, IO io, int initialCapacity, int slots, - Object... args) { + + public FluidHatchPartMachine(IMachineBlockEntity holder, int tier, IO io, int initialCapacity, int slots) { super(holder, tier, io); this.slots = slots; - this.tank = createTank(initialCapacity, slots, args); - this.circuitSlotEnabled = true; - this.circuitInventory = createCircuitItemHandler(io).shouldSearchContent(false); + this.tank = createTank(initialCapacity, slots); + + if (io == IO.IN) { + this.circuitSlotEnabled = true; + this.circuitInventory = new NotifiableItemStackHandler(this, 1, IO.IN, IO.NONE).setFilter(IntCircuitBehaviour::isIntegratedCircuit).shouldSearchContent(false); + } else { + this.circuitSlotEnabled = false; + this.circuitInventory = new NotifiableItemStackHandler(this, 0, IO.NONE).shouldSearchContent(false); + } } ////////////////////////////////////// // ***** Initialization ******// ////////////////////////////////////// - protected NotifiableFluidTank createTank(int initialCapacity, int slots, Object... args) { + protected NotifiableFluidTank createTank(int initialCapacity, int slots) { return new NotifiableFluidTank(this, slots, getTankCapacity(initialCapacity, getTier()), io); } @@ -97,15 +102,6 @@ public static int getTankCapacity(int initialCapacity, int tier) { return initialCapacity * (1 << Math.min(9, tier)); } - protected NotifiableItemStackHandler createCircuitItemHandler(Object... args) { - if (args.length > 0 && args[0] instanceof IO io && io == IO.IN) { - return new NotifiableItemStackHandler(this, 1, IO.IN, IO.NONE) - .setFilter(IntCircuitBehaviour::isIntegratedCircuit); - } else { - return new NotifiableItemStackHandler(this, 0, IO.NONE); - } - } - @Override public void onMachineRemoved() { if (!ConfigHolder.INSTANCE.machines.ghostCircuit) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index e8fe82f3999..d3c3422bde7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -75,9 +75,9 @@ public class ItemBusPartMachine extends TieredIOPartMachine @SyncToClient private boolean isDistinct = false; - public ItemBusPartMachine(IMachineBlockEntity holder, int tier, IO io, Object... args) { + public ItemBusPartMachine(IMachineBlockEntity holder, int tier, IO io) { super(holder, tier, io); - this.inventory = createInventory(args); + this.inventory = createInventory(); this.circuitSlotEnabled = true; this.circuitInventory = createCircuitItemHandler(io).shouldSearchContent(false); } @@ -91,12 +91,12 @@ protected int getInventorySize() { return sizeRoot * sizeRoot; } - protected NotifiableItemStackHandler createInventory(Object... args) { + protected NotifiableItemStackHandler createInventory() { return new NotifiableItemStackHandler(this, getInventorySize(), io); } - protected NotifiableItemStackHandler createCircuitItemHandler(Object... args) { - if (args.length > 0 && args[0] instanceof IO io && io == IO.IN) { + protected NotifiableItemStackHandler createCircuitItemHandler(IO io) { + if (io == IO.IN) { return new NotifiableItemStackHandler(this, 1, IO.IN, IO.NONE) .setFilter(IntCircuitBehaviour::isIntegratedCircuit); } else { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalComputationHatchMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalComputationHatchMachine.java index ebd6f036584..6b648c5c897 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalComputationHatchMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalComputationHatchMachine.java @@ -26,18 +26,7 @@ public class OpticalComputationHatchMachine extends MultiblockPartMachine { public OpticalComputationHatchMachine(IMachineBlockEntity holder, boolean transmitter) { super(holder); this.transmitter = transmitter; - this.computationContainer = createComputationContainer(transmitter); - } - - protected NotifiableComputationContainer createComputationContainer(Object... args) { - IO io = IO.IN; - if (args.length > 1 && args[args.length - 2] instanceof IO newIo) { - io = newIo; - } - if (args.length > 0 && args[args.length - 1] instanceof Boolean transmitter) { - return new NotifiableComputationContainer(this, io, transmitter); - } - throw new IllegalArgumentException(); + this.computationContainer = new NotifiableComputationContainer(this, IO.IN, transmitter); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java index a836518ca0a..8877bda776c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java @@ -23,14 +23,13 @@ @MethodsReturnNonnullByDefault public class PumpHatchPartMachine extends FluidHatchPartMachine { - public PumpHatchPartMachine(IMachineBlockEntity holder, Object... args) { - super(holder, 0, IO.OUT, FluidType.BUCKET_VOLUME, 1, args); + public PumpHatchPartMachine(IMachineBlockEntity holder) { + super(holder, 0, IO.OUT, FluidType.BUCKET_VOLUME, 1); } @Override - protected NotifiableFluidTank createTank(int initialCapacity, int slots, Object... args) { - return super.createTank(initialCapacity, slots) - .setFilter(fluidStack -> fluidStack.getFluid().is(GTMaterials.Water.getFluidTag())); + protected NotifiableFluidTank createTank(int initialCapacity, int slots) { + return super.createTank(initialCapacity, slots).setFilter(fluidStack -> fluidStack.getFluid().is(GTMaterials.Water.getFluidTag())); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ReservoirHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ReservoirHatchPartMachine.java index 8602416b9e2..bde394763e7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ReservoirHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ReservoirHatchPartMachine.java @@ -23,8 +23,8 @@ public class ReservoirHatchPartMachine extends FluidHatchPartMachine { public static final int FLUID_AMOUNT = 2_000_000_000; - public ReservoirHatchPartMachine(IMachineBlockEntity holder, Object... args) { - super(holder, GTValues.EV, IO.IN, FLUID_AMOUNT, 1, args); + public ReservoirHatchPartMachine(IMachineBlockEntity holder) { + super(holder, GTValues.EV, IO.IN, FLUID_AMOUNT, 1); } ////////////////////////////////// @@ -32,7 +32,7 @@ public ReservoirHatchPartMachine(IMachineBlockEntity holder, Object... args) { ////////////////////////////////// @Override - protected NotifiableFluidTank createTank(int initialCapacity, int slots, Object... args) { + protected NotifiableFluidTank createTank(int initialCapacity, int slots) { this.waterTank = new InfiniteWaterTank(initialCapacity); // allow both importing and exporting from the tank return new NotifiableFluidTank(this, Collections.singletonList(waterTank), io, IO.BOTH); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java index 8d39234eb77..3d1988a6c06 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java @@ -26,14 +26,13 @@ public class SteamHatchPartMachine extends FluidHatchPartMachine { public static final int INITIAL_TANK_CAPACITY = 64 * FluidType.BUCKET_VOLUME; public static final boolean IS_STEEL = ConfigHolder.INSTANCE.machines.steelSteamMultiblocks; - public SteamHatchPartMachine(IMachineBlockEntity holder, Object... args) { - super(holder, 0, IO.IN, SteamHatchPartMachine.INITIAL_TANK_CAPACITY, 1, args); + public SteamHatchPartMachine(IMachineBlockEntity holder) { + super(holder, 0, IO.IN, SteamHatchPartMachine.INITIAL_TANK_CAPACITY, 1); } @Override - protected NotifiableFluidTank createTank(int initialCapacity, int slots, Object... args) { - return super.createTank(initialCapacity, slots) - .setFilter(fluidStack -> fluidStack.getFluid().is(GTMaterials.Steam.getFluidTag())); + protected NotifiableFluidTank createTank(int initialCapacity, int slots) { + return super.createTank(initialCapacity, slots).setFilter(fluidStack -> fluidStack.getFluid().is(GTMaterials.Steam.getFluidTag())); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java index 59280df5e30..f52c72821c9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java @@ -23,8 +23,8 @@ public class SteamItemBusPartMachine extends ItemBusPartMachine { private final String autoTooltipKey; - public SteamItemBusPartMachine(IMachineBlockEntity holder, IO io, Object... args) { - super(holder, 1, io, args); + public SteamItemBusPartMachine(IMachineBlockEntity holder, IO io) { + super(holder, 1, io); autoTooltipKey = io == IO.IN ? "gtceu.gui.item_auto_input.tooltip" : "gtceu.gui.item_auto_output.tooltip"; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java index 379ad7db417..37d86e5d6d9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java @@ -24,21 +24,17 @@ @ParametersAreNonnullByDefault public class TankValvePartMachine extends MultiblockPartMachine { - private FluidTankProxyTrait tankProxy; - private ConditionalSubscriptionHandler autoIOSubscription; + private final FluidTankProxyTrait tankProxy; + private final ConditionalSubscriptionHandler autoIOSubscription; private ISubscription tankChangeListener; - public TankValvePartMachine(IMachineBlockEntity holder, boolean isMetal, Object... args) { + public TankValvePartMachine(IMachineBlockEntity holder, boolean isMetal) { super(holder); - tankProxy = createTank(args); + tankProxy = new FluidTankProxyTrait(this, IO.BOTH); autoIOSubscription = new ConditionalSubscriptionHandler(this, this::autoIO, this::shouldAutoIO); } - protected FluidTankProxyTrait createTank(Object... args) { - return new FluidTankProxyTrait(this, IO.BOTH); - } - @Override public boolean canShared() { return false; @@ -105,8 +101,6 @@ private boolean shouldAutoIO() { if (!isFormed()) return false; if (getFrontFacing() != Direction.DOWN) return false; if (tankProxy.isEmpty()) return false; - if (getTargetTank() == null) return false; - - return true; + return getTargetTank() != null; } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java index d49bd606411..a16827c1007 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java @@ -72,18 +72,18 @@ public class DrumMachine extends MetaMachine implements IAutoOutputFluid, IDropS @Getter protected final Material material; - public DrumMachine(IMachineBlockEntity holder, Material material, int maxStoredFluids, Object... args) { + public DrumMachine(IMachineBlockEntity holder, Material material, int maxStoredFluids) { super(holder); this.material = material; this.maxStoredFluids = maxStoredFluids; - this.cache = createCacheFluidHandler(args); + this.cache = createCacheFluidHandler(); } ////////////////////////////////////// // ***** Initialization *****// ////////////////////////////////////// - protected NotifiableFluidTank createCacheFluidHandler(Object... args) { + protected NotifiableFluidTank createCacheFluidHandler() { return new NotifiableFluidTank(this, 1, maxStoredFluids, IO.BOTH) .setFilter(material.getProperty(PropertyKey.FLUID_PIPE)); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java index 5fd6062ba4b..fc6ba962069 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java @@ -34,8 +34,8 @@ public abstract class MEBusPartMachine extends ItemBusPartMachine implements IGr protected final IActionSource actionSource; - public MEBusPartMachine(IMachineBlockEntity holder, IO io, Object... args) { - super(holder, GTValues.LuV, io, args); + public MEBusPartMachine(IMachineBlockEntity holder, IO io) { + super(holder, GTValues.LuV, io); this.nodeHolder = createNodeHolder(); this.actionSource = IActionSource.ofMachine(nodeHolder.getMainNode()::getNode); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java index f2b8ce52b29..e1272cf6a44 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java @@ -39,8 +39,8 @@ public class MEInputBusPartMachine extends MEBusPartMachine protected ExportOnlyAEItemList aeItemHandler; - public MEInputBusPartMachine(IMachineBlockEntity holder, Object... args) { - super(holder, IO.IN, args); + public MEInputBusPartMachine(IMachineBlockEntity holder) { + super(holder, IO.IN); } ///////////////////////////////// @@ -53,7 +53,7 @@ public void onMachineRemoved() { } @Override - protected NotifiableItemStackHandler createInventory(Object... args) { + protected NotifiableItemStackHandler createInventory() { this.aeItemHandler = new ExportOnlyAEItemList(this, CONFIG_SIZE); return this.aeItemHandler; } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java index 2f2b56ab523..43d76cbd8de 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java @@ -38,8 +38,8 @@ public class MEInputHatchPartMachine extends MEHatchPartMachine protected ExportOnlyAEFluidList aeFluidHandler; - public MEInputHatchPartMachine(IMachineBlockEntity holder, Object... args) { - super(holder, IO.IN, args); + public MEInputHatchPartMachine(IMachineBlockEntity holder) { + super(holder, IO.IN); } ///////////////////////////////// @@ -52,7 +52,7 @@ public void onMachineRemoved() { } @Override - protected NotifiableFluidTank createTank(int initialCapacity, int slots, Object... args) { + protected NotifiableFluidTank createTank(int initialCapacity, int slots) { this.aeFluidHandler = new ExportOnlyAEFluidList(this, slots); return aeFluidHandler; } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java index e14bcc73e44..8a0fac884b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java @@ -38,8 +38,8 @@ public class MEOutputBusPartMachine extends MEBusPartMachine implements IMachine @SaveField private KeyStorage internalBuffer; // Do not use KeyCounter, use our simple implementation - public MEOutputBusPartMachine(IMachineBlockEntity holder, Object... args) { - super(holder, IO.OUT, args); + public MEOutputBusPartMachine(IMachineBlockEntity holder) { + super(holder, IO.OUT); } ///////////////////////////////// @@ -47,7 +47,7 @@ public MEOutputBusPartMachine(IMachineBlockEntity holder, Object... args) { ///////////////////////////////// @Override - protected NotifiableItemStackHandler createInventory(Object... args) { + protected NotifiableItemStackHandler createInventory() { this.internalBuffer = new KeyStorage(); return new InaccessibleInfiniteHandler(this); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java index 080c73df86c..e57fe0feec0 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java @@ -37,8 +37,8 @@ public class MEOutputHatchPartMachine extends MEHatchPartMachine implements IMac @SaveField private KeyStorage internalBuffer; // Do not use KeyCounter, use our simple implementation - public MEOutputHatchPartMachine(IMachineBlockEntity holder, Object... args) { - super(holder, IO.OUT, args); + public MEOutputHatchPartMachine(IMachineBlockEntity holder) { + super(holder, IO.OUT); } ///////////////////////////////// @@ -46,7 +46,7 @@ public MEOutputHatchPartMachine(IMachineBlockEntity holder, Object... args) { ///////////////////////////////// @Override - protected NotifiableFluidTank createTank(int initialCapacity, int slots, Object... args) { + protected NotifiableFluidTank createTank(int initialCapacity, int slots) { this.internalBuffer = new KeyStorage(); return new InaccessibleInfiniteTank(this); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java index 85c7fa146df..34aa21fbd6b 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java @@ -143,8 +143,8 @@ public void setItemDirect(int slotIndex, ItemStack stack) { @Nullable protected TickableSubscription updateSubs; - public MEPatternBufferPartMachine(IMachineBlockEntity holder, Object... args) { - super(holder, IO.IN, args); + public MEPatternBufferPartMachine(IMachineBlockEntity holder) { + super(holder, IO.IN); patternInventory.setOnContentsChanged(() -> syncDataHolder.markClientSyncFieldDirty("patternInventory")); this.patternInventory.setFilter(stack -> stack.getItem() instanceof ProcessingPatternItem); for (int i = 0; i < this.internalInventory.length; i++) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java index 1ff345bcfa6..8869b710720 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java @@ -66,8 +66,8 @@ public class MEStockingBusPartMachine extends MEInputBusPartMachine implements I @Setter private Predicate autoPullTest; - public MEStockingBusPartMachine(IMachineBlockEntity holder, Object... args) { - super(holder, args); + public MEStockingBusPartMachine(IMachineBlockEntity holder) { + super(holder); this.autoPullTest = $ -> false; } @@ -88,7 +88,7 @@ public void removedFromController(IMultiController controller) { } @Override - protected NotifiableItemStackHandler createInventory(Object... args) { + protected NotifiableItemStackHandler createInventory() { this.aeItemHandler = new ExportOnlyAEStockingItemList(this, CONFIG_SIZE); return this.aeItemHandler; } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java index 56d62269d2a..5a5746cd285 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java @@ -70,8 +70,8 @@ public class MEStockingHatchPartMachine extends MEInputHatchPartMachine implemen @Setter private Predicate autoPullTest; - public MEStockingHatchPartMachine(IMachineBlockEntity holder, Object... args) { - super(holder, args); + public MEStockingHatchPartMachine(IMachineBlockEntity holder) { + super(holder); this.autoPullTest = $ -> false; } @@ -92,7 +92,7 @@ public void removedFromController(IMultiController controller) { } @Override - protected NotifiableFluidTank createTank(int initialCapacity, int slots, Object... args) { + protected NotifiableFluidTank createTank(int initialCapacity, int slots) { this.aeFluidHandler = new ExportOnlyAEStockingFluidList(this, CONFIG_SIZE); return this.aeFluidHandler; } From 095a5b3578e3ae6e249b77d2ac0f58a4255ef06b Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 7 Dec 2025 14:22:10 +1100 Subject: [PATCH 04/41] update multi controllers --- .../WorkableElectricMultiblockMachine.java | 10 ++++++++-- .../multiblock/WorkableMultiblockMachine.java | 13 ++++++------ .../electric/WorldAcceleratorMachine.java | 1 - .../electric/AssemblyLineMachine.java | 7 +------ .../electric/BedrockOreMinerMachine.java | 8 +------- .../electric/CentralMonitorMachine.java | 8 ++------ .../multiblock/electric/CleanroomMachine.java | 6 ++++-- .../electric/DistillationTowerMachine.java | 7 +------ .../electric/FluidDrillMachine.java | 8 +------- .../electric/LargeMinerMachine.java | 19 +++--------------- .../research/ResearchStationMachine.java | 9 ++------- .../primitive/CharcoalPileIgniterMachine.java | 7 +------ .../multiblock/primitive/CokeOvenMachine.java | 4 ++-- .../PrimitiveBlastFurnaceMachine.java | 8 ++++---- .../PrimitiveFancyUIWorkableMachine.java | 4 ++-- .../primitive/PrimitiveWorkableMachine.java | 20 +++++++++---------- .../multiblock/steam/LargeBoilerMachine.java | 4 ++-- .../steam/SteamParallelMultiblockMachine.java | 12 ++++++----- .../ae2/machine/MEOutputHatchPartMachine.java | 6 ------ 19 files changed, 58 insertions(+), 103 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java index 3585044097d..7a0241d51a8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java @@ -15,6 +15,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IVoidable; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IDisplayUIMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifierList; import com.gregtechceu.gtceu.common.data.GTRecipeModifiers; @@ -34,6 +35,7 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; +import java.util.function.Function; import javax.annotation.ParametersAreNonnullByDefault; @@ -50,8 +52,12 @@ public class WorkableElectricMultiblockMachine extends WorkableMultiblockMachine @Getter protected boolean batchEnabled; - public WorkableElectricMultiblockMachine(IMachineBlockEntity holder, Object... args) { - super(holder, args); + public WorkableElectricMultiblockMachine(IMachineBlockEntity holder, Function recipeLogicSupplier) { + super(holder, recipeLogicSupplier); + } + + public WorkableElectricMultiblockMachine(IMachineBlockEntity holder) { + super(holder); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java index d1065d67482..e571098c571 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java @@ -37,6 +37,7 @@ import org.jetbrains.annotations.VisibleForTesting; import java.util.*; +import java.util.function.Function; import javax.annotation.ParametersAreNonnullByDefault; @@ -78,16 +79,20 @@ public abstract class WorkableMultiblockMachine extends MultiblockControllerMach @SyncToClient protected VoidingMode voidingMode = VoidingMode.VOID_NONE; - public WorkableMultiblockMachine(IMachineBlockEntity holder, Object... args) { + public WorkableMultiblockMachine(IMachineBlockEntity holder, Function recipeLogicSupplier) { super(holder); this.recipeTypes = getDefinition().getRecipeTypes(); this.activeRecipeType = 0; - this.recipeLogic = createRecipeLogic(args); + this.recipeLogic = recipeLogicSupplier.apply(this); this.capabilitiesProxy = new EnumMap<>(IO.class); this.capabilitiesFlat = new EnumMap<>(IO.class); this.traitSubscriptions = new ArrayList<>(); } + public WorkableMultiblockMachine(IMachineBlockEntity holder) { + this(holder, RecipeLogic::new); + } + public void setMuffled(boolean muffled) { isMuffled = muffled; syncDataHolder.markClientSyncFieldDirty("isMuffled"); @@ -105,10 +110,6 @@ public void onUnload() { recipeLogic.inValid(); } - protected RecipeLogic createRecipeLogic(Object... args) { - return new RecipeLogic(this); - } - ////////////////////////////////////// // *** Multiblock LifeCycle ***// ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java index d8f5343b8f1..7faf1b3a176 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java @@ -12,7 +12,6 @@ import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; -import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.syncsystem.annotations.RerenderOnChanged; import com.gregtechceu.gtceu.syncsystem.annotations.SaveField; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java index 3943cdb19ab..a4ca77336b4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java @@ -46,7 +46,7 @@ public class AssemblyLineMachine extends WorkableElectricMultiblockMachine { protected boolean allowCircuitSlots; public AssemblyLineMachine(IMachineBlockEntity holder, boolean allowCircuitSlots) { - super(holder); + super(holder, AsslineRecipeLogic::new); this.allowCircuitSlots = allowCircuitSlots; } @@ -54,11 +54,6 @@ public AssemblyLineMachine(IMachineBlockEntity holder) { this(holder, false); } - @Override - protected RecipeLogic createRecipeLogic(Object... args) { - return new AsslineRecipeLogic(this); - } - public static Comparator partSorter(MultiblockControllerMachine mc) { return Comparator.comparing(p -> p.self().getPos(), RelativeDirection.RIGHT.getSorter(mc.getFrontFacing(), mc.getUpwardsFacing(), mc.isFlipped())); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java index af8040bc18f..147772181de 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java @@ -41,15 +41,10 @@ public class BedrockOreMinerMachine extends WorkableElectricMultiblockMachine im private final int tier; public BedrockOreMinerMachine(IMachineBlockEntity holder, int tier) { - super(holder); + super(holder, (m) -> new BedrockOreMinerLogic((BedrockOreMinerMachine)m)); this.tier = tier; } - @Override - protected RecipeLogic createRecipeLogic(Object... args) { - return new BedrockOreMinerLogic(this); - } - @Override public BedrockOreMinerLogic getRecipeLogic() { return (BedrockOreMinerLogic) super.getRecipeLogic(); @@ -57,7 +52,6 @@ public BedrockOreMinerLogic getRecipeLogic() { public int getEnergyTier() { var energyContainer = this.getCapabilitiesFlat(IO.IN, EURecipeCapability.CAP); - if (energyContainer == null) return this.tier; var energyCont = new EnergyContainerList(energyContainer.stream().filter(IEnergyContainer.class::isInstance) .map(IEnergyContainer.class::cast).toList()); return Math.min(this.tier + 1, Math.max(this.tier, GTUtil.getFloorTierByVoltage(energyCont.getInputVoltage()))); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java index feb3174f190..6b9f8b5ce19 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java @@ -17,6 +17,7 @@ import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockDisplayText; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; +import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.api.pattern.*; @@ -82,7 +83,7 @@ public class CentralMonitorMachine extends WorkableElectricMultiblockMachine private static TraceabilityPredicate MULTI_PREDICATE = null; public CentralMonitorMachine(IMachineBlockEntity holder) { - super(holder); + super(holder, CentralMonitorLogic::new); } public static TraceabilityPredicate getMultiPredicate() { @@ -112,11 +113,6 @@ public CentralMonitorLogic getRecipeLogic() { return (CentralMonitorLogic) super.getRecipeLogic(); } - @Override - protected RecipeLogic createRecipeLogic(Object... args) { - return new CentralMonitorLogic(this); - } - public @Nullable EnergyContainerList getFormedEnergyContainer() { return this.energyContainer; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java index 356b78d757b..0762f8393a8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java @@ -20,6 +20,7 @@ import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.api.pattern.BlockPattern; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; @@ -99,14 +100,15 @@ public class CleanroomMachine extends WorkableElectricMultiblockMachine private Collection cleanroomReceivers; public CleanroomMachine(IMachineBlockEntity metaTileEntityId) { - super(metaTileEntityId); + super(metaTileEntityId, (m) -> new CleanroomLogic((CleanroomMachine) m)); } ////////////////////////////////////// // ****** Initialization ******// ////////////////////////////////////// - protected RecipeLogic createRecipeLogic(Object... args) { + + protected RecipeLogic createRecipeLogic() { return new CleanroomLogic(this); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java index cf1ff37b221..3e0bfd7573e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java @@ -58,15 +58,10 @@ public DistillationTowerMachine(IMachineBlockEntity holder) { * @param yOffset The Y difference between the controller and the first fluid output */ public DistillationTowerMachine(IMachineBlockEntity holder, int yOffset) { - super(holder); + super(holder, DistillationTowerLogic::new); this.yOffset = yOffset; } - @Override - protected RecipeLogic createRecipeLogic(Object... args) { - return new DistillationTowerLogic(this); - } - @Override public DistillationTowerLogic getRecipeLogic() { return (DistillationTowerLogic) super.getRecipeLogic(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java index 647f0faa3b6..db4048c3803 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java @@ -42,15 +42,10 @@ public class FluidDrillMachine extends WorkableElectricMultiblockMachine impleme private final int tier; public FluidDrillMachine(IMachineBlockEntity holder, int tier) { - super(holder); + super(holder, (m) -> new FluidDrillLogic((FluidDrillMachine)m)); this.tier = tier; } - @Override - protected RecipeLogic createRecipeLogic(Object... args) { - return new FluidDrillLogic(this); - } - @NotNull @Override public FluidDrillLogic getRecipeLogic() { @@ -59,7 +54,6 @@ public FluidDrillLogic getRecipeLogic() { public int getEnergyTier() { var energyContainer = this.getCapabilitiesFlat(IO.IN, EURecipeCapability.CAP); - if (energyContainer == null) return this.tier; var energyCont = new EnergyContainerList(energyContainer.stream().filter(IEnergyContainer.class::isInstance) .map(IEnergyContainer.class::cast).toList()); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java index dce3e73544d..06395640b28 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java @@ -13,6 +13,7 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.api.transfer.fluid.FluidHandlerList; import com.gregtechceu.gtceu.common.data.GTBlocks; @@ -66,26 +67,12 @@ public class LargeMinerMachine extends WorkableElectricMultiblockMachine protected FluidHandlerList inputFluidInventory; private final int drillingFluidConsumePerTick; - public LargeMinerMachine(IMachineBlockEntity holder, int tier, int speed, int maximumChunkDiameter, int fortune, - int drillingFluidConsumePerTick) { - super(holder, fortune, speed, maximumChunkDiameter); + public LargeMinerMachine(IMachineBlockEntity holder, int tier, int speed, int maximumChunkDiameter, int fortune, int drillingFluidConsumePerTick) { + super(holder, (m) -> new LargeMinerLogic(m, fortune, speed, maximumChunkDiameter * CHUNK_LENGTH / 2)); this.tier = tier; this.drillingFluidConsumePerTick = drillingFluidConsumePerTick; } - ////////////////////////////////////// - // ***** Initialization ******// - ////////////////////////////////////// - @Override - protected @NotNull RecipeLogic createRecipeLogic(Object... args) { - if (args[args.length - 3] instanceof Integer fortune && args[args.length - 2] instanceof Integer speed && - args[args.length - 1] instanceof Integer maxRadius) { - return new LargeMinerLogic(this, fortune, speed, maxRadius * CHUNK_LENGTH / 2); - } - throw new IllegalArgumentException( - "MinerMachine need args [inventorySize, fortune, speed, maximumRadius] for initialization"); - } - @Override public LargeMinerLogic getRecipeLogic() { return (LargeMinerLogic) super.getRecipeLogic(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java index 0203d121056..d629f0247b1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java @@ -39,13 +39,8 @@ public class ResearchStationMachine extends WorkableElectricMultiblockMachine @Getter private IObjectHolder objectHolder; - public ResearchStationMachine(IMachineBlockEntity holder, Object... args) { - super(holder, args); - } - - @Override - protected RecipeLogic createRecipeLogic(Object... args) { - return new ResearchStationRecipeLogic(this); + public ResearchStationMachine(IMachineBlockEntity holder) { + super(holder, (m) -> new ResearchStationRecipeLogic((ResearchStationMachine)m)); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java index 325d0dd6d93..54f80a49e8f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java @@ -69,7 +69,7 @@ public class CharcoalPileIgniterMachine extends WorkableMultiblockMachine implem private boolean hasAir = false; public CharcoalPileIgniterMachine(IMachineBlockEntity holder) { - super(holder); + super(holder, (m) -> new CharcoalRecipeLogic((CharcoalPileIgniterMachine)m)); } @Override @@ -89,11 +89,6 @@ public void onStructureFormed() { this.getRecipeLogic().setDuration(Math.max(1, (int) Math.sqrt(logPos.size() * 240_000))); } - @Override - protected @NotNull CharcoalRecipeLogic createRecipeLogic(Object @NotNull... args) { - return new CharcoalRecipeLogic(this); - } - @Override public @NotNull CharcoalRecipeLogic getRecipeLogic() { return (CharcoalRecipeLogic) super.getRecipeLogic(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java index 6866527ec88..0ab67bcea15 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java @@ -36,8 +36,8 @@ @MethodsReturnNonnullByDefault public class CokeOvenMachine extends PrimitiveWorkableMachine implements IUIMachine { - public CokeOvenMachine(IMachineBlockEntity holder, Object... args) { - super(holder, args); + public CokeOvenMachine(IMachineBlockEntity holder) { + super(holder); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java index cb0c2071adf..13708951d30 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java @@ -56,18 +56,18 @@ public class PrimitiveBlastFurnaceMachine extends PrimitiveWorkableMachine imple @RerenderOnChanged private @NotNull Set fluidBlockOffsets = new HashSet<>(); - public PrimitiveBlastFurnaceMachine(IMachineBlockEntity holder, Object... args) { - super(holder, args); + public PrimitiveBlastFurnaceMachine(IMachineBlockEntity holder) { + super(holder); } @Override - protected NotifiableItemStackHandler createImportItemHandler(Object... args) { + protected NotifiableItemStackHandler createImportItemHandler() { return new NotifiableItemStackHandler(this, getRecipeType().getMaxInputs(ItemRecipeCapability.CAP), IO.IN, IO.NONE); } @Override - protected NotifiableItemStackHandler createExportItemHandler(Object... args) { + protected NotifiableItemStackHandler createExportItemHandler() { return new NotifiableItemStackHandler(this, getRecipeType().getMaxOutputs(ItemRecipeCapability.CAP), IO.OUT, IO.NONE); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveFancyUIWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveFancyUIWorkableMachine.java index 923e2394453..c939267c9d9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveFancyUIWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveFancyUIWorkableMachine.java @@ -5,7 +5,7 @@ public class PrimitiveFancyUIWorkableMachine extends PrimitiveWorkableMachine implements IFancyUIMachine { - public PrimitiveFancyUIWorkableMachine(IMachineBlockEntity holder, Object... args) { - super(holder, args); + public PrimitiveFancyUIWorkableMachine(IMachineBlockEntity holder) { + super(holder); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java index 5c160a7b283..989c486334c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java @@ -30,32 +30,32 @@ public class PrimitiveWorkableMachine extends WorkableMultiblockMachine @SaveField public final NotifiableFluidTank exportFluids; - public PrimitiveWorkableMachine(IMachineBlockEntity holder, Object... args) { - super(holder, args); - this.importItems = createImportItemHandler(args); - this.exportItems = createExportItemHandler(args); - this.importFluids = createImportFluidHandler(args); - this.exportFluids = createExportFluidHandler(args); + public PrimitiveWorkableMachine(IMachineBlockEntity holder) { + super(holder); + this.importItems = createImportItemHandler(); + this.exportItems = createExportItemHandler(); + this.importFluids = createImportFluidHandler(); + this.exportFluids = createExportFluidHandler(); } ////////////////////////////////////// // ***** Initialization ******// ////////////////////////////////////// - protected NotifiableItemStackHandler createImportItemHandler(Object... args) { + protected NotifiableItemStackHandler createImportItemHandler() { return new NotifiableItemStackHandler(this, getRecipeType().getMaxInputs(ItemRecipeCapability.CAP), IO.IN); } - protected NotifiableItemStackHandler createExportItemHandler(Object... args) { + protected NotifiableItemStackHandler createExportItemHandler() { return new NotifiableItemStackHandler(this, getRecipeType().getMaxOutputs(ItemRecipeCapability.CAP), IO.OUT); } - protected NotifiableFluidTank createImportFluidHandler(Object... args) { + protected NotifiableFluidTank createImportFluidHandler() { return new NotifiableFluidTank(this, getRecipeType().getMaxInputs(FluidRecipeCapability.CAP), 32 * FluidType.BUCKET_VOLUME, IO.IN); } - protected NotifiableFluidTank createExportFluidHandler(Object... args) { + protected NotifiableFluidTank createExportFluidHandler() { return new NotifiableFluidTank(this, getRecipeType().getMaxOutputs(FluidRecipeCapability.CAP), 32 * FluidType.BUCKET_VOLUME, IO.OUT); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java index a2ebd69e592..9566b2cb31b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java @@ -58,8 +58,8 @@ public class LargeBoilerMachine extends WorkableMultiblockMachine implements IEx protected TickableSubscription temperatureSubs; private int steamGenerated; - public LargeBoilerMachine(IMachineBlockEntity holder, int maxTemperature, int heatSpeed, Object... args) { - super(holder, args); + public LargeBoilerMachine(IMachineBlockEntity holder, int maxTemperature, int heatSpeed) { + super(holder); this.maxTemperature = maxTemperature; this.heatSpeed = heatSpeed; this.throttle = 100; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java index 6e34aceece9..15dd65eb804 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java @@ -49,7 +49,7 @@ public class SteamParallelMultiblockMachine extends WorkableMultiblockMachine im @Getter @Setter - private int maxParallels = ConfigHolder.INSTANCE.machines.steamMultiParallelAmount; + private int maxParallels; @Nullable private SteamEnergyRecipeHandler steamEnergy = null; @@ -57,11 +57,13 @@ public class SteamParallelMultiblockMachine extends WorkableMultiblockMachine im // if in millibuckets, this is 2.0, Meaning 2mb of steam -> 1 EU public static final double CONVERSION_RATE = 2.0; - public SteamParallelMultiblockMachine(IMachineBlockEntity holder, Object... args) { + public SteamParallelMultiblockMachine(IMachineBlockEntity holder, int maxParallels) { super(holder); - if (args.length > 0 && args[0] instanceof Integer i) { - this.maxParallels = i; - } + this.maxParallels = maxParallels; + } + + public SteamParallelMultiblockMachine(IMachineBlockEntity holder) { + this(holder, ConfigHolder.INSTANCE.machines.steamMultiParallelAmount); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java index e57fe0feec0..87299c7dc71 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java @@ -51,12 +51,6 @@ protected NotifiableFluidTank createTank(int initialCapacity, int slots) { return new InaccessibleInfiniteTank(this); } - @Override - public void onLoad() { - super.onLoad(); - if (isRemote()) return; - } - @Override public void onMachineRemoved() { var grid = getMainNode().getGrid(); From b18a3e82bea5d08a8aeeccd97be964661f227555 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 7 Dec 2025 14:25:09 +1100 Subject: [PATCH 05/41] remove args on some machines --- .../gtceu/common/machine/electric/TransformerMachine.java | 2 +- .../multiblock/electric/gcym/LargeChemicalBathMachine.java | 4 ++-- .../machine/multiblock/electric/gcym/LargeMixerMachine.java | 4 ++-- .../machine/multiblock/electric/research/HPCAMachine.java | 4 ++-- .../gtceu/common/machine/multiblock/part/CokeOvenHatch.java | 2 +- .../common/machine/multiblock/part/DualHatchPartMachine.java | 2 +- .../gtceu/integration/ae2/machine/MEHatchPartMachine.java | 4 ++-- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java index 6610bef390f..ed393fc9f6e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java @@ -41,7 +41,7 @@ public class TransformerMachine extends TieredEnergyMachine implements IControll @Getter private final int baseAmp; - public TransformerMachine(IMachineBlockEntity holder, int tier, int amp, Object... args) { + public TransformerMachine(IMachineBlockEntity holder, int tier, int amp) { super(holder, tier, new TieredEnergyMachineTraits() { @Override public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java index 7e5317cf63f..2523f71d90d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java @@ -28,8 +28,8 @@ public class LargeChemicalBathMachine extends WorkableElectricMultiblockMachine @RerenderOnChanged private @NotNull Set fluidBlockOffsets = new HashSet<>(); - public LargeChemicalBathMachine(IMachineBlockEntity holder, Object... args) { - super(holder, args); + public LargeChemicalBathMachine(IMachineBlockEntity holder) { + super(holder); } public void setFluidBlockOffsets(Set offsets) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java index 5598e8494ad..80c91dd05e0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java @@ -28,8 +28,8 @@ public class LargeMixerMachine extends WorkableElectricMultiblockMachine impleme @RerenderOnChanged private @NotNull Set fluidBlockOffsets = new HashSet<>(); - public LargeMixerMachine(IMachineBlockEntity holder, Object... args) { - super(holder, args); + public LargeMixerMachine(IMachineBlockEntity holder) { + super(holder); } public void setFluidBlockOffsets(Set offsets) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java index 4c7d39d0d41..fb5e46ec983 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java @@ -89,8 +89,8 @@ public class HPCAMachine extends WorkableElectricMultiblockMachine @Nullable protected TickableSubscription tickSubs; - public HPCAMachine(IMachineBlockEntity holder, Object... args) { - super(holder, args); + public HPCAMachine(IMachineBlockEntity holder) { + super(holder); this.energyContainer = new EnergyContainerList(new ArrayList<>()); this.progressSupplier = new TimedProgressSupplier(200, 47, false); this.hpcaHandler = new HPCAGridHandler(this); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java index 988fa023c7a..7df93ba07f9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java @@ -34,7 +34,7 @@ public class CokeOvenHatch extends MultiblockPartMachine { @Nullable protected ISubscription outputInventorySubs, outputTankSubs; - public CokeOvenHatch(IMachineBlockEntity holder, Object... args) { + public CokeOvenHatch(IMachineBlockEntity holder) { super(holder); this.inputInventory = new ItemHandlerProxyTrait(this, IO.IN); this.outputInventory = new ItemHandlerProxyTrait(this, IO.OUT); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java index e5664f302bd..ad7d7e1448c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java @@ -40,7 +40,7 @@ public class DualHatchPartMachine extends ItemBusPartMachine { private boolean hasFluidHandler; private boolean hasItemHandler; - public DualHatchPartMachine(IMachineBlockEntity holder, int tier, IO io, Object... args) { + public DualHatchPartMachine(IMachineBlockEntity holder, int tier, IO io) { super(holder, tier, io); this.tank = new NotifiableFluidTank(this, (int) Math.sqrt(getInventorySize()), getTankCapacity(INITIAL_TANK_CAPACITY, getTier()), io); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java index 0cf581461e5..ddaad0fc870 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java @@ -35,8 +35,8 @@ public abstract class MEHatchPartMachine extends FluidHatchPartMachine implement protected final IActionSource actionSource; - public MEHatchPartMachine(IMachineBlockEntity holder, IO io, Object... args) { - super(holder, GTValues.UHV, io, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_1X, CONFIG_SIZE, args); + public MEHatchPartMachine(IMachineBlockEntity holder, IO io) { + super(holder, GTValues.UHV, io, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_1X, CONFIG_SIZE); this.nodeHolder = createNodeHolder(); this.actionSource = IActionSource.ofMachine(nodeHolder.getMainNode()::getNode); } From 9e476e4d4780ebdbc5476c72a4af8bcd6d9969d1 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 7 Dec 2025 14:37:41 +1100 Subject: [PATCH 06/41] clear up unneeded ctor args --- .../gtceu/api/machine/MetaMachine.java | 2 - .../api/machine/SimpleTieredMachine.java | 37 +++++++------------ .../api/machine/TieredEnergyMachine.java | 25 +++++-------- .../api/machine/WorkableTieredMachine.java | 28 +++----------- 4 files changed, 27 insertions(+), 65 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index 8d9bf751a68..0a0b310b9d6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -120,8 +120,6 @@ public class MetaMachine implements ISyncManaged, IToolable, ITickSubscription, private final List serverTicks; private final List waitingToAdd; - public static abstract class MetaMachineTraits {} - public MetaMachine(IMachineBlockEntity holder) { this.holder = holder; this.coverContainer = new MachineCoverContainer(this); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java index 4f773b7a814..476e6cfd6f2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java @@ -105,36 +105,25 @@ public class SimpleTieredMachine extends WorkableTieredMachine @Nullable protected ISubscription exportItemSubs, exportFluidSubs, energySubs; - public static class SimpleTieredMachineTraits extends WorkableTieredMachineTraits { - public CustomItemStackHandler chargerItemHandler(SimpleTieredMachine machine) { - var handler = new CustomItemStackHandler() { - - public int getSlotLimit(int slot) { - return 1; - } - }; - handler.setFilter(item -> GTCapabilityHelper.getElectricItem(item) != null || - (ConfigHolder.INSTANCE.compat.energy.nativeEUToFE && - GTCapabilityHelper.getForgeEnergyItem(item) != null)); - return handler; - } - - public NotifiableItemStackHandler circuitItemHandler(SimpleTieredMachine machine) { - return new NotifiableItemStackHandler(machine, 1, IO.IN, IO.NONE) - .setFilter(IntCircuitBehaviour::isIntegratedCircuit); - } - } - - public SimpleTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction, SimpleTieredMachineTraits traits) { + public SimpleTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction, WorkableTieredMachineTraits traits) { super(holder, tier, tankScalingFunction, traits); this.outputFacingItems = hasFrontFacing() ? getFrontFacing().getOpposite() : Direction.UP; this.outputFacingFluids = outputFacingItems; - this.chargerInventory = traits.chargerItemHandler(this); - this.circuitInventory = traits.circuitItemHandler(this); + + this.chargerInventory = new CustomItemStackHandler() { + public int getSlotLimit(int slot) { + return 1; + } + }; + chargerInventory.setFilter(item -> GTCapabilityHelper.getElectricItem(item) != null || + (ConfigHolder.INSTANCE.compat.energy.nativeEUToFE && + GTCapabilityHelper.getForgeEnergyItem(item) != null)); + + this.circuitInventory = new NotifiableItemStackHandler(this, 1, IO.IN, IO.NONE).setFilter(IntCircuitBehaviour::isIntegratedCircuit); } public SimpleTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction) { - this(holder, tier, tankScalingFunction, new SimpleTieredMachineTraits()); + this(holder, tier, tankScalingFunction, new WorkableTieredMachineTraits()); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java index 3788c11bd8b..3e19efd57f2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java @@ -28,24 +28,17 @@ public class TieredEnergyMachine extends TieredMachine implements ITieredMachine public final NotifiableEnergyContainer energyContainer; protected TickableSubscription explosionSub; - public static class TieredEnergyMachineTraits extends MetaMachineTraits { - public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { - long tierVoltage = GTValues.V[machine.getTier()]; - if (machine.isEnergyEmitter()) { - return NotifiableEnergyContainer.emitterContainer(machine, - tierVoltage * 64L, tierVoltage, machine.getMaxInputOutputAmperage()); - } else return NotifiableEnergyContainer.receiverContainer(machine, - tierVoltage * 64L, tierVoltage, machine.getMaxInputOutputAmperage()); - } - } - - public TieredEnergyMachine(IMachineBlockEntity holder, int tier, TieredEnergyMachineTraits traits) { + public TieredEnergyMachine(IMachineBlockEntity holder, int tier) { super(holder, tier); - energyContainer = traits.energyContainer(this); - } - public TieredEnergyMachine(IMachineBlockEntity holder, int tier) { - this(holder, tier, new TieredEnergyMachineTraits()); + long tierVoltage = GTValues.V[getTier()]; + if (isEnergyEmitter()) { + energyContainer = NotifiableEnergyContainer.emitterContainer(this, + tierVoltage * 64L, tierVoltage, getMaxInputOutputAmperage()); + } else { + energyContainer = NotifiableEnergyContainer.receiverContainer(this, + tierVoltage * 64L, tierVoltage, getMaxInputOutputAmperage()); + } } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java index 257d1fe1a3e..5a31b759ce6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java @@ -45,17 +45,11 @@ public abstract class WorkableTieredMachine extends TieredEnergyMachine implemen @Setter private ICleanroomProvider cleanroom; @SaveField - public final NotifiableItemStackHandler importItems; + public final NotifiableItemStackHandler importItems, exportItems; @SaveField - public final NotifiableItemStackHandler exportItems; + public final NotifiableFluidTank importFluids, exportFluids; @SaveField - public final NotifiableFluidTank importFluids; - @SaveField - public final NotifiableFluidTank exportFluids; - @SaveField - public final NotifiableComputationContainer importComputation; - @SaveField - public final NotifiableComputationContainer exportComputation; + public final NotifiableComputationContainer importComputation, exportComputation; @Getter protected final Map> capabilitiesProxy; @Getter @@ -70,19 +64,7 @@ public abstract class WorkableTieredMachine extends TieredEnergyMachine implemen protected boolean isMuffled; protected boolean previouslyMuffled = true; - public static class WorkableTieredMachineTraits extends TieredEnergyMachineTraits { - @Override - public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { - long tierVoltage = GTValues.V[machine.getTier()]; - if (machine.isEnergyEmitter()) { - return RecipeAmperageEnergyContainer.makeEmitterContainer((IRecipeLogicMachine) machine, tierVoltage * 64L, - tierVoltage, machine.getMaxInputOutputAmperage()); - } else { - return RecipeAmperageEnergyContainer.makeReceiverContainer((IRecipeLogicMachine)machine, tierVoltage * 64L, - tierVoltage, machine.getMaxInputOutputAmperage()); - } - } - + public static class WorkableTieredMachineTraits { public RecipeLogic recipeLogic(WorkableTieredMachine machine) { return new RecipeLogic(machine); } @@ -115,7 +97,7 @@ public NotifiableComputationContainer exportComputation(WorkableTieredMachine ma } public WorkableTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction, WorkableTieredMachineTraits traits) { - super(holder, tier, traits); + super(holder, tier); this.overclockTier = getMaxOverclockTier(); this.recipeTypes = getDefinition().getRecipeTypes(); this.activeRecipeType = 0; From 29dc49dace3ed39f176cfbf3d7ff7ded1ad1c6a1 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 7 Dec 2025 14:41:27 +1100 Subject: [PATCH 07/41] spotless --- .../api/machine/SimpleTieredMachine.java | 7 +++++-- .../api/machine/WorkableTieredMachine.java | 10 +++++++--- .../WorkableElectricMultiblockMachine.java | 3 ++- .../multiblock/WorkableMultiblockMachine.java | 3 ++- .../gtceu/api/machine/steam/SteamMachine.java | 14 +++----------- .../machine/steam/SteamWorkableMachine.java | 19 +++++++++---------- .../electric/BatteryBufferMachine.java | 5 ++++- .../machine/electric/ChargerMachine.java | 5 ++++- .../machine/electric/ConverterMachine.java | 3 ++- .../common/machine/electric/MinerMachine.java | 1 + .../common/machine/electric/PumpMachine.java | 3 ++- .../machine/electric/TransformerMachine.java | 4 +++- .../electric/WorldAcceleratorMachine.java | 1 + .../electric/BedrockOreMinerMachine.java | 3 +-- .../electric/FluidDrillMachine.java | 3 +-- .../electric/LargeMinerMachine.java | 3 ++- .../research/ResearchStationMachine.java | 2 +- .../multiblock/part/DualHatchPartMachine.java | 3 ++- .../part/FluidHatchPartMachine.java | 5 ++--- .../multiblock/part/PumpHatchPartMachine.java | 3 ++- .../part/SteamHatchPartMachine.java | 3 ++- .../primitive/CharcoalPileIgniterMachine.java | 2 +- .../machine/steam/SteamMinerMachine.java | 9 +-------- 23 files changed, 60 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java index 476e6cfd6f2..b5f1f74b15a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java @@ -105,12 +105,14 @@ public class SimpleTieredMachine extends WorkableTieredMachine @Nullable protected ISubscription exportItemSubs, exportFluidSubs, energySubs; - public SimpleTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction, WorkableTieredMachineTraits traits) { + public SimpleTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction, + WorkableTieredMachineTraits traits) { super(holder, tier, tankScalingFunction, traits); this.outputFacingItems = hasFrontFacing() ? getFrontFacing().getOpposite() : Direction.UP; this.outputFacingFluids = outputFacingItems; this.chargerInventory = new CustomItemStackHandler() { + public int getSlotLimit(int slot) { return 1; } @@ -119,7 +121,8 @@ public int getSlotLimit(int slot) { (ConfigHolder.INSTANCE.compat.energy.nativeEUToFE && GTCapabilityHelper.getForgeEnergyItem(item) != null)); - this.circuitInventory = new NotifiableItemStackHandler(this, 1, IO.IN, IO.NONE).setFilter(IntCircuitBehaviour::isIntegratedCircuit); + this.circuitInventory = new NotifiableItemStackHandler(this, 1, IO.IN, IO.NONE) + .setFilter(IntCircuitBehaviour::isIntegratedCircuit); } public SimpleTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java index 5a31b759ce6..6e16390ae7e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java @@ -65,16 +65,19 @@ public abstract class WorkableTieredMachine extends TieredEnergyMachine implemen protected boolean previouslyMuffled = true; public static class WorkableTieredMachineTraits { + public RecipeLogic recipeLogic(WorkableTieredMachine machine) { return new RecipeLogic(machine); } public NotifiableItemStackHandler importItemHandler(WorkableTieredMachine machine) { - return new NotifiableItemStackHandler(machine, machine.getRecipeType().getMaxInputs(ItemRecipeCapability.CAP), IO.IN); + return new NotifiableItemStackHandler(machine, + machine.getRecipeType().getMaxInputs(ItemRecipeCapability.CAP), IO.IN); } public NotifiableItemStackHandler exportItemHandler(WorkableTieredMachine machine) { - return new NotifiableItemStackHandler(machine, machine.getRecipeType().getMaxOutputs(ItemRecipeCapability.CAP), IO.OUT); + return new NotifiableItemStackHandler(machine, + machine.getRecipeType().getMaxOutputs(ItemRecipeCapability.CAP), IO.OUT); } public NotifiableFluidTank importFluidTank(WorkableTieredMachine machine) { @@ -96,7 +99,8 @@ public NotifiableComputationContainer exportComputation(WorkableTieredMachine ma } } - public WorkableTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction, WorkableTieredMachineTraits traits) { + public WorkableTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction, + WorkableTieredMachineTraits traits) { super(holder, tier); this.overclockTier = getMaxOverclockTier(); this.recipeTypes = getDefinition().getRecipeTypes(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java index 7a0241d51a8..fc4335f91ed 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java @@ -52,7 +52,8 @@ public class WorkableElectricMultiblockMachine extends WorkableMultiblockMachine @Getter protected boolean batchEnabled; - public WorkableElectricMultiblockMachine(IMachineBlockEntity holder, Function recipeLogicSupplier) { + public WorkableElectricMultiblockMachine(IMachineBlockEntity holder, + Function recipeLogicSupplier) { super(holder, recipeLogicSupplier); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java index e571098c571..8b9df169677 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java @@ -79,7 +79,8 @@ public abstract class WorkableMultiblockMachine extends MultiblockControllerMach @SyncToClient protected VoidingMode voidingMode = VoidingMode.VOID_NONE; - public WorkableMultiblockMachine(IMachineBlockEntity holder, Function recipeLogicSupplier) { + public WorkableMultiblockMachine(IMachineBlockEntity holder, + Function recipeLogicSupplier) { super(holder); this.recipeTypes = getDefinition().getRecipeTypes(); this.activeRecipeType = 0; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java index 1aa2956397c..60fe955a384 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java @@ -28,19 +28,11 @@ public abstract class SteamMachine extends MetaMachine implements ITieredMachine @SaveField public final NotifiableFluidTank steamTank; - public static abstract class SteamMachineTraits extends MetaMachineTraits { - - public NotifiableFluidTank steamTank(SteamMachine machine) { - NotifiableFluidTank tank = new NotifiableFluidTank(machine, 1, 16 * FluidType.BUCKET_VOLUME, IO.IN); - tank.setFilter(f -> f.getFluid().is(GTMaterials.Steam.getFluidTag())); - return tank; - } - } - - public SteamMachine(IMachineBlockEntity holder, boolean isHighPressure, SteamMachineTraits traits) { + public SteamMachine(IMachineBlockEntity holder, boolean isHighPressure) { super(holder); this.isHighPressure = isHighPressure; - this.steamTank = traits.steamTank(this); + this.steamTank = new NotifiableFluidTank(this, 1, 16 * FluidType.BUCKET_VOLUME, IO.IN) + .setFilter(f -> f.getFluid().is(GTMaterials.Steam.getFluidTag())); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java index 680fd6910c1..665bc6bcd73 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java @@ -35,6 +35,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; +import java.util.function.Function; import javax.annotation.ParametersAreNonnullByDefault; @@ -72,24 +73,22 @@ public abstract class SteamWorkableMachine extends SteamMachine protected final Map, List>>> capabilitiesFlat; protected final List traitSubscriptions; - public static class SteamWorkableMachineTraits extends SteamMachineTraits { - - public RecipeLogic recipeLogic(SteamWorkableMachine machine) { - return new RecipeLogic(machine); - } - } - - public SteamWorkableMachine(IMachineBlockEntity holder, boolean isHighPressure, SteamWorkableMachineTraits traits) { - super(holder, isHighPressure, traits); + public SteamWorkableMachine(IMachineBlockEntity holder, boolean isHighPressure, + Function recipeLogicSupplier) { + super(holder, isHighPressure); this.recipeTypes = getDefinition().getRecipeTypes(); this.activeRecipeType = 0; - this.recipeLogic = traits.recipeLogic(this); + this.recipeLogic = recipeLogicSupplier.apply(this); this.capabilitiesProxy = new EnumMap<>(IO.class); this.capabilitiesFlat = new EnumMap<>(IO.class); this.traitSubscriptions = new ArrayList<>(); this.outputFacing = hasFrontFacing() ? getFrontFacing().getOpposite() : Direction.UP; } + public SteamWorkableMachine(IMachineBlockEntity holder, boolean isHighPressure) { + this(holder, isHighPressure, RecipeLogic::new); + } + ////////////////////////////////////// // ***** Initialization *****// ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java index b8080b87980..14177ad927d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java @@ -54,6 +54,7 @@ public class BatteryBufferMachine extends TieredEnergyMachine public BatteryBufferMachine(IMachineBlockEntity holder, int tier, int inventorySize) { super(holder, tier, new TieredEnergyMachineTraits() { + @Override public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { return new EnergyBatteryTrait((BatteryBufferMachine) machine, inventorySize); @@ -207,6 +208,7 @@ protected static class EnergyBatteryTrait extends NotifiableEnergyContainer { private BatteryBufferMachine machine; private final int tier; + protected EnergyBatteryTrait(BatteryBufferMachine machine, int inventorySize) { super(machine, GTValues.V[machine.getTier()] * inventorySize * 32L, GTValues.V[machine.getTier()], inventorySize * AMPS_PER_BATTERY, GTValues.V[machine.getTier()], inventorySize); @@ -228,7 +230,8 @@ public void checkOutputSubscription() { @Override public void serverTick() { var outFacing = machine.getFrontFacing(); - var energyContainer = GTCapabilityHelper.getEnergyContainer(machine.getLevel(), machine.getPos().relative(outFacing), + var energyContainer = GTCapabilityHelper.getEnergyContainer(machine.getLevel(), + machine.getPos().relative(outFacing), outFacing.getOpposite()); if (energyContainer == null) { return; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java index 2797ffbceb1..0dbdd4c900f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java @@ -77,9 +77,10 @@ public enum State implements StringRepresentable { public ChargerMachine(IMachineBlockEntity holder, int tier, int inventorySize) { super(holder, tier, new TieredEnergyMachineTraits() { + @Override public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { - return new EnergyBatteryTrait((ChargerMachine)machine, inventorySize); + return new EnergyBatteryTrait((ChargerMachine) machine, inventorySize); } }); this.isWorkingEnabled = true; @@ -193,7 +194,9 @@ private void changeState(State newState) { } protected static class EnergyBatteryTrait extends NotifiableEnergyContainer { + private ChargerMachine machine; + protected EnergyBatteryTrait(ChargerMachine machine, int inventorySize) { super(machine, GTValues.V[machine.tier] * inventorySize * 32L, GTValues.V[machine.tier], inventorySize * AMPS_PER_ITEM, 0L, 0L); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java index 902aeb793a7..5677c7a70b9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java @@ -37,9 +37,10 @@ public class ConverterMachine extends TieredEnergyMachine { public ConverterMachine(IMachineBlockEntity holder, int tier, int amps) { super(holder, tier, new TieredEnergyMachineTraits() { + @Override public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { - return new ConverterTrait((ConverterMachine)machine, amps); + return new ConverterTrait((ConverterMachine) machine, amps); } }); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java index cda3c144a16..941dbb2e038 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java @@ -95,6 +95,7 @@ public class MinerMachine extends WorkableTieredMachine public MinerMachine(IMachineBlockEntity holder, int tier, int speed, int maximumRadius, int fortune) { super(holder, tier, GTMachineUtils.defaultTankSizeFunction, new WorkableTieredMachineTraits() { + @Override public NotifiableItemStackHandler importItemHandler(WorkableTieredMachine machine) { return new NotifiableItemStackHandler(machine, 0, IO.IN); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java index 256371cdd27..cc79813a36f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java @@ -77,7 +77,8 @@ public class PumpMachine extends TieredEnergyMachine implements IAutoOutputFluid public PumpMachine(IMachineBlockEntity holder, int tier) { super(holder, tier); - this.cache = new NotifiableFluidTank(this, 1, 16 * FluidType.BUCKET_VOLUME * Math.max(1, getTier()), IO.NONE, IO.OUT); + this.cache = new NotifiableFluidTank(this, 1, 16 * FluidType.BUCKET_VOLUME * Math.max(1, getTier()), IO.NONE, + IO.OUT); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java index ed393fc9f6e..0c357e3f03a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java @@ -43,11 +43,13 @@ public class TransformerMachine extends TieredEnergyMachine implements IControll public TransformerMachine(IMachineBlockEntity holder, int tier, int amp) { super(holder, tier, new TieredEnergyMachineTraits() { + @Override public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { NotifiableEnergyContainer energyContainer; long tierVoltage = GTValues.V[machine.getTier()]; - energyContainer = new NotifiableEnergyContainer(machine, tierVoltage * 8L, tierVoltage * 4, amp, tierVoltage, + energyContainer = new NotifiableEnergyContainer(machine, tierVoltage * 8L, tierVoltage * 4, amp, + tierVoltage, 4L * amp); return energyContainer; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java index 7faf1b3a176..c5fc17275e2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java @@ -88,6 +88,7 @@ public class WorldAcceleratorMachine extends TieredEnergyMachine implements ICon public WorldAcceleratorMachine(IMachineBlockEntity holder, int tier) { super(holder, tier, new TieredEnergyMachineTraits() { + @Override public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { long tierVoltage = GTValues.V[machine.getTier()]; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java index 147772181de..35f65f686f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java @@ -10,7 +10,6 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; -import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTMaterialBlocks; @@ -41,7 +40,7 @@ public class BedrockOreMinerMachine extends WorkableElectricMultiblockMachine im private final int tier; public BedrockOreMinerMachine(IMachineBlockEntity holder, int tier) { - super(holder, (m) -> new BedrockOreMinerLogic((BedrockOreMinerMachine)m)); + super(holder, (m) -> new BedrockOreMinerLogic((BedrockOreMinerMachine) m)); this.tier = tier; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java index db4048c3803..fc3462893c1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java @@ -9,7 +9,6 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; -import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTMaterialBlocks; @@ -42,7 +41,7 @@ public class FluidDrillMachine extends WorkableElectricMultiblockMachine impleme private final int tier; public FluidDrillMachine(IMachineBlockEntity holder, int tier) { - super(holder, (m) -> new FluidDrillLogic((FluidDrillMachine)m)); + super(holder, (m) -> new FluidDrillLogic((FluidDrillMachine) m)); this.tier = tier; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java index 06395640b28..5ac7526f892 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java @@ -67,7 +67,8 @@ public class LargeMinerMachine extends WorkableElectricMultiblockMachine protected FluidHandlerList inputFluidInventory; private final int drillingFluidConsumePerTick; - public LargeMinerMachine(IMachineBlockEntity holder, int tier, int speed, int maximumChunkDiameter, int fortune, int drillingFluidConsumePerTick) { + public LargeMinerMachine(IMachineBlockEntity holder, int tier, int speed, int maximumChunkDiameter, int fortune, + int drillingFluidConsumePerTick) { super(holder, (m) -> new LargeMinerLogic(m, fortune, speed, maximumChunkDiameter * CHUNK_LENGTH / 2)); this.tier = tier; this.drillingFluidConsumePerTick = drillingFluidConsumePerTick; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java index d629f0247b1..ec1b59ee052 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java @@ -40,7 +40,7 @@ public class ResearchStationMachine extends WorkableElectricMultiblockMachine private IObjectHolder objectHolder; public ResearchStationMachine(IMachineBlockEntity holder) { - super(holder, (m) -> new ResearchStationRecipeLogic((ResearchStationMachine)m)); + super(holder, (m) -> new ResearchStationRecipeLogic((ResearchStationMachine) m)); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java index ad7d7e1448c..0e5f44dc123 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java @@ -42,7 +42,8 @@ public class DualHatchPartMachine extends ItemBusPartMachine { public DualHatchPartMachine(IMachineBlockEntity holder, int tier, IO io) { super(holder, tier, io); - this.tank = new NotifiableFluidTank(this, (int) Math.sqrt(getInventorySize()), getTankCapacity(INITIAL_TANK_CAPACITY, getTier()), io); + this.tank = new NotifiableFluidTank(this, (int) Math.sqrt(getInventorySize()), + getTankCapacity(INITIAL_TANK_CAPACITY, getTier()), io); } //////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index 98df57bbae2..f7fe1b5dabc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -50,7 +50,6 @@ import org.jetbrains.annotations.Nullable; import javax.annotation.ParametersAreNonnullByDefault; -import java.util.function.Function; @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault @@ -75,7 +74,6 @@ public class FluidHatchPartMachine extends TieredIOPartMachine implements IMachi @SaveField protected final NotifiableItemStackHandler circuitInventory; - public FluidHatchPartMachine(IMachineBlockEntity holder, int tier, IO io, int initialCapacity, int slots) { super(holder, tier, io); this.slots = slots; @@ -83,7 +81,8 @@ public FluidHatchPartMachine(IMachineBlockEntity holder, int tier, IO io, int in if (io == IO.IN) { this.circuitSlotEnabled = true; - this.circuitInventory = new NotifiableItemStackHandler(this, 1, IO.IN, IO.NONE).setFilter(IntCircuitBehaviour::isIntegratedCircuit).shouldSearchContent(false); + this.circuitInventory = new NotifiableItemStackHandler(this, 1, IO.IN, IO.NONE) + .setFilter(IntCircuitBehaviour::isIntegratedCircuit).shouldSearchContent(false); } else { this.circuitSlotEnabled = false; this.circuitInventory = new NotifiableItemStackHandler(this, 0, IO.NONE).shouldSearchContent(false); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java index 8877bda776c..4fcfb073046 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java @@ -29,7 +29,8 @@ public PumpHatchPartMachine(IMachineBlockEntity holder) { @Override protected NotifiableFluidTank createTank(int initialCapacity, int slots) { - return super.createTank(initialCapacity, slots).setFilter(fluidStack -> fluidStack.getFluid().is(GTMaterials.Water.getFluidTag())); + return super.createTank(initialCapacity, slots) + .setFilter(fluidStack -> fluidStack.getFluid().is(GTMaterials.Water.getFluidTag())); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java index 3d1988a6c06..ab63a884b64 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java @@ -32,7 +32,8 @@ public SteamHatchPartMachine(IMachineBlockEntity holder) { @Override protected NotifiableFluidTank createTank(int initialCapacity, int slots) { - return super.createTank(initialCapacity, slots).setFilter(fluidStack -> fluidStack.getFluid().is(GTMaterials.Steam.getFluidTag())); + return super.createTank(initialCapacity, slots) + .setFilter(fluidStack -> fluidStack.getFluid().is(GTMaterials.Steam.getFluidTag())); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java index 54f80a49e8f..fd6de76cde9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java @@ -69,7 +69,7 @@ public class CharcoalPileIgniterMachine extends WorkableMultiblockMachine implem private boolean hasAir = false; public CharcoalPileIgniterMachine(IMachineBlockEntity holder) { - super(holder, (m) -> new CharcoalRecipeLogic((CharcoalPileIgniterMachine)m)); + super(holder, (m) -> new CharcoalRecipeLogic((CharcoalPileIgniterMachine) m)); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java index 2d9c91cb0ef..1a9b1d00dad 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java @@ -12,7 +12,6 @@ import com.gregtechceu.gtceu.api.machine.feature.*; import com.gregtechceu.gtceu.api.machine.steam.SteamWorkableMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; -import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.common.item.PortableScannerBehavior; import com.gregtechceu.gtceu.common.machine.trait.miner.SteamMinerLogic; import com.gregtechceu.gtceu.syncsystem.annotations.SaveField; @@ -68,13 +67,7 @@ public class SteamMinerMachine extends SteamWorkableMachine implements IMiner, I public SteamMinerMachine(IMachineBlockEntity holder, boolean isHighPressure, int speed, int maximumRadius, int fortune, int energyPerTick) { - super(holder, isHighPressure, new SteamWorkableMachineTraits() { - - @Override - public RecipeLogic recipeLogic(SteamWorkableMachine machine) { - return new SteamMinerLogic(machine, fortune, speed, maximumRadius); - } - }); + super(holder, isHighPressure, (m) -> new SteamMinerLogic(m, fortune, speed, maximumRadius)); this.inventorySize = 4; this.energyPerTick = energyPerTick; From 927cca13424407aae99b0a8bf9b454b97baababc Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 7 Dec 2025 14:53:42 +1100 Subject: [PATCH 08/41] remove more unneeded args --- .../api/machine/TieredEnergyMachine.java | 8 +++++++ ...eredWorkableElectricMultiblockMachine.java | 4 ++-- .../api/machine/steam/SimpleSteamMachine.java | 2 +- .../api/machine/steam/SteamBoilerMachine.java | 2 +- .../electric/BatteryBufferMachine.java | 9 ++------ .../machine/electric/ChargerMachine.java | 9 ++------ .../machine/electric/ConverterMachine.java | 9 +------- .../machine/electric/TransformerMachine.java | 18 ++++++--------- .../electric/WorldAcceleratorMachine.java | 10 +++------ .../electric/AssemblyLineMachine.java | 22 ++++++++++--------- 10 files changed, 39 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java index 3e19efd57f2..7a90f778617 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java @@ -17,6 +17,8 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.util.Mth; +import java.util.function.Function; + import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault @@ -28,6 +30,12 @@ public class TieredEnergyMachine extends TieredMachine implements ITieredMachine public final NotifiableEnergyContainer energyContainer; protected TickableSubscription explosionSub; + public TieredEnergyMachine(IMachineBlockEntity holder, int tier, + Function energyContainerSupplier) { + super(holder, tier); + energyContainer = energyContainerSupplier.apply(this); + } + public TieredEnergyMachine(IMachineBlockEntity holder, int tier) { super(holder, tier); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java index 4954cbb2915..357863d1c3e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java @@ -22,8 +22,8 @@ public class TieredWorkableElectricMultiblockMachine extends WorkableElectricMul @Getter protected int overclockTier; - public TieredWorkableElectricMultiblockMachine(IMachineBlockEntity holder, int tier, Object... args) { - super(holder, args); + public TieredWorkableElectricMultiblockMachine(IMachineBlockEntity holder, int tier) { + super(holder); this.tier = tier; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java index f819df47994..a9082d0280b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java @@ -55,7 +55,7 @@ public class SimpleSteamMachine extends SteamWorkableMachine implements IExhaust private boolean needsVenting; public SimpleSteamMachine(IMachineBlockEntity holder, boolean isHighPressure) { - super(holder, isHighPressure, new SteamWorkableMachineTraits()); + super(holder, isHighPressure); this.importItems = createImportItemHandler(); this.exportItems = createExportItemHandler(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java index 719e1fda6e0..eecebe1db04 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java @@ -86,7 +86,7 @@ public abstract class SteamBoilerMachine extends SteamWorkableMachine protected ISubscription steamTankSubs; public SteamBoilerMachine(IMachineBlockEntity holder, boolean isHighPressure) { - super(holder, isHighPressure, new SteamWorkableMachineTraits()); + super(holder, isHighPressure); this.waterTank = createWaterTank(); this.waterTank.setFilter(fluid -> fluid.getFluid().is(GTMaterials.Water.getFluidTag())); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java index 14177ad927d..19fa17e872f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java @@ -53,13 +53,8 @@ public class BatteryBufferMachine extends TieredEnergyMachine protected final CustomItemStackHandler batteryInventory; public BatteryBufferMachine(IMachineBlockEntity holder, int tier, int inventorySize) { - super(holder, tier, new TieredEnergyMachineTraits() { - - @Override - public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { - return new EnergyBatteryTrait((BatteryBufferMachine) machine, inventorySize); - } - }); + super(holder, tier, + (TieredEnergyMachine machine) -> new EnergyBatteryTrait((BatteryBufferMachine) machine, inventorySize)); this.isWorkingEnabled = true; this.inventorySize = inventorySize; this.batteryInventory = createBatteryInventory(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java index 0dbdd4c900f..063561af279 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java @@ -76,13 +76,8 @@ public enum State implements StringRepresentable { private State state; public ChargerMachine(IMachineBlockEntity holder, int tier, int inventorySize) { - super(holder, tier, new TieredEnergyMachineTraits() { - - @Override - public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { - return new EnergyBatteryTrait((ChargerMachine) machine, inventorySize); - } - }); + super(holder, tier, + (TieredEnergyMachine machine) -> new EnergyBatteryTrait((ChargerMachine) machine, inventorySize)); this.isWorkingEnabled = true; this.inventorySize = inventorySize; this.chargerInventory = createChargerInventory(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java index 5677c7a70b9..42b44071528 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; -import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.common.machine.trait.ConverterTrait; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; @@ -36,13 +35,7 @@ public class ConverterMachine extends TieredEnergyMachine { public static final BooleanProperty FE_TO_EU_PROPERTY = GTMachineModelProperties.IS_FE_TO_EU; public ConverterMachine(IMachineBlockEntity holder, int tier, int amps) { - super(holder, tier, new TieredEnergyMachineTraits() { - - @Override - public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { - return new ConverterTrait((ConverterMachine) machine, amps); - } - }); + super(holder, tier, (TieredEnergyMachine machine) -> new ConverterTrait((ConverterMachine) machine, amps)); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java index 0c357e3f03a..dfb87193c5e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java @@ -42,17 +42,13 @@ public class TransformerMachine extends TieredEnergyMachine implements IControll private final int baseAmp; public TransformerMachine(IMachineBlockEntity holder, int tier, int amp) { - super(holder, tier, new TieredEnergyMachineTraits() { - - @Override - public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { - NotifiableEnergyContainer energyContainer; - long tierVoltage = GTValues.V[machine.getTier()]; - energyContainer = new NotifiableEnergyContainer(machine, tierVoltage * 8L, tierVoltage * 4, amp, - tierVoltage, - 4L * amp); - return energyContainer; - } + super(holder, tier, (TieredEnergyMachine machine) -> { + NotifiableEnergyContainer energyContainer; + long tierVoltage = GTValues.V[machine.getTier()]; + energyContainer = new NotifiableEnergyContainer(machine, tierVoltage * 8L, tierVoltage * 4, amp, + tierVoltage, + 4L * amp); + return energyContainer; }); energyContainer.setSideInputCondition(s -> s == getFrontFacing() && isWorkingEnabled()); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java index c5fc17275e2..fc77e2f9caf 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java @@ -87,13 +87,9 @@ public class WorldAcceleratorMachine extends TieredEnergyMachine implements ICon private TickableSubscription tickSubs; public WorldAcceleratorMachine(IMachineBlockEntity holder, int tier) { - super(holder, tier, new TieredEnergyMachineTraits() { - - @Override - public NotifiableEnergyContainer energyContainer(TieredEnergyMachine machine) { - long tierVoltage = GTValues.V[machine.getTier()]; - return new NotifiableEnergyContainer(machine, tierVoltage * 256L, tierVoltage, 8, 0L, 0L); - } + super(holder, tier, (TieredEnergyMachine machine) -> { + long tierVoltage = GTValues.V[machine.getTier()]; + return new NotifiableEnergyContainer(machine, tierVoltage * 256L, tierVoltage, 8, 0L, 0L); }); this.speed = (int) Math.pow(2, tier); this.successLimit = SUCCESS_LIMITS[tier - 1]; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java index a4ca77336b4..76e9664e599 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; @@ -46,7 +45,7 @@ public class AssemblyLineMachine extends WorkableElectricMultiblockMachine { protected boolean allowCircuitSlots; public AssemblyLineMachine(IMachineBlockEntity holder, boolean allowCircuitSlots) { - super(holder, AsslineRecipeLogic::new); + super(holder, machine -> new AsslineRecipeLogic((AssemblyLineMachine) machine)); this.allowCircuitSlots = allowCircuitSlots; } @@ -257,16 +256,19 @@ private ActionResult consumeAll(@NotNull GTRecipe recipe, boolean isTick, RecipeHelper.handleRecipeIO(this, copyWithoutItemsFluids, IO.IN, chanceCaches); } - class AsslineRecipeLogic extends RecipeLogic { + static class AsslineRecipeLogic extends RecipeLogic { - public AsslineRecipeLogic(IRecipeLogicMachine machine) { + private final AssemblyLineMachine machine; + + public AsslineRecipeLogic(AssemblyLineMachine machine) { super(machine); + this.machine = machine; } @Override protected ActionResult handleRecipeIO(GTRecipe recipe, IO io) { if (io.equals(IO.IN)) { - return consumeAll(recipe, false, this.getChanceCaches()); + return machine.consumeAll(recipe, false, this.getChanceCaches()); } return RecipeHelper.handleRecipeIO(machine, recipe, io, this.chanceCaches); } @@ -274,7 +276,7 @@ protected ActionResult handleRecipeIO(GTRecipe recipe, IO io) { @Override protected ActionResult handleTickRecipeIO(GTRecipe recipe, IO io) { if (io.equals(IO.IN)) { - return consumeAll(recipe, true, this.getChanceCaches()); + return machine.consumeAll(recipe, true, this.getChanceCaches()); } return RecipeHelper.handleTickRecipeIO(machine, recipe, io, this.chanceCaches); } @@ -287,12 +289,12 @@ protected ActionResult matchRecipe(GTRecipe recipe) { var config = ConfigHolder.INSTANCE.machines; if (!config.orderedAssemblyLineItems && !config.orderedAssemblyLineFluids) return ActionResult.SUCCESS; - if (!checkItemInputs(recipe, false)) return ActionResult.FAIL_NO_REASON; - if (!checkItemInputs(recipe, true)) return ActionResult.FAIL_NO_REASON; + if (!machine.checkItemInputs(recipe, false)) return ActionResult.FAIL_NO_REASON; + if (!machine.checkItemInputs(recipe, true)) return ActionResult.FAIL_NO_REASON; if (!config.orderedAssemblyLineFluids) return ActionResult.SUCCESS; - if (!checkFluidInputs(recipe, false)) return ActionResult.FAIL_NO_REASON; - if (!checkFluidInputs(recipe, true)) return ActionResult.FAIL_NO_REASON; + if (!machine.checkFluidInputs(recipe, false)) return ActionResult.FAIL_NO_REASON; + if (!machine.checkFluidInputs(recipe, true)) return ActionResult.FAIL_NO_REASON; return ActionResult.SUCCESS; } } From 5ba79798be06997c1bed5636bae01d2543498215 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Thu, 11 Dec 2025 15:00:02 +1100 Subject: [PATCH 09/41] fix large boiler logic --- .../machine/multiblock/steam/LargeBoilerMachine.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java index 9566b2cb31b..e856bf34189 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java @@ -59,7 +59,7 @@ public class LargeBoilerMachine extends WorkableMultiblockMachine implements IEx private int steamGenerated; public LargeBoilerMachine(IMachineBlockEntity holder, int maxTemperature, int heatSpeed) { - super(holder); + super(holder, LargeBoilerRecipeLogic::new); this.maxTemperature = maxTemperature; this.heatSpeed = heatSpeed; this.throttle = 100; @@ -69,11 +69,6 @@ public LargeBoilerMachine(IMachineBlockEntity holder, int maxTemperature, int he // ****** Recipe Logic ******// ////////////////////////////////////// - @Override - protected RecipeLogic createRecipeLogic(Object... args) { - return new LargeBoilerMachine.LargeBoilerRecipeLogic(this); - } - @Override public LargeBoilerMachine.LargeBoilerRecipeLogic getRecipeLogic() { return (LargeBoilerMachine.LargeBoilerRecipeLogic) super.getRecipeLogic(); From a1e83b93cb7ccfc9e4cba45841893d5f55f528fa Mon Sep 17 00:00:00 2001 From: Gustavo Date: Thu, 11 Dec 2025 19:36:30 +1100 Subject: [PATCH 10/41] fix build issues --- .../gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java | 1 - .../gtceu/common/machine/electric/BatteryBufferMachine.java | 2 ++ .../gtceu/common/machine/electric/ChargerMachine.java | 1 + .../gtceu/common/machine/electric/WorldAcceleratorMachine.java | 1 - .../machine/multiblock/electric/CentralMonitorMachine.java | 2 -- .../syncsystem/data_transformers/CoverBehaviorTransformer.java | 1 - 6 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java index a9082d0280b..a54356d9174 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java @@ -70,7 +70,6 @@ public SimpleSteamMachine(IMachineBlockEntity holder, boolean isHighPressure) { // ***** Initialization *****// ////////////////////////////////////// - protected NotifiableItemStackHandler createImportItemHandler() { return new NotifiableItemStackHandler(this, getRecipeType().getMaxInputs(ItemRecipeCapability.CAP), IO.IN); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java index 19fa17e872f..5896256b2dc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java @@ -260,6 +260,7 @@ public void serverTick() { } if (changed) { + machine.markAsDirty(); checkOutputSubscription(); } @@ -318,6 +319,7 @@ public long acceptEnergyFromNetwork(@Nullable Direction side, long voltage, long } if (changed) { + machine.markAsDirty(); checkOutputSubscription(); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java index 063561af279..9909036aa0c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java @@ -251,6 +251,7 @@ public long acceptEnergyFromNetwork(@Nullable Direction side, long voltage, long } if (changed) { + machine.markAsDirty(); machine.changeState(State.RUNNING); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java index fc77e2f9caf..4ace2e0c865 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java @@ -96,7 +96,6 @@ public WorldAcceleratorMachine(IMachineBlockEntity holder, int tier) { this.randRange = (getTier() << 1) + 1; } - public void updateSubscription() { if (isWorkingEnabled && drainEnergy(true)) { tickSubs = subscribeServerTick(tickSubs, this::update); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java index 6b9f8b5ce19..a3902546d61 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java @@ -17,8 +17,6 @@ import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockDisplayText; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; -import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; -import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.api.pattern.*; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; diff --git a/src/main/java/com/gregtechceu/gtceu/syncsystem/data_transformers/CoverBehaviorTransformer.java b/src/main/java/com/gregtechceu/gtceu/syncsystem/data_transformers/CoverBehaviorTransformer.java index d813cff47b3..ec6c8d69cde 100644 --- a/src/main/java/com/gregtechceu/gtceu/syncsystem/data_transformers/CoverBehaviorTransformer.java +++ b/src/main/java/com/gregtechceu/gtceu/syncsystem/data_transformers/CoverBehaviorTransformer.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.syncsystem.ISyncManaged; import com.gregtechceu.gtceu.syncsystem.IValueTransformer; - import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; From 66f1d3ca226fd17e4f9029f5b0ea79c752a175d1 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Thu, 11 Dec 2025 21:27:53 +1100 Subject: [PATCH 11/41] tear out MetaMachineBlockEntity, update all machine classes --- .../gtceu/api/block/IMachineBlock.java | 90 ----- .../gtceu/api/block/MetaMachineBlock.java | 89 ++++- .../blockentity/BlockEntityCreationInfo.java | 7 + .../blockentity/MetaMachineBlockEntity.java | 347 ----------------- .../gtceu/api/item/DrumMachineItem.java | 6 +- .../gtceu/api/item/MetaMachineItem.java | 6 +- .../api/item/QuantumTankMachineItem.java | 4 +- .../gtceu/api/item/tool/ToolHelper.java | 114 +++--- .../api/machine/IMachineBlockEntity.java | 58 +-- .../api/machine/MachineCoverContainer.java | 2 +- .../gtceu/api/machine/MachineDefinition.java | 14 +- .../gtceu/api/machine/MetaMachine.java | 350 +++++++++++++++--- .../api/machine/SimpleGeneratorMachine.java | 9 +- .../api/machine/SimpleTieredMachine.java | 9 +- .../api/machine/TieredEnergyMachine.java | 9 +- .../gtceu/api/machine/TieredMachine.java | 5 +- .../api/machine/WorkableTieredMachine.java | 9 +- .../gtceu/api/machine/feature/IUIMachine.java | 2 +- ...CoilWorkableElectricMultiblockMachine.java | 5 +- .../MultiblockControllerMachine.java | 7 +- ...eredWorkableElectricMultiblockMachine.java | 5 +- .../WorkableElectricMultiblockMachine.java | 9 +- .../multiblock/WorkableMultiblockMachine.java | 9 +- .../part/MultiblockPartMachine.java | 5 +- .../multiblock/part/TieredIOPartMachine.java | 5 +- .../multiblock/part/TieredPartMachine.java | 5 +- .../api/machine/steam/SimpleSteamMachine.java | 5 +- .../api/machine/steam/SteamBoilerMachine.java | 5 +- .../gtceu/api/machine/steam/SteamMachine.java | 5 +- .../machine/steam/SteamWorkableMachine.java | 9 +- .../gtceu/api/machine/trait/RecipeLogic.java | 2 +- .../api/pattern/MultiblockShapeInfo.java | 6 +- .../gtceu/api/pattern/Predicates.java | 10 +- .../api/pipenet/longdistance/ILDEndpoint.java | 8 +- .../longdistance/LongDistanceNetwork.java | 2 +- .../api/registry/registrate/GTRegistrate.java | 23 +- .../registry/registrate/MachineBuilder.java | 41 +- .../registrate/MultiblockMachineBuilder.java | 6 +- .../forge/ForgeClientEventListener.java | 5 +- .../MultiblockInWorldPreviewRenderer.java | 3 +- .../gtceu/common/block/DuctPipeBlock.java | 6 +- .../gtceu/common/data/GTBlockEntities.java | 1 + .../common/data/machines/GTMachineUtils.java | 1 - .../common/data/models/GTMachineModels.java | 4 +- .../gtceu/common/item/DataItemBehavior.java | 5 +- .../common/item/IntCircuitBehaviour.java | 6 +- .../tool/behavior/BlockRotatingBehavior.java | 3 +- .../machine/electric/AirScrubberMachine.java | 5 +- .../electric/BatteryBufferMachine.java | 5 +- .../machine/electric/BlockBreakerMachine.java | 5 +- .../machine/electric/ChargerMachine.java | 5 +- .../machine/electric/ConverterMachine.java | 5 +- .../machine/electric/FisherMachine.java | 5 +- .../common/machine/electric/HullMachine.java | 5 +- .../electric/ItemCollectorMachine.java | 5 +- .../common/machine/electric/MinerMachine.java | 5 +- .../common/machine/electric/PumpMachine.java | 5 +- .../machine/electric/RockCrusherMachine.java | 5 +- .../machine/electric/TransformerMachine.java | 5 +- .../electric/WorldAcceleratorMachine.java | 3 +- .../electric/ActiveTransformerMachine.java | 5 +- .../electric/AssemblyLineMachine.java | 5 +- .../electric/BedrockOreMinerMachine.java | 5 +- .../electric/CentralMonitorMachine.java | 5 +- .../multiblock/electric/CleanroomMachine.java | 5 +- .../electric/DistillationTowerMachine.java | 9 +- .../electric/FluidDrillMachine.java | 5 +- .../electric/FusionReactorMachine.java | 5 +- .../electric/LargeMinerMachine.java | 5 +- .../electric/MultiblockTankMachine.java | 5 +- .../electric/PowerSubstationMachine.java | 5 +- .../gcym/LargeChemicalBathMachine.java | 5 +- .../gcym/LargeMacerationTowerMachine.java | 5 +- .../electric/gcym/LargeMixerMachine.java | 5 +- .../electric/research/DataBankMachine.java | 5 +- .../electric/research/HPCAMachine.java | 5 +- .../research/NetworkSwitchMachine.java | 5 +- .../research/ResearchStationMachine.java | 5 +- .../LargeCombustionEngineMachine.java | 5 +- .../generator/LargeTurbineMachine.java | 5 +- .../part/AutoMaintenanceHatchPartMachine.java | 5 +- .../CleaningMaintenanceHatchPartMachine.java | 5 +- .../multiblock/part/CokeOvenHatch.java | 5 +- .../part/DataAccessHatchMachine.java | 5 +- .../multiblock/part/DiodePartMachine.java | 5 +- .../multiblock/part/DualHatchPartMachine.java | 5 +- .../part/EnergyHatchPartMachine.java | 5 +- .../part/FluidHatchPartMachine.java | 5 +- .../multiblock/part/ItemBusPartMachine.java | 5 +- .../part/LaserHatchPartMachine.java | 5 +- .../part/MaintenanceHatchPartMachine.java | 5 +- .../multiblock/part/MufflerPartMachine.java | 5 +- .../multiblock/part/ObjectHolderMachine.java | 5 +- .../part/OpticalComputationHatchMachine.java | 5 +- .../part/OpticalDataHatchMachine.java | 5 +- .../part/ParallelHatchPartMachine.java | 5 +- .../multiblock/part/PumpHatchPartMachine.java | 5 +- .../part/ReservoirHatchPartMachine.java | 5 +- .../part/RotorHolderPartMachine.java | 5 +- .../part/SteamHatchPartMachine.java | 5 +- .../part/SteamItemBusPartMachine.java | 5 +- .../multiblock/part/TankValvePartMachine.java | 5 +- .../part/hpca/HPCABridgePartMachine.java | 5 +- .../part/hpca/HPCAComponentPartMachine.java | 5 +- .../part/hpca/HPCAComputationPartMachine.java | 5 +- .../part/hpca/HPCACoolerPartMachine.java | 5 +- .../part/hpca/HPCAEmptyPartMachine.java | 5 +- .../monitor/AdvancedMonitorPartMachine.java | 5 +- .../monitor/MonitorComponentPartMachine.java | 5 +- .../part/monitor/MonitorPartMachine.java | 5 +- .../primitive/CharcoalPileIgniterMachine.java | 5 +- .../multiblock/primitive/CokeOvenMachine.java | 5 +- .../PrimitiveBlastFurnaceMachine.java | 5 +- .../PrimitiveFancyUIWorkableMachine.java | 5 +- .../primitive/PrimitivePumpMachine.java | 5 +- .../primitive/PrimitiveWorkableMachine.java | 5 +- .../multiblock/steam/LargeBoilerMachine.java | 5 +- .../steam/SteamParallelMultiblockMachine.java | 5 +- .../steam/SteamLiquidBoilerMachine.java | 5 +- .../machine/steam/SteamMinerMachine.java | 5 +- .../machine/steam/SteamSolarBoiler.java | 5 +- .../steam/SteamSolidBoilerMachine.java | 5 +- .../common/machine/storage/BufferMachine.java | 5 +- .../common/machine/storage/CrateMachine.java | 6 +- .../machine/storage/CreativeChestMachine.java | 7 +- .../CreativeComputationProviderMachine.java | 6 +- .../CreativeEnergyContainerMachine.java | 5 +- .../machine/storage/CreativeTankMachine.java | 5 +- .../common/machine/storage/DrumMachine.java | 6 +- .../storage/LongDistanceEndpointMachine.java | 7 +- .../machine/storage/QuantumChestMachine.java | 5 +- .../machine/storage/QuantumTankMachine.java | 5 +- .../longdistance/LDFluidEndpointMachine.java | 5 +- .../longdistance/LDItemEndpointMachine.java | 5 +- .../ae2/machine/MEBusPartMachine.java | 5 +- .../ae2/machine/MEHatchPartMachine.java | 5 +- .../ae2/machine/MEInputBusPartMachine.java | 5 +- .../ae2/machine/MEInputHatchPartMachine.java | 5 +- .../ae2/machine/MEOutputBusPartMachine.java | 5 +- .../ae2/machine/MEOutputHatchPartMachine.java | 5 +- .../machine/MEPatternBufferPartMachine.java | 7 +- .../MEPatternBufferProxyPartMachine.java | 5 +- .../ae2/machine/MEStockingBusPartMachine.java | 5 +- .../machine/MEStockingHatchPartMachine.java | 5 +- .../gtceu/integration/jade/GTJadePlugin.java | 6 +- .../provider/EnergyConverterModeProvider.java | 1 - .../jade/provider/GTFluidStorageProvider.java | 6 +- .../jade/provider/GTItemStorageProvider.java | 6 +- .../provider/HazardCleanerBlockProvider.java | 1 - .../jade/provider/MachineModeProvider.java | 1 - .../provider/MultiblockStructureProvider.java | 1 - .../jade/provider/ParallelProvider.java | 1 - .../jade/provider/RecipeLogicProvider.java | 1 - .../machine/KJSWrappingMultiblockBuilder.java | 6 +- .../provider/EnergyConverterModeProvider.java | 1 - .../provider/HazardCleanerInfoProvider.java | 1 - .../top/provider/MachineModeProvider.java | 1 - .../provider/MultiblockStructureProvider.java | 1 - .../top/provider/ParallelProvider.java | 1 - .../gtceu/utils/DummyMachineBlockEntity.java | 61 --- .../gtceu/utils/DummyRecipeLogicMachine.java | 30 -- .../api/recipe/MultipleEnergyHatchTest.java | 1 - .../IntProviderFluidIngredientTest.java | 1 - .../ingredient/IntProviderIngredientTest.java | 1 - .../gtceu/common/cover/ConveyorCoverTest.java | 1 - .../common/cover/ItemFilterCoverTest.java | 1 - .../gtceu/common/cover/PumpCoverTest.java | 1 - .../gtceu/common/cover/RobotArmTest.java | 3 - .../gtceu/common/cover/ShutterCoverTest.java | 1 - .../gtceu/common/cover/SolarPanelTest.java | 4 + .../part/ItemBusPartMachineTest.java | 1 - .../gtceu/gametest/util/TestUtils.java | 1 - 172 files changed, 880 insertions(+), 1094 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/blockentity/BlockEntityCreationInfo.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/utils/DummyMachineBlockEntity.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/utils/DummyRecipeLogicMachine.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java deleted file mode 100644 index 3e9a0042a10..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.gregtechceu.gtceu.api.block; - -import com.gregtechceu.gtceu.api.data.RotationState; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.syncsystem.ManagedSyncBlockEntity; - -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.EntityBlock; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityTicker; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; - -import org.jetbrains.annotations.Nullable; - -public interface IMachineBlock extends EntityBlock { - - default Block self() { - return (Block) this; - } - - MachineDefinition getDefinition(); - - default RotationState getRotationState() { - return getDefinition().getRotationState(); - } - - default Direction getFrontFacing(BlockState state) { - return getRotationState() == RotationState.NONE ? Direction.NORTH : state.getValue(getRotationState().property); - } - - @Nullable - default MetaMachine getMachine(BlockGetter level, BlockPos pos) { - return MetaMachine.getMachine(level, pos); - } - - static int colorTinted(BlockState blockState, @Nullable BlockAndTintGetter level, @Nullable BlockPos pos, - int index) { - if (level != null && pos != null) { - var machine = MetaMachine.getMachine(level, pos); - if (machine != null) { - return machine.tintColor(index); - } - } - return -1; - } - - @Nullable - @Override - default BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return getDefinition().getBlockEntityType().create(pos, state); - } - - @Nullable - @Override - default BlockEntityTicker getTicker(Level level, BlockState state, - BlockEntityType blockEntityType) { - if (blockEntityType == getDefinition().getBlockEntityType()) { - if (!level.isClientSide) { - return (pLevel, pPos, pState, pTile) -> { - pTile.setChanged(); - if (pTile instanceof IMachineBlockEntity metaMachine) { - metaMachine.getMetaMachine().serverTick(); - } - if (pTile instanceof ManagedSyncBlockEntity syncObj) { - syncObj.updateTick(); - } - }; - } else { - return (pLevel, pPos, pState, pTile) -> { - if (pTile instanceof IMachineBlockEntity metaMachine) { - metaMachine.getMetaMachine().clientTick(); - } - }; - } - } - return null; - } - - default boolean canConnectRedstone(BlockGetter level, BlockPos pos, Direction side) { - return getMachine(level, pos).canConnectRedstone(side); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java index 37c3130d7d8..7ff4cf9d4b5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java @@ -6,13 +6,13 @@ import com.gregtechceu.gtceu.api.item.MetaMachineItem; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.*; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; +import com.gregtechceu.gtceu.syncsystem.ManagedSyncBlockEntity; import com.gregtechceu.gtceu.utils.GTUtil; import net.minecraft.MethodsReturnNonnullByDefault; @@ -37,9 +37,12 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.storage.loot.LootParams; @@ -60,7 +63,7 @@ @SuppressWarnings("deprecation") @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault -public class MetaMachineBlock extends Block implements IMachineBlock { +public class MetaMachineBlock extends Block implements EntityBlock { @Getter public final MachineDefinition definition; @@ -90,6 +93,11 @@ protected void createBlockStateDefinition(StateDefinition.Builder getDrops(BlockState state, LootParams.Builder builder) { BlockEntity tileEntity = builder.getOptionalParameter(LootContextParams.BLOCK_ENTITY); var drops = super.getDrops(state, builder); - if (tileEntity instanceof IMachineBlockEntity holder) { - var machine = holder.getMetaMachine(); + if (tileEntity instanceof MetaMachine machine) { if (machine instanceof IMachineModifyDrops machineModifyDrops) { machineModifyDrops.onDrops(drops); } @@ -250,7 +257,7 @@ public List getDrops(BlockState state, LootParams.Builder builder) { public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { if (pState.hasBlockEntity()) { if (!pState.is(pNewState.getBlock())) { // new block - MetaMachine machine = getMachine(pLevel, pPos); + MetaMachine machine = MetaMachine.getMachine(pLevel, pPos); if (machine instanceof IMachineLife machineLife) { machineLife.onMachineRemoved(); } @@ -266,7 +273,7 @@ public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState var oldFacing = pState.getValue(getRotationState().property); var newFacing = pNewState.getValue(getRotationState().property); if (newFacing != oldFacing) { - var machine = getMachine(pLevel, pPos); + var machine = MetaMachine.getMachine(pLevel, pPos); if (machine != null) { machine.onRotated(oldFacing, newFacing); } @@ -278,7 +285,7 @@ public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState @Override public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - var machine = getMachine(world, pos); + var machine = MetaMachine.getMachine(world, pos); ItemStack itemStack = player.getItemInHand(hand); boolean shouldOpenUi = true; @@ -322,25 +329,25 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player @Override @SuppressWarnings("deprecation") // This is fine to override, just not to be called. public int getSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) { - return getMachine(level, pos).getOutputSignal(direction); + return MetaMachine.getMachine(level, pos).getOutputSignal(direction); } @Override @SuppressWarnings("deprecation") // This is fine to override, just not to be called. public int getDirectSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) { - return getMachine(level, pos).getOutputDirectSignal(direction); + return MetaMachine.getMachine(level, pos).getOutputDirectSignal(direction); } @Override @SuppressWarnings("deprecation") // This is fine to override, just not to be called. public int getAnalogOutputSignal(BlockState state, Level level, BlockPos pos) { - return getMachine(level, pos).getAnalogOutputSignal(); + return MetaMachine.getMachine(level, pos).getAnalogOutputSignal(); } @Override public void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, BlockPos fromPos, boolean isMoving) { - var machine = getMachine(level, pos); + var machine = MetaMachine.getMachine(level, pos); if (machine != null) { machine.onNeighborChanged(block, fromPos, isMoving); } @@ -350,7 +357,7 @@ public void neighborChanged(BlockState state, Level level, BlockPos pos, Block b @Override public BlockState getAppearance(BlockState state, BlockAndTintGetter level, BlockPos pos, Direction side, @Nullable BlockState sourceState, @Nullable BlockPos sourcePos) { - var machine = getMachine(level, pos); + var machine = MetaMachine.getMachine(level, pos); if (machine != null) { return machine.getBlockAppearance(state, level, pos, side, sourceState, sourcePos); } @@ -362,4 +369,56 @@ public boolean isValidSpawn(BlockState state, BlockGetter level, BlockPos pos, S EntityType entityType) { return false; } + + public Direction getFrontFacing(BlockState state) { + return getRotationState() == RotationState.NONE ? Direction.NORTH : state.getValue(getRotationState().property); + } + + public static int colorTinted(BlockState blockState, @Nullable BlockAndTintGetter level, @Nullable BlockPos pos, + int index) { + if (level != null && pos != null) { + var machine = MetaMachine.getMachine(level, pos); + if (machine != null) { + return machine.tintColor(index); + } + } + return -1; + } + + @Nullable + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return getDefinition().getBlockEntityType().create(pos, state); + } + + @Nullable + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, + BlockEntityType blockEntityType) { + if (blockEntityType == getDefinition().getBlockEntityType()) { + if (!level.isClientSide) { + return (pLevel, pPos, pState, pTile) -> { + pTile.setChanged(); + if (pTile instanceof MetaMachine metaMachine) { + metaMachine.serverTick(); + } + if (pTile instanceof ManagedSyncBlockEntity syncObj) { + syncObj.updateTick(); + } + }; + } else { + return (pLevel, pPos, pState, pTile) -> { + if (pTile instanceof MetaMachine metaMachine) { + metaMachine.clientTick(); + } + }; + } + } + return null; + } + + public boolean canConnectRedstone(BlockGetter level, BlockPos pos, Direction side) { + return MetaMachine.getMachine(level, pos).canConnectRedstone(side); + } + } diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/BlockEntityCreationInfo.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/BlockEntityCreationInfo.java new file mode 100644 index 00000000000..9df43b0d71c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/BlockEntityCreationInfo.java @@ -0,0 +1,7 @@ +package com.gregtechceu.gtceu.api.blockentity; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; + +public record BlockEntityCreationInfo(BlockEntityType type, BlockPos pos, BlockState state) {} diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java index b4cdcd49fb7..e69de29bb2d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java @@ -1,347 +0,0 @@ -package com.gregtechceu.gtceu.api.blockentity; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.capability.*; -import com.gregtechceu.gtceu.api.capability.forge.GTCapability; -import com.gregtechceu.gtceu.api.item.tool.GTToolType; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; -import com.gregtechceu.gtceu.api.machine.trait.MachineTrait; -import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; -import com.gregtechceu.gtceu.api.misc.EnergyContainerList; -import com.gregtechceu.gtceu.api.misc.EnergyInfoProviderList; -import com.gregtechceu.gtceu.api.misc.LaserContainerList; -import com.gregtechceu.gtceu.client.model.IBlockEntityRendererBakedModel; -import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; -import com.gregtechceu.gtceu.common.datafixers.TagFixer; -import com.gregtechceu.gtceu.syncsystem.ManagedSyncBlockEntity; -import com.gregtechceu.gtceu.syncsystem.SyncDataHolder; -import com.gregtechceu.gtceu.syncsystem.annotations.RerenderOnChanged; -import com.gregtechceu.gtceu.syncsystem.annotations.SaveField; -import com.gregtechceu.gtceu.syncsystem.annotations.SyncToClient; - -import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.block.BlockRenderDispatcher; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.AABB; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.IEnergyStorage; - -import appeng.api.networking.IInWorldGridNodeHost; -import appeng.capabilities.Capabilities; -import lombok.Getter; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.*; - -public class MetaMachineBlockEntity extends ManagedSyncBlockEntity implements IMachineBlockEntity { - - @Getter - protected final SyncDataHolder syncDataHolder = new SyncDataHolder(this); - - @Getter - @SaveField(nbtKey = "machine") - @SyncToClient - public final MetaMachine metaMachine; - @Getter - @SaveField - @SyncToClient - @RerenderOnChanged - private MachineRenderState renderState; - private final long offset = GTValues.RNG.nextInt(20); - - public MetaMachineBlockEntity(BlockEntityType type, BlockPos pos, BlockState blockState) { - super(type, pos, blockState); - this.renderState = getDefinition().defaultRenderState(); - this.metaMachine = getDefinition().createMetaMachine(this); - } - - @Override - public boolean triggerEvent(int id, int para) { - if (id == 1) { // chunk re render - if (level != null && level.isClientSide) { - scheduleRenderUpdate(); - } - return true; - } - return false; - } - - @Override - public void setRenderState(MachineRenderState state) { - this.renderState = state; - if (level != null && !level.isClientSide) { - syncDataHolder.markClientSyncFieldDirty("renderState"); - } - scheduleRenderUpdate(); - } - - @Override - public long getOffset() { - return offset; - } - - @Override - public void setRemoved() { - super.setRemoved(); - metaMachine.onUnload(); - } - - @Override - public void onLoad() { - super.onLoad(); - metaMachine.onLoad(); - } - - @Override - public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, ItemStack held, - Set toolTypes) { - return metaMachine.shouldRenderGrid(player, pos, state, held, toolTypes); - } - - @Override - public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { - return metaMachine.sideTips(player, pos, state, toolTypes, side); - } - - @Override - public @NotNull LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { - var result = getCapability(getMetaMachine(), cap, side); - return result.isPresent() ? result : super.getCapability(cap, side); - } - - @Override - public void setChanged() { - if (getLevel() != null) { - getLevel().blockEntityChanged(getBlockPos()); - } - } - - public static LazyOptional getCapability(MetaMachine machine, @NotNull Capability cap, - @Nullable Direction side) { - if (cap == GTCapability.CAPABILITY_COVERABLE) { - return GTCapability.CAPABILITY_COVERABLE.orEmpty(cap, LazyOptional.of(machine::getCoverContainer)); - } else if (cap == GTCapability.CAPABILITY_TOOLABLE) { - return GTCapability.CAPABILITY_TOOLABLE.orEmpty(cap, LazyOptional.of(() -> machine)); - } else if (cap == GTCapability.CAPABILITY_WORKABLE) { - if (machine instanceof IWorkable workable) { - return GTCapability.CAPABILITY_WORKABLE.orEmpty(cap, LazyOptional.of(() -> workable)); - } - for (MachineTrait trait : machine.getTraits()) { - if (trait instanceof IWorkable workable) { - return GTCapability.CAPABILITY_WORKABLE.orEmpty(cap, LazyOptional.of(() -> workable)); - } - } - } else if (cap == GTCapability.CAPABILITY_CONTROLLABLE) { - if (machine instanceof IControllable controllable) { - return GTCapability.CAPABILITY_CONTROLLABLE.orEmpty(cap, LazyOptional.of(() -> controllable)); - } - for (MachineTrait trait : machine.getTraits()) { - if (trait instanceof IControllable controllable) { - return GTCapability.CAPABILITY_CONTROLLABLE.orEmpty(cap, LazyOptional.of(() -> controllable)); - } - } - } else if (cap == GTCapability.CAPABILITY_RECIPE_LOGIC) { - for (MachineTrait trait : machine.getTraits()) { - if (trait instanceof RecipeLogic recipeLogic) { - return GTCapability.CAPABILITY_RECIPE_LOGIC.orEmpty(cap, LazyOptional.of(() -> recipeLogic)); - } - } - } else if (cap == GTCapability.CAPABILITY_ENERGY_CONTAINER) { - if (machine instanceof IEnergyContainer energyContainer) { - return GTCapability.CAPABILITY_ENERGY_CONTAINER.orEmpty(cap, LazyOptional.of(() -> energyContainer)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyContainer.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_ENERGY_CONTAINER.orEmpty(cap, - LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new EnergyContainerList(list))); - } - } else if (cap == GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER) { - if (machine instanceof IEnergyInfoProvider energyInfoProvider) { - return GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER.orEmpty(cap, - LazyOptional.of(() -> energyInfoProvider)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyInfoProvider.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER.orEmpty(cap, - LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new EnergyInfoProviderList(list))); - } - } else if (cap == GTCapability.CAPABILITY_CLEANROOM_RECEIVER) { - if (machine instanceof ICleanroomReceiver cleanroomReceiver) { - return GTCapability.CAPABILITY_CLEANROOM_RECEIVER.orEmpty(cap, - LazyOptional.of(() -> cleanroomReceiver)); - } - } else if (cap == GTCapability.CAPABILITY_MAINTENANCE_MACHINE) { - if (machine instanceof IMaintenanceMachine maintenanceMachine) { - return GTCapability.CAPABILITY_MAINTENANCE_MACHINE.orEmpty(cap, - LazyOptional.of(() -> maintenanceMachine)); - } - } else if (cap == GTCapability.CAPABILITY_TURBINE_MACHINE) { - if (machine instanceof ITurbineMachine turbineMachine) { - return GTCapability.CAPABILITY_TURBINE_MACHINE.orEmpty(cap, - LazyOptional.of(() -> turbineMachine)); - } - } else if (cap == ForgeCapabilities.ITEM_HANDLER) { - var handler = machine.getItemHandlerCap(side, true); - if (handler != null) { - return ForgeCapabilities.ITEM_HANDLER.orEmpty(cap, LazyOptional.of(() -> handler)); - } - } else if (cap == ForgeCapabilities.FLUID_HANDLER) { - var handler = machine.getFluidHandlerCap(side, true); - if (handler != null) { - return ForgeCapabilities.FLUID_HANDLER.orEmpty(cap, LazyOptional.of(() -> handler)); - } - } else if (cap == ForgeCapabilities.ENERGY) { - if (machine instanceof IEnergyStorage energyStorage) { - return ForgeCapabilities.ENERGY.orEmpty(cap, LazyOptional.of(() -> energyStorage)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyStorage.class); - if (!list.isEmpty()) { - // TODO wrap list in the future - return ForgeCapabilities.ENERGY.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } - } else if (cap == GTCapability.CAPABILITY_LASER) { - if (machine instanceof ILaserContainer energyContainer) { - return GTCapability.CAPABILITY_LASER.orEmpty(cap, LazyOptional.of(() -> energyContainer)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, ILaserContainer.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_LASER.orEmpty(cap, - LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new LaserContainerList(list))); - } - } else if (cap == GTCapability.CAPABILITY_COMPUTATION_PROVIDER) { - if (machine instanceof IOpticalComputationProvider computationProvider) { - return GTCapability.CAPABILITY_COMPUTATION_PROVIDER.orEmpty(cap, - LazyOptional.of(() -> computationProvider)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IOpticalComputationProvider.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_COMPUTATION_PROVIDER.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } - } else if (cap == GTCapability.CAPABILITY_DATA_ACCESS) { - if (machine instanceof IDataAccessHatch computationProvider) { - return GTCapability.CAPABILITY_DATA_ACCESS.orEmpty(cap, LazyOptional.of(() -> computationProvider)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IDataAccessHatch.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_DATA_ACCESS.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } - } else if (cap == GTCapability.CAPABILITY_MONITOR_COMPONENT) { - if (machine instanceof IMonitorComponent monitorComponent) { - return GTCapability.CAPABILITY_MONITOR_COMPONENT.orEmpty(cap, LazyOptional.of(() -> monitorComponent)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IMonitorComponent.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_MONITOR_COMPONENT.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } - } else if (cap == GTCapability.CAPABILITY_CENTRAL_MONITOR) { - if (machine instanceof ICentralMonitor centralMonitor) { - return GTCapability.CAPABILITY_CENTRAL_MONITOR.orEmpty(cap, LazyOptional.of(() -> centralMonitor)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, ICentralMonitor.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_CENTRAL_MONITOR.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } - } - if (GTCEu.Mods.isAE2Loaded()) { - LazyOptional opt = AE2CallWrapper.getGridNodeHostCapability(cap, machine, side); - if (opt.isPresent()) { - // noinspection unchecked - return (LazyOptional) opt; - } - } - return LazyOptional.empty(); - } - - public static List getCapabilitiesFromTraits(List traits, Direction accessSide, - Class capability) { - if (traits.isEmpty()) return Collections.emptyList(); - List list = new ArrayList<>(); - for (MachineTrait trait : traits) { - if (trait.hasCapability(accessSide) && capability.isInstance(trait)) { - list.add(capability.cast(trait)); - } - } - return list; - } - - /** - * Why, Forge, Why? - * Why must you make me add a method for no good reason? - */ - @SuppressWarnings("unchecked") - @OnlyIn(Dist.CLIENT) - @Override - public AABB getRenderBoundingBox() { - BlockRenderDispatcher blockRenderDispatcher = Minecraft.getInstance().getBlockRenderer(); - BakedModel model = blockRenderDispatcher.getBlockModel(this.getBlockState()); - - if (model instanceof IBlockEntityRendererBakedModel modelWithBER) { - if (modelWithBER.getBlockEntityType() == this.getType()) { - return ((IBlockEntityRendererBakedModel) modelWithBER) - .getRenderBoundingBox(this); - } - } - return new AABB(worldPosition.offset(-1, 0, -1), worldPosition.offset(2, 2, 2)); - } - - @Override - public void load(@NotNull CompoundTag tag) { - TagFixer.fixFluidTags(tag); - if (!tag.contains("machine")) { - var compound = tag.copy(); - tag.put("machine", compound); - } - super.load(tag); - } - - @Override - public void scheduleRenderUpdate() { - var pos = getBlockPos(); - var level = getLevel(); - if (level != null) { - var state = level.getBlockState(pos); - if (level.isClientSide) { - level.sendBlockUpdated(pos, state, state, Block.UPDATE_IMMEDIATE); - } else { - level.blockEvent(pos, state.getBlock(), 1, 0); - } - } - } - - public static class AE2CallWrapper { - - public static LazyOptional getGridNodeHostCapability(Capability cap, MetaMachine machine, - Direction side) { - if (cap == Capabilities.IN_WORLD_GRID_NODE_HOST) { - if (machine instanceof IInWorldGridNodeHost nodeHost) { - return Capabilities.IN_WORLD_GRID_NODE_HOST.orEmpty(cap, LazyOptional.of(() -> nodeHost)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IInWorldGridNodeHost.class); - if (!list.isEmpty()) { - // TODO wrap list in the future (or not.) - return Capabilities.IN_WORLD_GRID_NODE_HOST.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } - } - return LazyOptional.empty(); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java index 399ac3c30cc..c4dc9e6c6a5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java @@ -1,6 +1,6 @@ package com.gregtechceu.gtceu.api.item; -import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.FluidPipeProperties; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; @@ -20,12 +20,12 @@ public class DrumMachineItem extends MetaMachineItem { @NotNull private Material mat = GTMaterials.NULL; - protected DrumMachineItem(IMachineBlock block, Properties properties, @NotNull Material mat) { + protected DrumMachineItem(MetaMachineBlock block, Properties properties, @NotNull Material mat) { super(block, properties); this.mat = mat; } - public static DrumMachineItem create(IMachineBlock block, Properties properties, @NotNull Material mat) { + public static DrumMachineItem create(MetaMachineBlock block, Properties properties, @NotNull Material mat) { return new DrumMachineItem(block, properties, mat); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java index f6ece747ce6..531db293514 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java @@ -1,6 +1,6 @@ package com.gregtechceu.gtceu.api.item; -import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.block.PipeBlock; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.pipenet.IPipeNode; @@ -25,12 +25,12 @@ @MethodsReturnNonnullByDefault public class MetaMachineItem extends BlockItem { - public MetaMachineItem(IMachineBlock block, Properties properties) { + public MetaMachineItem(MetaMachineBlock block, Properties properties) { super(block.self(), properties); } public MachineDefinition getDefinition() { - return ((IMachineBlock) getBlock()).getDefinition(); + return ((MetaMachineBlock) getBlock()).getDefinition(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/QuantumTankMachineItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/QuantumTankMachineItem.java index aa8398925b4..65a6b1df1dd 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/QuantumTankMachineItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/QuantumTankMachineItem.java @@ -1,7 +1,7 @@ package com.gregtechceu.gtceu.api.item; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.misc.forge.QuantumFluidHandlerItemStack; import com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine; @@ -13,7 +13,7 @@ public class QuantumTankMachineItem extends MetaMachineItem { - public QuantumTankMachineItem(IMachineBlock block, Properties properties) { + public QuantumTankMachineItem(MetaMachineBlock block, Properties properties) { super(block, properties); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java index 59867b18bbb..95724290893 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java @@ -3,29 +3,15 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IElectricItem; -import com.gregtechceu.gtceu.api.capability.recipe.*; -import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ToolProperty; -import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.item.IGTTool; import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; -import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; -import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; -import com.gregtechceu.gtceu.api.recipe.GTRecipe; -import com.gregtechceu.gtceu.api.recipe.RecipeHelper; -import com.gregtechceu.gtceu.api.recipe.content.Content; -import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; -import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.data.GTMaterialItems; import com.gregtechceu.gtceu.common.data.GTMaterials; -import com.gregtechceu.gtceu.common.data.GTRecipeTypes; -import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; import com.gregtechceu.gtceu.config.ConfigHolder; -import com.gregtechceu.gtceu.utils.DummyMachineBlockEntity; -import com.gregtechceu.gtceu.utils.InfiniteEnergyContainer; import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.core.BlockPos; @@ -412,56 +398,56 @@ public static void applyHammerDropConversion(ServerLevel world, BlockPos pos, It List drops, int fortune, float dropChance, RandomSource random) { // EnchantmentHelper.getEnchantmentLevel(EnchantmentHardHammer.INSTANCE, tool) - if (is(tool, GTToolType.HARD_HAMMER)) { - List silktouchDrops = getSilkTouchDrop(world, pos, state); - for (ItemStack silktouchDrop : silktouchDrops) { - if (silktouchDrop.isEmpty()) continue; - // Stack lists can be immutable going into Recipe#matches barring no rewrites - // Search for forge hammer recipes from all drops individually (only LV or under) - - DummyMachineBlockEntity be = new DummyMachineBlockEntity(GTValues.LV, - GTRecipeTypes.FORGE_HAMMER_RECIPES, GTMachineUtils.defaultTankSizeFunction, - Collections.emptyList()); - RecipeHandlerList dummyInputs = RecipeHandlerList.of(IO.IN, - new InfiniteEnergyContainer(be.getMetaMachine(), GTValues.V[GTValues.LV], - GTValues.V[GTValues.LV], 1, GTValues.V[GTValues.LV], 1), - new NotifiableItemStackHandler(be.getMetaMachine(), 1, IO.IN, IO.IN, - (slots) -> new CustomItemStackHandler(silktouchDrop))); - - RecipeHandlerList dummyOutputs = RecipeHandlerList.of(IO.OUT, - new NotifiableItemStackHandler(be.getMetaMachine(), 2, IO.OUT)); - be.getMetaMachine().reinitializeHandlers(List.of(dummyInputs, dummyOutputs)); - - Iterator hammerRecipes = GTRecipeTypes.FORGE_HAMMER_RECIPES.searchRecipe(be.metaMachine, - r -> RecipeHelper.matchContents(be.metaMachine, r).isSuccess()); - GTRecipe hammerRecipe = !hammerRecipes.hasNext() ? null : hammerRecipes.next(); - if (hammerRecipe != null && RecipeHelper.handleRecipeIO(be.metaMachine, hammerRecipe, IO.IN, - be.getMetaMachine().recipeLogic.getChanceCaches()).isSuccess()) { - drops.clear(); - TagPrefix prefix = ChemicalHelper.getPrefix(silktouchDrop.getItem()); - if (prefix.isEmpty()) { - for (Content output : hammerRecipe.getOutputContents(ItemRecipeCapability.CAP)) { - if (dropChance >= 1.0F || random.nextFloat() <= dropChance) { - drops.add(SizedIngredient.copy(ItemRecipeCapability.CAP.of(output.content)) - .getItems()[0]); - } - } - } else if (TagPrefix.ORES.containsKey(prefix)) { - for (Content content : hammerRecipe.getOutputContents(ItemRecipeCapability.CAP)) { - if (dropChance >= 1.0F || random.nextFloat() <= dropChance) { - ItemStack output = ItemRecipeCapability.CAP.of(content.content).getItems()[0]; - // Only apply fortune on ore -> crushed forge hammer recipes - if (ChemicalHelper.getPrefix(output.getItem()) == TagPrefix.crushed) { - output = output.copy(); - if (fortune > 0) output.grow(random.nextInt(fortune)); - drops.add(output); - } - } - } - } - } - } - } +// if (is(tool, GTToolType.HARD_HAMMER)) { +// List silktouchDrops = getSilkTouchDrop(world, pos, state); +// for (ItemStack silktouchDrop : silktouchDrops) { +// if (silktouchDrop.isEmpty()) continue; +// // Stack lists can be immutable going into Recipe#matches barring no rewrites +// // Search for forge hammer recipes from all drops individually (only LV or under) +// +// DummyMachineBlockEntity be = new DummyMachineBlockEntity(GTValues.LV, +// GTRecipeTypes.FORGE_HAMMER_RECIPES, GTMachineUtils.defaultTankSizeFunction, +// Collections.emptyList()); +// RecipeHandlerList dummyInputs = RecipeHandlerList.of(IO.IN, +// new InfiniteEnergyContainer(be.getMetaMachine(), GTValues.V[GTValues.LV], +// GTValues.V[GTValues.LV], 1, GTValues.V[GTValues.LV], 1), +// new NotifiableItemStackHandler(be.getMetaMachine(), 1, IO.IN, IO.IN, +// (slots) -> new CustomItemStackHandler(silktouchDrop))); +// +// RecipeHandlerList dummyOutputs = RecipeHandlerList.of(IO.OUT, +// new NotifiableItemStackHandler(be.getMetaMachine(), 2, IO.OUT)); +// be.getMetaMachine().reinitializeHandlers(List.of(dummyInputs, dummyOutputs)); +// +// Iterator hammerRecipes = GTRecipeTypes.FORGE_HAMMER_RECIPES.searchRecipe(be.metaMachine, +// r -> RecipeHelper.matchContents(be.metaMachine, r).isSuccess()); +// GTRecipe hammerRecipe = !hammerRecipes.hasNext() ? null : hammerRecipes.next(); +// if (hammerRecipe != null && RecipeHelper.handleRecipeIO(be.metaMachine, hammerRecipe, IO.IN, +// be.getMetaMachine().recipeLogic.getChanceCaches()).isSuccess()) { +// drops.clear(); +// TagPrefix prefix = ChemicalHelper.getPrefix(silktouchDrop.getItem()); +// if (prefix.isEmpty()) { +// for (Content output : hammerRecipe.getOutputContents(ItemRecipeCapability.CAP)) { +// if (dropChance >= 1.0F || random.nextFloat() <= dropChance) { +// drops.add(SizedIngredient.copy(ItemRecipeCapability.CAP.of(output.content)) +// .getItems()[0]); +// } +// } +// } else if (TagPrefix.ORES.containsKey(prefix)) { +// for (Content content : hammerRecipe.getOutputContents(ItemRecipeCapability.CAP)) { +// if (dropChance >= 1.0F || random.nextFloat() <= dropChance) { +// ItemStack output = ItemRecipeCapability.CAP.of(content.content).getItems()[0]; +// // Only apply fortune on ore -> crushed forge hammer recipes +// if (ChemicalHelper.getPrefix(output.getItem()) == TagPrefix.crushed) { +// output = output.copy(); +// if (fortune > 0) output.grow(random.nextInt(fortune)); +// drops.add(output); +// } +// } +// } +// } +// } +// } +// } } public static boolean breakBlockRoutine(ServerPlayer player, ItemStack tool, BlockPos pos, boolean playSound) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java index d01fe0f0a98..a447662c3ff 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java @@ -1,7 +1,5 @@ package com.gregtechceu.gtceu.api.machine; -import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.item.tool.IToolGridHighlight; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; @@ -11,12 +9,9 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.client.model.data.ModelData; import net.minecraftforge.client.model.data.ModelProperty; import net.minecraftforge.common.extensions.IForgeBlockEntity; -import org.jetbrains.annotations.NotNull; - /** * A simple compound Interface for all my TileEntities. *

@@ -39,12 +34,6 @@ default BlockPos pos() { return self().getBlockPos(); } - default void notifyBlockUpdate() { - if (level() != null) { - level().updateNeighborsAt(pos(), level().getBlockState(pos()).getBlock()); - } - } - default void scheduleRenderUpdate() { var pos = pos(); if (level() != null) { @@ -58,51 +47,10 @@ default void scheduleRenderUpdate() { } } - @Override - default @NotNull ModelData getModelData() { - ModelData.Builder data = IForgeBlockEntity.super.getModelData().derive(); - getMetaMachine().updateModelData(data); - return data.build(); - } - - default long getOffsetTimer() { - if (level() == null) return getOffset(); - else if (level().isClientSide()) return GTValues.CLIENT_TIME + getOffset(); - - var server = level().getServer(); - if (server != null) return server.getTickCount() + getOffset(); - return getOffset(); - } - - default MachineDefinition getDefinition() { - if (self().getBlockState().getBlock() instanceof IMachineBlock machineBlock) { - return machineBlock.getDefinition(); - } else { - throw new IllegalStateException("MetaMachineBlockEntity is created for an un available block: " + - self().getBlockState().getBlock()); - } - } - MachineRenderState getRenderState(); - void setRenderState(MachineRenderState state); - - MetaMachine getMetaMachine(); - long getOffset(); - - @Override - default int getPaintingColor() { - return getMetaMachine().getPaintingColor(); - } - - @Override - default void setPaintingColor(int color) { - getMetaMachine().setPaintingColor(color); - } - - @Override - default int getDefaultPaintingColor() { - return getMetaMachine().getDefaultPaintingColor(); - } + int getPaintingColor(); + void setPaintingColor(int color); + int getDefaultPaintingColor(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java index dc0feb8751d..5793766ee0d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java @@ -77,7 +77,7 @@ public void scheduleNeighborShapeUpdate() { @Override public boolean isInValid() { - return machine.isInValid(); + return machine.isRemoved(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java index 73db1803309..01b6204239c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java @@ -1,6 +1,6 @@ package com.gregtechceu.gtceu.api.machine; -import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; @@ -43,7 +43,7 @@ /** * Representing basic information of a machine. */ -public class MachineDefinition implements Supplier { +public class MachineDefinition implements Supplier { public static final IdMapper RENDER_STATE_REGISTRY = new IdMapper<>(512); @@ -59,8 +59,6 @@ public class MachineDefinition implements Supplier { private Supplier itemSupplier; @Setter private Supplier> blockEntityTypeSupplier; - @Setter - private Function machineSupplier; @Getter @Setter private @NotNull GTRecipeType @NotNull [] recipeTypes; @@ -156,10 +154,6 @@ public BlockEntityType getBlockEntityType() { return blockEntityTypeSupplier.get(); } - public MetaMachine createMetaMachine(IMachineBlockEntity blockEntity) { - return machineSupplier.apply(blockEntity); - } - public ItemStack asStack() { return new ItemStack(getItem()); } @@ -174,8 +168,8 @@ public VoxelShape getShape(Direction direction) { } @Override - public IMachineBlock get() { - return (IMachineBlock) blockSupplier.get(); + public MetaMachineBlock get() { + return (MetaMachineBlock) blockSupplier.get(); } public String getName() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index 0a0b310b9d6..c2e9a2fe08c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -1,14 +1,16 @@ package com.gregtechceu.gtceu.api.machine; +import appeng.api.networking.IInWorldGridNodeHost; +import appeng.capabilities.Capabilities; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.blockentity.ITickSubscription; -import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; -import com.gregtechceu.gtceu.api.capability.IControllable; -import com.gregtechceu.gtceu.api.capability.ICoverable; -import com.gregtechceu.gtceu.api.capability.IToolable; +import com.gregtechceu.gtceu.api.capability.*; +import com.gregtechceu.gtceu.api.capability.forge.GTCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.cover.CoverBehavior; import com.gregtechceu.gtceu.api.data.RotationState; @@ -17,18 +19,21 @@ import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.item.tool.IToolGridHighlight; import com.gregtechceu.gtceu.api.machine.feature.*; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.MachineTrait; -import com.gregtechceu.gtceu.api.misc.IOFilteredInvWrapper; -import com.gregtechceu.gtceu.api.misc.IOFluidHandlerList; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.misc.*; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; +import com.gregtechceu.gtceu.client.model.IBlockEntityRendererBakedModel; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.client.util.ModelUtils; import com.gregtechceu.gtceu.common.cover.FluidFilterCover; import com.gregtechceu.gtceu.common.cover.ItemFilterCover; import com.gregtechceu.gtceu.common.cover.data.ManualIOMode; +import com.gregtechceu.gtceu.common.datafixers.TagFixer; import com.gregtechceu.gtceu.common.item.tool.behavior.ToolModeSwitchBehavior; import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; import com.gregtechceu.gtceu.common.machine.owner.PlayerOwner; @@ -43,11 +48,16 @@ import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.utils.DummyWorld; +import lombok.Setter; import net.minecraft.ChatFormatting; import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.block.BlockRenderDispatcher; +import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.locale.Language; +import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; @@ -59,13 +69,20 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.model.data.ModelData; +import net.minecraftforge.client.model.data.ModelProperty; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ForgeCapabilities; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.energy.IEnergyStorage; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.IItemHandlerModifiable; @@ -75,6 +92,7 @@ import org.jetbrains.annotations.MustBeInvokedByOverriders; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.UnknownNullability; import java.util.*; import java.util.function.Consumer; @@ -85,17 +103,14 @@ import static com.gregtechceu.gtceu.api.item.tool.ToolHelper.getBehaviorsTag; -/** - * an abstract layer of gregtech machine. - * Because I have to implement BlockEntities for both fabric and forge platform. - * All fundamental features will be implemented here. - * To add additional features, you can see {@link IMachineFeature} - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class MetaMachine implements ISyncManaged, IToolable, ITickSubscription, IToolGridHighlight, +public class MetaMachine extends ManagedSyncBlockEntity implements ISyncManaged, IToolable, ITickSubscription, IToolGridHighlight, IFancyTooltip, IPaintable, IRedstoneSignalMachine { + ModelProperty MODEL_DATA_LEVEL = new ModelProperty<>(); + ModelProperty MODEL_DATA_POS = new ModelProperty<>(); + @Getter protected final SyncDataHolder syncDataHolder = new SyncDataHolder(this); @@ -104,24 +119,37 @@ public class MetaMachine implements ISyncManaged, IToolable, ITickSubscription, @SyncToClient @Nullable private UUID ownerUUID; - @Getter - public final IMachineBlockEntity holder; + @Getter @SyncToClient @SaveField(nbtKey = "cover") protected final MachineCoverContainer coverContainer; + @Getter @SaveField @SyncToClient @RerenderOnChanged private int paintingColor = -1; + @Getter protected final List traits; + private final List serverTicks; private final List waitingToAdd; - public MetaMachine(IMachineBlockEntity holder) { - this.holder = holder; + @Getter + @Setter + @SaveField + @SyncToClient + @RerenderOnChanged + private MachineRenderState renderState; + @Getter + private final long offset = GTValues.RNG.nextInt(20); + + public MetaMachine(BlockEntityCreationInfo info) { + super(info.type(), info.pos(), info.state()); + + this.renderState = getDefinition().defaultRenderState(); this.coverContainer = new MachineCoverContainer(this); this.traits = new ArrayList<>(); this.serverTicks = new ArrayList<>(); @@ -133,22 +161,23 @@ public MetaMachine(IMachineBlockEntity holder) { ////////////////////////////////////// @Override - public void markAsChanged() { - if (getHolder() instanceof ManagedSyncBlockEntity syncBlockEntity) { - syncBlockEntity.markAsChanged(); - } + public final void setRemoved() { + super.setRemoved(); + onUnload(); } - public @Nullable Level getLevel() { - return holder.level(); + @Override + public void load(@NotNull CompoundTag tag) { + TagFixer.fixFluidTags(tag); + super.load(tag); } - public BlockPos getPos() { - return holder.pos(); + public @UnknownNullability Level getLevel() { + return super.getLevel(); } - public BlockState getBlockState() { - return holder.self().getBlockState(); + public BlockPos getPos() { + return getBlockPos(); } public void setOwnerUUID(UUID uuid) { @@ -160,12 +189,29 @@ public boolean isRemote() { return getLevel() == null ? GTCEu.isClientThread() : getLevel().isClientSide; } - public void notifyBlockUpdate() { - holder.notifyBlockUpdate(); + @Override + public boolean triggerEvent(int id, int para) { + if (id == 1) { // chunk re render + if (level != null && level.isClientSide) { + scheduleRenderUpdate(); + } + return true; + } + return false; } + @Override public void scheduleRenderUpdate() { - holder.scheduleRenderUpdate(); + var pos = getBlockPos(); + var level = getLevel(); + if (level != null) { + var state = level.getBlockState(pos); + if (level.isClientSide) { + level.sendBlockUpdated(pos, state, state, Block.UPDATE_IMMEDIATE); + } else { + level.blockEvent(pos, state.getBlock(), 1, 0); + } + } } public void scheduleNeighborShapeUpdate() { @@ -192,14 +238,6 @@ public void setPaintingColor(int color) { public void onPaintingColorChanged(int color) {} - public long getOffsetTimer() { - return holder.getOffsetTimer(); - } - - public boolean isInValid() { - return holder.self().isRemoved(); - } - @OverridingMethodsMustInvokeSuper public void onUnload() { traits.forEach(MachineTrait::onMachineUnLoad); @@ -223,6 +261,13 @@ public void onLoad() { } } + public void notifyBlockUpdate() { + if (getLevel() != null) { + getLevel().updateNeighborsAt(getBlockPos(), getLevel().getBlockState(getBlockPos()).getBlock()); + } + } + + ////////////////////////////////////// // ***** Tickable Manager ****// ////////////////////////////////////// @@ -279,7 +324,7 @@ private void executeTick() { if (tickable.isStillSubscribed()) { tickable.run(); } - if (isInValid()) break; + if (isRemoved()) break; if (!tickable.isStillSubscribed()) { iter.remove(); } @@ -458,10 +503,11 @@ protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand // ********** MISC ***********// ////////////////////////////////////// + @Nullable public static MetaMachine getMachine(BlockGetter level, BlockPos pos) { - if (level.getBlockEntity(pos) instanceof IMachineBlockEntity machineBlockEntity) { - return machineBlockEntity.getMetaMachine(); + if (level.getBlockEntity(pos) instanceof MetaMachine m) { + return m; } return null; } @@ -535,7 +581,11 @@ public void addDebugOverlayText(Consumer lines) { } public MachineDefinition getDefinition() { - return holder.getDefinition(); + if (getBlockState().getBlock() instanceof MetaMachineBlock machineBlock) { + return machineBlock.getDefinition(); + } else { + throw new IllegalStateException("MetaMachine created for an un available block: " + getBlockState().getBlock()); + } } public RotationState getRotationState() { @@ -600,6 +650,13 @@ public void setFrontFacing(Direction facing) { } } + @Override + public @NotNull ModelData getModelData() { + ModelData.Builder data = super.getModelData().derive(); + updateModelData(data); + return data.build(); + } + public static Direction getUpwardFacing(@Nullable MetaMachine machine) { return machine == null || !machine.allowExtendedFacing() ? Direction.NORTH : machine.getBlockState().getValue(GTBlockStateProperties.UPWARDS_FACING); @@ -668,14 +725,6 @@ public void updateModelData(ModelData.Builder builder) { } } - public MachineRenderState getRenderState() { - return this.getHolder().getRenderState(); - } - - public void setRenderState(MachineRenderState state) { - this.getHolder().setRenderState(state); - } - @Override public int getOutputSignal(@Nullable Direction side) { if (side == null) return 0; @@ -696,6 +745,15 @@ public boolean canConnectRedstone(Direction side) { return cover.canConnectRedstone(); } + public long getOffsetTimer() { + if (getLevel() == null) return getOffset(); + else if (getLevel().isClientSide()) return GTValues.CLIENT_TIME + getOffset(); + + var server = getLevel().getServer(); + if (server != null) return server.getTickCount() + getOffset(); + return getOffset(); + } + ////////////////////////////////////// // ****** Ownership ********// ////////////////////////////////////// @@ -829,4 +887,196 @@ public void onAddFancyInformationTooltip(List tooltips) { public int getDefaultPaintingColor() { return getDefinition().getDefaultPaintingColor(); } + + @SuppressWarnings("unchecked") + @OnlyIn(Dist.CLIENT) + @Override + public AABB getRenderBoundingBox() { + BlockRenderDispatcher blockRenderDispatcher = Minecraft.getInstance().getBlockRenderer(); + BakedModel model = blockRenderDispatcher.getBlockModel(this.getBlockState()); + + if (model instanceof IBlockEntityRendererBakedModel modelWithBER) { + if (modelWithBER.getBlockEntityType() == this.getType()) { + return ((IBlockEntityRendererBakedModel) modelWithBER) + .getRenderBoundingBox(this); + } + } + return new AABB(worldPosition.offset(-1, 0, -1), worldPosition.offset(2, 2, 2)); + } + + ////////////////////////////////////// + // ******** Capabilities *********// + ////////////////////////////////////// + + @Override + public @NotNull LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { + var result = getCapability(this, cap, side); + return result.isPresent() ? result : super.getCapability(cap, side); + } + + public static @NotNull LazyOptional getCapability(MetaMachine machine, @NotNull Capability cap, + @Nullable Direction side) { + if (cap == GTCapability.CAPABILITY_COVERABLE) { + return GTCapability.CAPABILITY_COVERABLE.orEmpty(cap, LazyOptional.of(machine::getCoverContainer)); + } else if (cap == GTCapability.CAPABILITY_TOOLABLE) { + return GTCapability.CAPABILITY_TOOLABLE.orEmpty(cap, LazyOptional.of(() -> machine)); + } else if (cap == GTCapability.CAPABILITY_WORKABLE) { + if (machine instanceof IWorkable workable) { + return GTCapability.CAPABILITY_WORKABLE.orEmpty(cap, LazyOptional.of(() -> workable)); + } + for (MachineTrait trait : machine.getTraits()) { + if (trait instanceof IWorkable workable) { + return GTCapability.CAPABILITY_WORKABLE.orEmpty(cap, LazyOptional.of(() -> workable)); + } + } + } else if (cap == GTCapability.CAPABILITY_CONTROLLABLE) { + if (machine instanceof IControllable controllable) { + return GTCapability.CAPABILITY_CONTROLLABLE.orEmpty(cap, LazyOptional.of(() -> controllable)); + } + for (MachineTrait trait : machine.getTraits()) { + if (trait instanceof IControllable controllable) { + return GTCapability.CAPABILITY_CONTROLLABLE.orEmpty(cap, LazyOptional.of(() -> controllable)); + } + } + } else if (cap == GTCapability.CAPABILITY_RECIPE_LOGIC) { + for (MachineTrait trait : machine.getTraits()) { + if (trait instanceof RecipeLogic recipeLogic) { + return GTCapability.CAPABILITY_RECIPE_LOGIC.orEmpty(cap, LazyOptional.of(() -> recipeLogic)); + } + } + } else if (cap == GTCapability.CAPABILITY_ENERGY_CONTAINER) { + if (machine instanceof IEnergyContainer energyContainer) { + return GTCapability.CAPABILITY_ENERGY_CONTAINER.orEmpty(cap, LazyOptional.of(() -> energyContainer)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyContainer.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_ENERGY_CONTAINER.orEmpty(cap, + LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new EnergyContainerList(list))); + } + } else if (cap == GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER) { + if (machine instanceof IEnergyInfoProvider energyInfoProvider) { + return GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER.orEmpty(cap, + LazyOptional.of(() -> energyInfoProvider)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyInfoProvider.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER.orEmpty(cap, + LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new EnergyInfoProviderList(list))); + } + } else if (cap == GTCapability.CAPABILITY_CLEANROOM_RECEIVER) { + if (machine instanceof ICleanroomReceiver cleanroomReceiver) { + return GTCapability.CAPABILITY_CLEANROOM_RECEIVER.orEmpty(cap, + LazyOptional.of(() -> cleanroomReceiver)); + } + } else if (cap == GTCapability.CAPABILITY_MAINTENANCE_MACHINE) { + if (machine instanceof IMaintenanceMachine maintenanceMachine) { + return GTCapability.CAPABILITY_MAINTENANCE_MACHINE.orEmpty(cap, + LazyOptional.of(() -> maintenanceMachine)); + } + } else if (cap == GTCapability.CAPABILITY_TURBINE_MACHINE) { + if (machine instanceof ITurbineMachine turbineMachine) { + return GTCapability.CAPABILITY_TURBINE_MACHINE.orEmpty(cap, + LazyOptional.of(() -> turbineMachine)); + } + } else if (cap == ForgeCapabilities.ITEM_HANDLER) { + var handler = machine.getItemHandlerCap(side, true); + if (handler != null) { + return ForgeCapabilities.ITEM_HANDLER.orEmpty(cap, LazyOptional.of(() -> handler)); + } + } else if (cap == ForgeCapabilities.FLUID_HANDLER) { + var handler = machine.getFluidHandlerCap(side, true); + if (handler != null) { + return ForgeCapabilities.FLUID_HANDLER.orEmpty(cap, LazyOptional.of(() -> handler)); + } + } else if (cap == ForgeCapabilities.ENERGY) { + if (machine instanceof IEnergyStorage energyStorage) { + return ForgeCapabilities.ENERGY.orEmpty(cap, LazyOptional.of(() -> energyStorage)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyStorage.class); + if (!list.isEmpty()) { + // TODO wrap list in the future + return ForgeCapabilities.ENERGY.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } else if (cap == GTCapability.CAPABILITY_LASER) { + if (machine instanceof ILaserContainer energyContainer) { + return GTCapability.CAPABILITY_LASER.orEmpty(cap, LazyOptional.of(() -> energyContainer)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, ILaserContainer.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_LASER.orEmpty(cap, + LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new LaserContainerList(list))); + } + } else if (cap == GTCapability.CAPABILITY_COMPUTATION_PROVIDER) { + if (machine instanceof IOpticalComputationProvider computationProvider) { + return GTCapability.CAPABILITY_COMPUTATION_PROVIDER.orEmpty(cap, + LazyOptional.of(() -> computationProvider)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IOpticalComputationProvider.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_COMPUTATION_PROVIDER.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } else if (cap == GTCapability.CAPABILITY_DATA_ACCESS) { + if (machine instanceof IDataAccessHatch computationProvider) { + return GTCapability.CAPABILITY_DATA_ACCESS.orEmpty(cap, LazyOptional.of(() -> computationProvider)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IDataAccessHatch.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_DATA_ACCESS.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } else if (cap == GTCapability.CAPABILITY_MONITOR_COMPONENT) { + if (machine instanceof IMonitorComponent monitorComponent) { + return GTCapability.CAPABILITY_MONITOR_COMPONENT.orEmpty(cap, LazyOptional.of(() -> monitorComponent)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IMonitorComponent.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_MONITOR_COMPONENT.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } else if (cap == GTCapability.CAPABILITY_CENTRAL_MONITOR) { + if (machine instanceof ICentralMonitor centralMonitor) { + return GTCapability.CAPABILITY_CENTRAL_MONITOR.orEmpty(cap, LazyOptional.of(() -> centralMonitor)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, ICentralMonitor.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_CENTRAL_MONITOR.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } + if (GTCEu.Mods.isAE2Loaded()) { + LazyOptional opt = AE2CallWrapper.getGridNodeHostCapability(cap, machine, side); + if (opt.isPresent()) { + // noinspection unchecked + return (LazyOptional) opt; + } + } + return LazyOptional.empty(); + } + + public static List getCapabilitiesFromTraits(List traits, @Nullable Direction accessSide, + Class capability) { + if (traits.isEmpty()) return Collections.emptyList(); + List list = new ArrayList<>(); + for (MachineTrait trait : traits) { + if (trait.hasCapability(accessSide) && capability.isInstance(trait)) { + list.add(capability.cast(trait)); + } + } + return list; + } + + public static class AE2CallWrapper { + + public static LazyOptional getGridNodeHostCapability(Capability cap, MetaMachine machine, + Direction side) { + if (cap == Capabilities.IN_WORLD_GRID_NODE_HOST) { + if (machine instanceof IInWorldGridNodeHost nodeHost) { + return Capabilities.IN_WORLD_GRID_NODE_HOST.orEmpty(cap, LazyOptional.of(() -> nodeHost)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IInWorldGridNodeHost.class); + if (!list.isEmpty()) { + // TODO wrap list in the future (or not.) + return Capabilities.IN_WORLD_GRID_NODE_HOST.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } + return LazyOptional.empty(); + } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java index a7db187225b..b6e8c23bac7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.machine; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.*; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; import com.gregtechceu.gtceu.api.machine.feature.IEnvironmentalHazardEmitter; @@ -42,16 +43,16 @@ public class SimpleGeneratorMachine extends WorkableTieredMachine @Getter private final float hazardStrengthPerOperation; - public SimpleGeneratorMachine(IMachineBlockEntity holder, int tier, + public SimpleGeneratorMachine(BlockEntityCreationInfo info, int tier, float hazardStrengthPerOperation, Int2IntFunction tankScalingFunction) { - super(holder, tier, tankScalingFunction); + super(info, tier, tankScalingFunction); energyContainer.setSideOutputCondition(side -> !hasFrontFacing() || side == getFrontFacing()); this.hazardStrengthPerOperation = hazardStrengthPerOperation; } - public SimpleGeneratorMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction) { - this(holder, tier, 0.25f, tankScalingFunction); + public SimpleGeneratorMachine(BlockEntityCreationInfo info, int tier, Int2IntFunction tankScalingFunction) { + this(info, tier, 0.25f, tankScalingFunction); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java index b5f1f74b15a..e9755d25e07 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.machine; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.recipe.*; import com.gregtechceu.gtceu.api.gui.GuiTextures; @@ -105,9 +106,9 @@ public class SimpleTieredMachine extends WorkableTieredMachine @Nullable protected ISubscription exportItemSubs, exportFluidSubs, energySubs; - public SimpleTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction, + public SimpleTieredMachine(BlockEntityCreationInfo info, int tier, Int2IntFunction tankScalingFunction, WorkableTieredMachineTraits traits) { - super(holder, tier, tankScalingFunction, traits); + super(info, tier, tankScalingFunction, traits); this.outputFacingItems = hasFrontFacing() ? getFrontFacing().getOpposite() : Direction.UP; this.outputFacingFluids = outputFacingItems; @@ -125,8 +126,8 @@ public int getSlotLimit(int slot) { .setFilter(IntCircuitBehaviour::isIntegratedCircuit); } - public SimpleTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction) { - this(holder, tier, tankScalingFunction, new WorkableTieredMachineTraits()); + public SimpleTieredMachine(BlockEntityCreationInfo info, int tier, Int2IntFunction tankScalingFunction) { + this(info, tier, tankScalingFunction, new WorkableTieredMachineTraits()); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java index 7a90f778617..d7fca947ae1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.machine; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.editor.EditableUI; import com.gregtechceu.gtceu.api.machine.feature.IExplosionMachine; @@ -30,14 +31,14 @@ public class TieredEnergyMachine extends TieredMachine implements ITieredMachine public final NotifiableEnergyContainer energyContainer; protected TickableSubscription explosionSub; - public TieredEnergyMachine(IMachineBlockEntity holder, int tier, + public TieredEnergyMachine(BlockEntityCreationInfo info, int tier, Function energyContainerSupplier) { - super(holder, tier); + super(info, tier); energyContainer = energyContainerSupplier.apply(this); } - public TieredEnergyMachine(IMachineBlockEntity holder, int tier) { - super(holder, tier); + public TieredEnergyMachine(BlockEntityCreationInfo info, int tier) { + super(info, tier); long tierVoltage = GTValues.V[getTier()]; if (isEnergyEmitter()) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredMachine.java index 40fe9099ac3..1b5b1f9d3c8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.machine; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import lombok.Getter; @@ -9,8 +10,8 @@ public class TieredMachine extends MetaMachine implements ITieredMachine { @Getter protected final int tier; - public TieredMachine(IMachineBlockEntity holder, int tier) { - super(holder); + public TieredMachine(BlockEntityCreationInfo info, int tier) { + super(info); this.tier = tier; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java index 6e16390ae7e..814d52c04d8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.machine; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.*; import com.gregtechceu.gtceu.api.machine.feature.*; import com.gregtechceu.gtceu.api.machine.trait.*; @@ -99,9 +100,9 @@ public NotifiableComputationContainer exportComputation(WorkableTieredMachine ma } } - public WorkableTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction, + public WorkableTieredMachine(BlockEntityCreationInfo info, int tier, Int2IntFunction tankScalingFunction, WorkableTieredMachineTraits traits) { - super(holder, tier); + super(info, tier); this.overclockTier = getMaxOverclockTier(); this.recipeTypes = getDefinition().getRecipeTypes(); this.activeRecipeType = 0; @@ -118,8 +119,8 @@ public WorkableTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFuncti this.exportComputation = traits.exportComputation(this); } - public WorkableTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction tankScalingFunction) { - this(holder, tier, tankScalingFunction, new WorkableTieredMachineTraits()); + public WorkableTieredMachine(BlockEntityCreationInfo info, int tier, Int2IntFunction tankScalingFunction) { + this(info, tier, tankScalingFunction, new WorkableTieredMachineTraits()); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IUIMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IUIMachine.java index 5b504ccfa09..2e5ef050929 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IUIMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IUIMachine.java @@ -33,7 +33,7 @@ default InteractionResult tryToOpenUI(Player player, InteractionHand hand, Block @Override default boolean isInvalid() { - return self().isInValid(); + return self().isRemoved(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/CoilWorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/CoilWorkableElectricMultiblockMachine.java index 112c5566288..9d6fa1bb052 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/CoilWorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/CoilWorkableElectricMultiblockMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.machine.multiblock; import com.gregtechceu.gtceu.api.block.ICoilType; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.common.block.CoilBlock; @@ -17,8 +18,8 @@ public class CoilWorkableElectricMultiblockMachine extends WorkableElectricMulti @Getter private ICoilType coilType = CoilBlock.CoilType.CUPRONICKEL; - public CoilWorkableElectricMultiblockMachine(IMachineBlockEntity holder) { - super(holder); + public CoilWorkableElectricMultiblockMachine(BlockEntityCreationInfo info) { + super(info); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java index 9e70e772dea..4b0ade89c21 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IParallelHatch; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; @@ -62,8 +63,8 @@ public class MultiblockControllerMachine extends MetaMachine implements IMultiCo @SyncToClient protected boolean isFlipped; - public MultiblockControllerMachine(IMachineBlockEntity holder) { - super(holder); + public MultiblockControllerMachine(BlockEntityCreationInfo info) { + super(info); } ////////////////////////////////////// @@ -217,7 +218,7 @@ public void onStructureInvalid() { */ @Override public void onPartUnload() { - parts.removeIf(part -> part.self().isInValid()); + parts.removeIf(part -> part.self().isRemoved()); getMultiblockState().setError(MultiblockState.UNLOAD_ERROR); if (getLevel() instanceof ServerLevel serverLevel) { MultiblockWorldSavedData.getOrCreate(serverLevel).addAsyncLogic(this); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java index 357863d1c3e..5daf4d2ee4d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.machine.multiblock; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IOverclockMachine; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; @@ -22,8 +23,8 @@ public class TieredWorkableElectricMultiblockMachine extends WorkableElectricMul @Getter protected int overclockTier; - public TieredWorkableElectricMultiblockMachine(IMachineBlockEntity holder, int tier) { - super(holder); + public TieredWorkableElectricMultiblockMachine(BlockEntityCreationInfo info, int tier) { + super(info); this.tier = tier; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java index fc4335f91ed..3b88aef8769 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.machine.multiblock; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IEnergyContainer; import com.gregtechceu.gtceu.api.capability.IParallelHatch; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; @@ -52,13 +53,13 @@ public class WorkableElectricMultiblockMachine extends WorkableMultiblockMachine @Getter protected boolean batchEnabled; - public WorkableElectricMultiblockMachine(IMachineBlockEntity holder, + public WorkableElectricMultiblockMachine(BlockEntityCreationInfo info, Function recipeLogicSupplier) { - super(holder, recipeLogicSupplier); + super(info, recipeLogicSupplier); } - public WorkableElectricMultiblockMachine(IMachineBlockEntity holder) { - super(holder); + public WorkableElectricMultiblockMachine(BlockEntityCreationInfo info) { + super(info); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java index 8b9df169677..38e6bd2a562 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.machine.multiblock; import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; @@ -79,9 +80,9 @@ public abstract class WorkableMultiblockMachine extends MultiblockControllerMach @SyncToClient protected VoidingMode voidingMode = VoidingMode.VOID_NONE; - public WorkableMultiblockMachine(IMachineBlockEntity holder, + public WorkableMultiblockMachine(BlockEntityCreationInfo info, Function recipeLogicSupplier) { - super(holder); + super(info); this.recipeTypes = getDefinition().getRecipeTypes(); this.activeRecipeType = 0; this.recipeLogic = recipeLogicSupplier.apply(this); @@ -90,8 +91,8 @@ public WorkableMultiblockMachine(IMachineBlockEntity holder, this.traitSubscriptions = new ArrayList<>(); } - public WorkableMultiblockMachine(IMachineBlockEntity holder) { - this(holder, RecipeLogic::new); + public WorkableMultiblockMachine(BlockEntityCreationInfo info) { + this(info, RecipeLogic::new); } public void setMuffled(boolean muffled) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java index 8f63e2d0030..fa83664ec7b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -39,8 +40,8 @@ public class MultiblockPartMachine extends MetaMachine implements IMultiPart { private @Nullable RecipeHandlerList handlerList; - public MultiblockPartMachine(IMachineBlockEntity holder) { - super(holder); + public MultiblockPartMachine(BlockEntityCreationInfo info) { + super(info); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredIOPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredIOPartMachine.java index fe934dd779f..96947d11fb0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredIOPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredIOPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -29,8 +30,8 @@ public class TieredIOPartMachine extends TieredPartMachine implements IControlla @RerenderOnChanged protected boolean workingEnabled; - public TieredIOPartMachine(IMachineBlockEntity holder, int tier, IO io) { - super(holder, tier); + public TieredIOPartMachine(BlockEntityCreationInfo info, int tier, IO io) { + super(info, tier); this.io = io; this.workingEnabled = true; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredPartMachine.java index becbaf3bd68..14a7c787b0c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; @@ -16,8 +17,8 @@ public class TieredPartMachine extends MultiblockPartMachine implements ITieredM @Getter protected final int tier; - public TieredPartMachine(IMachineBlockEntity holder, int tier) { - super(holder); + public TieredPartMachine(BlockEntityCreationInfo info, int tier) { + super(info); this.tier = tier; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java index a54356d9174..906b101f498 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.machine.steam; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; @@ -54,8 +55,8 @@ public class SimpleSteamMachine extends SteamWorkableMachine implements IExhaust @SaveField private boolean needsVenting; - public SimpleSteamMachine(IMachineBlockEntity holder, boolean isHighPressure) { - super(holder, isHighPressure); + public SimpleSteamMachine(BlockEntityCreationInfo info, boolean isHighPressure) { + super(info, isHighPressure); this.importItems = createImportItemHandler(); this.exportItems = createExportItemHandler(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java index eecebe1db04..ab74a8c926e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.machine.steam; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; @@ -85,8 +86,8 @@ public abstract class SteamBoilerMachine extends SteamWorkableMachine @Nullable protected ISubscription steamTankSubs; - public SteamBoilerMachine(IMachineBlockEntity holder, boolean isHighPressure) { - super(holder, isHighPressure); + public SteamBoilerMachine(BlockEntityCreationInfo info, boolean isHighPressure) { + super(info, isHighPressure); this.waterTank = createWaterTank(); this.waterTank.setFilter(fluid -> fluid.getFluid().is(GTMaterials.Water.getFluidTag())); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java index 60fe955a384..a91d13c5194 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.machine.steam; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; @@ -28,8 +29,8 @@ public abstract class SteamMachine extends MetaMachine implements ITieredMachine @SaveField public final NotifiableFluidTank steamTank; - public SteamMachine(IMachineBlockEntity holder, boolean isHighPressure) { - super(holder); + public SteamMachine(BlockEntityCreationInfo info, boolean isHighPressure) { + super(info); this.isHighPressure = isHighPressure; this.steamTank = new NotifiableFluidTank(this, 1, 16 * FluidType.BUCKET_VOLUME, IO.IN) .setFilter(f -> f.getFluid().is(GTMaterials.Steam.getFluidTag())); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java index 665bc6bcd73..a40ba5b99ee 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.machine.steam; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; @@ -73,9 +74,9 @@ public abstract class SteamWorkableMachine extends SteamMachine protected final Map, List>>> capabilitiesFlat; protected final List traitSubscriptions; - public SteamWorkableMachine(IMachineBlockEntity holder, boolean isHighPressure, + public SteamWorkableMachine(BlockEntityCreationInfo info, boolean isHighPressure, Function recipeLogicSupplier) { - super(holder, isHighPressure); + super(info, isHighPressure); this.recipeTypes = getDefinition().getRecipeTypes(); this.activeRecipeType = 0; this.recipeLogic = recipeLogicSupplier.apply(this); @@ -85,8 +86,8 @@ public SteamWorkableMachine(IMachineBlockEntity holder, boolean isHighPressure, this.outputFacing = hasFrontFacing() ? getFrontFacing().getOpposite() : Direction.UP; } - public SteamWorkableMachine(IMachineBlockEntity holder, boolean isHighPressure) { - this(holder, isHighPressure, RecipeLogic::new); + public SteamWorkableMachine(BlockEntityCreationInfo info, boolean isHighPressure) { + this(info, isHighPressure, RecipeLogic::new); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index 71e5ee2ed6e..74bdc9b1d02 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -567,7 +567,7 @@ public void updateSound() { } if (sound != null) { workingSound = sound.playAutoReleasedSound( - () -> machine.shouldWorkingPlaySound() && isWorking() && !getMachine().isInValid() && + () -> machine.shouldWorkingPlaySound() && isWorking() && !getMachine().isRemoved() && getMachine().getLevel().isLoaded(getMachine().getPos()) && MetaMachine.getMachine(getMachine().getLevel(), getMachine().getPos()) == getMachine(), getMachine().getPos(), true, 0, 1, 1); diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockShapeInfo.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockShapeInfo.java index 326e1e01b97..95180285147 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockShapeInfo.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockShapeInfo.java @@ -1,6 +1,6 @@ package com.gregtechceu.gtceu.api.pattern; -import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.data.RotationState; import com.lowdragmc.lowdraglib.utils.BlockInfo; @@ -42,11 +42,11 @@ public ShapeInfoBuilder where(char symbol, Block block) { return where(symbol, block.defaultBlockState()); } - public ShapeInfoBuilder where(char symbol, Supplier machine, Direction facing) { + public ShapeInfoBuilder where(char symbol, Supplier machine, Direction facing) { return where(symbol, machine.get(), facing); } - public ShapeInfoBuilder where(char symbol, IMachineBlock machine, Direction facing) { + public ShapeInfoBuilder where(char symbol, MetaMachineBlock machine, Direction facing) { return where(symbol, machine.getRotationState() == RotationState.NONE ? machine.self().defaultBlockState() : machine.self().defaultBlockState().setValue(machine.getRotationState().property, facing)); diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java index 413a17137ee..adfa8c1a8f6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java @@ -2,7 +2,7 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.block.ICoilType; -import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; @@ -61,19 +61,19 @@ public static TraceabilityPredicate blocks(Block... blocks) { return new TraceabilityPredicate(new PredicateBlocks(blocks)); } - public static TraceabilityPredicate blocks(IMachineBlock... blocks) { + public static TraceabilityPredicate blocks(MetaMachineBlock... blocks) { return new TraceabilityPredicate( - new PredicateBlocks(Arrays.stream(blocks).map(IMachineBlock::self).toArray(Block[]::new))); + new PredicateBlocks(Arrays.stream(blocks).map(MetaMachineBlock::self).toArray(Block[]::new))); } public static TraceabilityPredicate machines(MachineDefinition... definitions) { - ArrayList machineBlocks = new ArrayList<>(definitions.length); + ArrayList machineBlocks = new ArrayList<>(definitions.length); for (var definition : definitions) { if (definition != null) { machineBlocks.add(definition.get()); } } - return blocks(machineBlocks.toArray(IMachineBlock[]::new)); + return blocks(machineBlocks.toArray(MetaMachineBlock[]::new)); } public static TraceabilityPredicate blockTag(TagKey tag) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/ILDEndpoint.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/ILDEndpoint.java index d7ec4368989..55f28fee014 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/ILDEndpoint.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/ILDEndpoint.java @@ -1,8 +1,6 @@ package com.gregtechceu.gtceu.api.pipenet.longdistance; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; - import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.Level; @@ -45,6 +43,8 @@ default boolean isOutput() { @Nullable ILDEndpoint getLink(); + boolean isRemoved(); + /** * removes the linked endpoint if there is any */ @@ -76,12 +76,10 @@ default boolean isOutput() { Level getLevel(); - boolean isInValid(); - @Nullable static ILDEndpoint tryGet(LevelAccessor world, BlockPos pos) { BlockEntity te = world.getBlockEntity(pos); - if (te instanceof IMachineBlockEntity gte && gte.getMetaMachine() instanceof ILDEndpoint endpoint) { + if (te instanceof ILDEndpoint endpoint) { return endpoint; } return null; diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/LongDistanceNetwork.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/LongDistanceNetwork.java index 8a05c60f33d..beb40bc6099 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/LongDistanceNetwork.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/LongDistanceNetwork.java @@ -249,7 +249,7 @@ public ILDEndpoint getOtherEndpoint(ILDEndpoint endpoint) { private int find(ILDEndpoint endpoint) { for (int i = 0; i < this.endpoints.size(); i++) { ILDEndpoint other = this.endpoints.get(i); - if (other.isInValid()) { + if (other.isRemoved()) { other.invalidateLink(); this.endpoints.remove(i--); continue; diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java index 63c5578809e..2ea084651e6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java @@ -1,9 +1,8 @@ package com.gregtechceu.gtceu.api.registry.registrate; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.item.MetaMachineItem; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -128,24 +127,22 @@ public IGTFluidBuilder createFluid(String name, String langKey, Material materia public MachineBuilder machine(String name, Function definitionFactory, - Function metaMachine, - BiFunction blockFactory, - BiFunction itemFactory, - TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { - return new MachineBuilder<>(this, name, definitionFactory, metaMachine, + BiFunction blockFactory, + BiFunction itemFactory, + Function blockEntityFactory) { + return new MachineBuilder<>(this, name, definitionFactory, blockFactory, itemFactory, blockEntityFactory); } - public MachineBuilder machine(String name, - Function metaMachine) { - return new MachineBuilder<>(this, name, MachineDefinition::new, metaMachine, - MetaMachineBlock::new, MetaMachineItem::new, MetaMachineBlockEntity::new); + public MachineBuilder machine(String name, Function blockEntityFactory) { + return new MachineBuilder<>(this, name, MachineDefinition::new, + MetaMachineBlock::new, MetaMachineItem::new, blockEntityFactory); } public MultiblockMachineBuilder multiblock(String name, Function metaMachine, - BiFunction blockFactory, - BiFunction itemFactory, + BiFunction blockFactory, + BiFunction itemFactory, TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { return new MultiblockMachineBuilder(this, name, metaMachine, blockFactory, itemFactory, blockEntityFactory); diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index 264938c11bc..dfff3086040 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -2,12 +2,12 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.block.MetaMachineBlock; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; import com.gregtechceu.gtceu.api.item.MetaMachineItem; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; @@ -30,7 +30,6 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.client.renderer.RenderType; -import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; @@ -67,7 +66,6 @@ import lombok.experimental.Accessors; import lombok.experimental.Tolerate; import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.lang3.function.TriFunction; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -88,13 +86,11 @@ public class MachineBuilder extends Builde protected final GTRegistrate registrate; protected final String name; - protected final BiFunction blockFactory; - protected final BiFunction itemFactory; - protected final TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory; + protected final BiFunction blockFactory; + protected final BiFunction itemFactory; + protected final Function blockEntityFactory; protected final Function definition; - @Setter - protected Function machine; @Nullable @Getter @Setter @@ -187,14 +183,12 @@ public class MachineBuilder extends Builde public MachineBuilder(GTRegistrate registrate, String name, Function definition, - Function machine, - BiFunction blockFactory, - BiFunction itemFactory, - TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { + BiFunction blockFactory, + BiFunction itemFactory, + Function blockEntityFactory) { super(new ResourceLocation(registrate.getModid(), name)); this.registrate = registrate; this.name = name; - this.machine = machine; this.blockFactory = blockFactory; this.itemFactory = itemFactory; this.blockEntityFactory = blockEntityFactory; @@ -556,7 +550,7 @@ public DEFINITION register() { var item = itemBuilder.register(); var blockEntityBuilder = registrate - .blockEntity((type, pos, state) -> blockEntityFactory.apply(type, pos, state).self()) + .blockEntity((type, pos, state) -> blockEntityFactory.apply(new BlockEntityCreationInfo(type, pos, state))) .onRegister(onBlockEntityRegister) .validBlock(block); if (hasBER) { @@ -569,7 +563,6 @@ public DEFINITION register() { definition.setTier(tier); definition.setRecipeOutputLimits(recipeOutputLimits); definition.setBlockEntityTypeSupplier(blockEntity::get); - definition.setMachineSupplier(machine); definition.setTooltipBuilder((itemStack, components) -> { components.addAll(tooltips); if (tooltipBuilder != null) tooltipBuilder.accept(itemStack, components); @@ -637,9 +630,7 @@ default ModelInitializer compose(ModelInitializer before) { default ModelInitializer compose(UnaryOperator> before) { Objects.requireNonNull(before); - return (ctx, prov, builder) -> { - this.configureModel(ctx, prov, before.apply(builder)); - }; + return (ctx, prov, builder) -> this.configureModel(ctx, prov, before.apply(builder)); } } @@ -649,7 +640,7 @@ protected static class BlockBuilderWrapper { public static BlockBuilder> makeBlockBuilder(MachineBuilder builder, DEFINITION definition) { return builder.registrate.block(properties -> makeBlock(builder, definition, properties)) - .color(() -> () -> IMachineBlock::colorTinted) + .color(() -> () -> MetaMachineBlock::colorTinted) .initialProperties(() -> Blocks.DISPENSER) .properties(BlockBehaviour.Properties::noLootTable) .addLayer(() -> RenderType::cutout) @@ -663,7 +654,7 @@ private static Block makeBlock(MachineBui MachineDefinition.setBuilt(definition); var b = builder.blockFactory.apply(properties, definition); MachineDefinition.clearBuilt(); - return b.self(); + return b; } } @@ -672,13 +663,11 @@ protected static class ItemBuilderWrapper { public static ItemBuilder> makeItemBuilder(MachineBuilder builder, BlockEntry block) { return builder.registrate - .item(properties -> builder.itemFactory.apply((IMachineBlock) block.get(), properties)) + .item(properties -> builder.itemFactory.apply((MetaMachineBlock) block.get(), properties)) .setData(ProviderType.LANG, NonNullBiConsumer.noop()) // do not gen any lang keys // copied from BlockBuilder#item - .model((ctx, prov) -> { - prov.withExistingParent(ctx.getName(), new ResourceLocation(builder.registrate.getModid(), - "block/machine/" + ctx.getName())); - }) + .model((ctx, prov) -> prov.withExistingParent(ctx.getName(), new ResourceLocation(builder.registrate.getModid(), + "block/machine/" + ctx.getName()))) .color(() -> () -> builder.itemColor::apply) .properties(builder.itemProp); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java index e7ff7419d08..d6ff180ce39 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java @@ -1,6 +1,6 @@ package com.gregtechceu.gtceu.api.registry.registrate; -import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; @@ -84,8 +84,8 @@ public class MultiblockMachineBuilder extends MachineBuilder metaMachine, - BiFunction blockFactory, - BiFunction itemFactory, + BiFunction blockFactory, + BiFunction itemFactory, TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { super(registrate, name, MultiblockMachineDefinition::new, metaMachine::apply, blockFactory, itemFactory, blockEntityFactory); diff --git a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java index f0646525cc2..2a3f24f87ce 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.client.EnvironmentalHazardClientHandler; import com.gregtechceu.gtceu.client.TooltipsHandler; import com.gregtechceu.gtceu.client.renderer.BlockHighlightRenderer; @@ -170,7 +171,7 @@ public static void onDebugTextEvent(CustomizeGuiOverlayEvent.DebugText event) { BlockPos hitPos = hit.getBlockPos(); BlockEntity blockEntity = mc.level.getBlockEntity(hitPos); // only try to find the correct location if we have a valid machine - if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return; + if (!(blockEntity instanceof MetaMachine machineBE)) return; final List rightLines = event.getRight(); int lineCount = rightLines.size(); @@ -203,7 +204,7 @@ public static void onDebugTextEvent(CustomizeGuiOverlayEvent.DebugText event) { MutableInt index = new MutableInt(afterBlockSection); rightLines.add(index.getAndIncrement(), ""); - machineBE.getMetaMachine().addDebugOverlayText(line -> rightLines.add(index.getAndIncrement(), line)); + machineBE.addDebugOverlayText(line -> rightLines.add(index.getAndIncrement(), line)); } @SubscribeEvent diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java index 77820ddf4df..0d2bc36aa14 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.client.renderer; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -129,7 +128,7 @@ public static void showPreview(BlockPos pos, MultiblockControllerMachine control for (int z = 0; z < column.length; z++) { var blockState = column[z].getBlockState(); // if its controller record its position offset. - if (blockState.getBlock() instanceof IMachineBlock machineBlock && + if (blockState.getBlock() instanceof MetaMachineBlock machineBlock && machineBlock.getDefinition() instanceof MultiblockMachineDefinition) { controllerPatternPos = new BlockPos(x, y, z); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/DuctPipeBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/DuctPipeBlock.java index f08d13c97f9..b2efe57cb08 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/DuctPipeBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/DuctPipeBlock.java @@ -1,9 +1,9 @@ package com.gregtechceu.gtceu.common.block; import com.gregtechceu.gtceu.api.block.PipeBlock; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; import com.gregtechceu.gtceu.api.capability.forge.GTCapability; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IEnvironmentalHazardCleaner; import com.gregtechceu.gtceu.api.machine.feature.IEnvironmentalHazardEmitter; import com.gregtechceu.gtceu.api.pipenet.IPipeNode; @@ -95,9 +95,7 @@ public boolean canPipeConnectToBlock(IPipeNode @Nullable BlockEntity tile) { return tile != null && (tile.getCapability(GTCapability.CAPABILITY_HAZARD_CONTAINER, side.getOpposite()).isPresent() || - tile instanceof MetaMachineBlockEntity metaMachine && - (metaMachine.getMetaMachine() instanceof IEnvironmentalHazardCleaner || - metaMachine.getMetaMachine() instanceof IEnvironmentalHazardEmitter)); + tile instanceof MetaMachine metaMachine && (tile instanceof IEnvironmentalHazardCleaner || tile instanceof IEnvironmentalHazardEmitter)); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlockEntities.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlockEntities.java index 4355206d72f..eac3af9d136 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlockEntities.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlockEntities.java @@ -11,6 +11,7 @@ public class GTBlockEntities { + @SuppressWarnings("unchecked") public static final BlockEntityEntry CABLE = REGISTRATE .blockEntity("cable", CableBlockEntity::create) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index 66c58065d87..17a7127310a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.capability.compat.FeCompat; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java index 1c4c30c51c2..d4cdf600f2c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java @@ -2,7 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; @@ -641,7 +641,7 @@ public static MachineBuilder.ModelInitializer createItemCollectorModel(ResourceL public static NonNullBiConsumer, GTBlockstateProvider> createMachineModel(MachineBuilder.ModelInitializer modelInitializer) { return (ctx, prov) -> { Block block = ctx.getEntry(); - if (!(block instanceof IMachineBlock machineBlock)) { + if (!(block instanceof MetaMachineBlock machineBlock)) { throw new IllegalArgumentException( "passed block must be a machine block, is " + block.getClass().getName()); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/DataItemBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/DataItemBehavior.java index 9df8a915c81..047f36f7484 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/DataItemBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/DataItemBehavior.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.common.item; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.ICoverable; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; @@ -8,6 +7,7 @@ import com.gregtechceu.gtceu.api.item.component.IAddInformation; import com.gregtechceu.gtceu.api.item.component.IDataItem; import com.gregtechceu.gtceu.api.item.component.IInteractionItem; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IDataStickInteractable; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; @@ -158,8 +158,7 @@ public InteractionResult onItemUseFirst(ItemStack itemStack, UseOnContext contex return interactable.onDataStickUse(context.getPlayer(), itemStack); } } - if (context.getLevel().getBlockEntity(context.getClickedPos()) instanceof MetaMachineBlockEntity blockEntity) { - var machine = blockEntity.getMetaMachine(); + if (context.getLevel().getBlockEntity(context.getClickedPos()) instanceof MetaMachine machine) { if (!MachineOwner.canOpenOwnerMachine(context.getPlayer(), machine)) { return InteractionResult.FAIL; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/IntCircuitBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/IntCircuitBehaviour.java index 5e2a1566377..5661008cfa5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/IntCircuitBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/IntCircuitBehaviour.java @@ -1,10 +1,10 @@ package com.gregtechceu.gtceu.common.item; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.item.component.IAddInformation; import com.gregtechceu.gtceu.api.item.component.IItemUIFactory; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IHasCircuitSlot; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; @@ -141,8 +141,8 @@ public InteractionResult useOn(UseOnContext context) { var stack = context.getItemInHand(); int circuitSetting = getCircuitConfiguration(stack); BlockEntity entity = context.getLevel().getBlockEntity(context.getClickedPos()); - if (entity instanceof MetaMachineBlockEntity machineEntity && context.isSecondaryUseActive()) { - if (machineEntity.metaMachine instanceof IHasCircuitSlot circuitMachine && + if (entity instanceof MetaMachine machine && context.isSecondaryUseActive()) { + if (machine instanceof IHasCircuitSlot circuitMachine && circuitMachine.getCircuitInventory().getSlots() > 0) { setCircuitConfig(circuitMachine.getCircuitInventory(), circuitSetting); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java index e63906415ed..d6bd8244c00 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.item.tool.behavior.IToolBehavior; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.common.data.item.GTToolActions; import com.gregtechceu.gtceu.common.item.tool.rotation.CustomBlockRotations; import com.gregtechceu.gtceu.common.item.tool.rotation.ICustomRotationBehavior; @@ -51,7 +52,7 @@ public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { BlockPos pos = context.getClickedPos(); BlockEntity te = level.getBlockEntity(pos); // MTEs have special handling on rotation - if (te instanceof IMachineBlockEntity) { + if (te instanceof MetaMachine) { return InteractionResult.PASS; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java index 0ba0f0cb77d..bded78b2a91 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.electric; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -40,8 +41,8 @@ public class AirScrubberMachine extends SimpleTieredMachine implements IEnvironm @Getter private float removedLastSecond; - public AirScrubberMachine(IMachineBlockEntity holder, int tier) { - super(holder, tier, GTMachineUtils.largeTankSizeFunction); + public AirScrubberMachine(BlockEntityCreationInfo info, int tier) { + super(info, tier, GTMachineUtils.largeTankSizeFunction); this.cleaningPerOperation = MIN_CLEANING_PER_OPERATION; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java index 5896256b2dc..1b17d8b7294 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.electric; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.IElectricItem; @@ -52,8 +53,8 @@ public class BatteryBufferMachine extends TieredEnergyMachine @SaveField protected final CustomItemStackHandler batteryInventory; - public BatteryBufferMachine(IMachineBlockEntity holder, int tier, int inventorySize) { - super(holder, tier, + public BatteryBufferMachine(BlockEntityCreationInfo info, int tier, int inventorySize) { + super(info, tier, (TieredEnergyMachine machine) -> new EnergyBatteryTrait((BatteryBufferMachine) machine, inventorySize)); this.isWorkingEnabled = true; this.inventorySize = inventorySize; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java index 6454710b4b9..53d2f67b8e9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.electric; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.recipe.IO; @@ -94,8 +95,8 @@ public class BlockBreakerMachine extends TieredEnergyMachine @SyncToClient private boolean isWorkingEnabled = true; - public BlockBreakerMachine(IMachineBlockEntity holder, int tier) { - super(holder, tier); + public BlockBreakerMachine(BlockEntityCreationInfo info, int tier) { + super(info, tier); this.inventorySize = (tier + 1) * (tier + 1); this.cache = createCacheItemHandler(); this.chargerInventory = createChargerItemHandler(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java index 9909036aa0c..1cb3a7eb28d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.electric; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.*; import com.gregtechceu.gtceu.api.capability.compat.FeCompat; import com.gregtechceu.gtceu.api.gui.GuiTextures; @@ -75,8 +76,8 @@ public enum State implements StringRepresentable { @RerenderOnChanged private State state; - public ChargerMachine(IMachineBlockEntity holder, int tier, int inventorySize) { - super(holder, tier, + public ChargerMachine(BlockEntityCreationInfo info, int tier, int inventorySize) { + super(info, tier, (TieredEnergyMachine machine) -> new EnergyBatteryTrait((ChargerMachine) machine, inventorySize)); this.isWorkingEnabled = true; this.inventorySize = inventorySize; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java index 42b44071528..98891e2152a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.electric; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.compat.FeCompat; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.item.tool.GTToolType; @@ -34,8 +35,8 @@ public class ConverterMachine extends TieredEnergyMachine { public static final BooleanProperty FE_TO_EU_PROPERTY = GTMachineModelProperties.IS_FE_TO_EU; - public ConverterMachine(IMachineBlockEntity holder, int tier, int amps) { - super(holder, tier, (TieredEnergyMachine machine) -> new ConverterTrait((ConverterMachine) machine, amps)); + public ConverterMachine(BlockEntityCreationInfo info, int tier, int amps) { + super(info, tier, (TieredEnergyMachine machine) -> new ConverterTrait((ConverterMachine) machine, amps)); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java index 4c77c974e22..0cb52df1338 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.electric; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IWorkable; import com.gregtechceu.gtceu.api.capability.recipe.IO; @@ -127,8 +128,8 @@ public class FisherMachine extends TieredEnergyMachine @SyncToClient protected boolean junkEnabled = true; - public FisherMachine(IMachineBlockEntity holder, int tier) { - super(holder, tier); + public FisherMachine(BlockEntityCreationInfo info, int tier) { + super(info, tier); this.inventorySize = (tier + 1) * (tier + 1); this.maxProgress = calcMaxProgress(tier); this.energyPerTick = GTValues.V[tier - 1]; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/HullMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/HullMachine.java index d426c536d65..36fe2bea3dd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/HullMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/HullMachine.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IMonitorComponent; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -36,8 +37,8 @@ public class HullMachine extends TieredPartMachine implements IMonitorComponent @SaveField protected NotifiableEnergyContainer energyContainer; - public HullMachine(IMachineBlockEntity holder, int tier) { - super(holder, tier); + public HullMachine(BlockEntityCreationInfo info, int tier) { + super(info, tier); if (GTCEu.Mods.isAE2Loaded()) { this.gridNodeHost = new GridNodeHostTrait(this); } else { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java index 79b873380ea..4ec002b0221 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.electric; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IWorkable; import com.gregtechceu.gtceu.api.capability.recipe.IO; @@ -125,8 +126,8 @@ public class ItemCollectorMachine extends TieredEnergyMachine @RerenderOnChanged private boolean active = false; - public ItemCollectorMachine(IMachineBlockEntity holder, int tier) { - super(holder, tier); + public ItemCollectorMachine(BlockEntityCreationInfo info, int tier) { + super(info, tier); this.inventorySize = INVENTORY_SIZES[Mth.clamp(getTier(), 0, INVENTORY_SIZES.length - 1)]; this.energyPerTick = (long) BASE_EU_CONSUMPTION * (1L << (tier - 1)); this.output = createOutputItemHandler(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java index 941dbb2e038..4c1b63a6ae8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.electric; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.IMiner; @@ -93,8 +94,8 @@ public class MinerMachine extends WorkableTieredMachine @Nullable protected ISubscription exportItemSubs, energySubs; - public MinerMachine(IMachineBlockEntity holder, int tier, int speed, int maximumRadius, int fortune) { - super(holder, tier, GTMachineUtils.defaultTankSizeFunction, new WorkableTieredMachineTraits() { + public MinerMachine(BlockEntityCreationInfo info, int tier, int speed, int maximumRadius, int fortune) { + super(info, tier, GTMachineUtils.defaultTankSizeFunction, new WorkableTieredMachineTraits() { @Override public NotifiableItemStackHandler importItemHandler(WorkableTieredMachine machine) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java index cc79813a36f..7b22a5b979e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.electric; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; @@ -75,8 +76,8 @@ public class PumpMachine extends TieredEnergyMachine implements IAutoOutputFluid @SaveField protected final NotifiableFluidTank cache; - public PumpMachine(IMachineBlockEntity holder, int tier) { - super(holder, tier); + public PumpMachine(BlockEntityCreationInfo info, int tier) { + super(info, tier); this.cache = new NotifiableFluidTank(this, 1, 16 * FluidType.BUCKET_VOLUME * Math.max(1, getTier()), IO.NONE, IO.OUT); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/RockCrusherMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/RockCrusherMachine.java index 9a51ea24ae2..9cd21eef9c8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/RockCrusherMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/RockCrusherMachine.java @@ -1,13 +1,14 @@ package com.gregtechceu.gtceu.common.machine.electric; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.SimpleTieredMachine; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; public class RockCrusherMachine extends SimpleTieredMachine { - public RockCrusherMachine(IMachineBlockEntity holder, int tier) { - super(holder, tier, GTMachineUtils.defaultTankSizeFunction); + public RockCrusherMachine(BlockEntityCreationInfo info, int tier) { + super(info, tier, GTMachineUtils.defaultTankSizeFunction); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java index dfb87193c5e..3d90acaeb67 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.electric; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; @@ -41,8 +42,8 @@ public class TransformerMachine extends TieredEnergyMachine implements IControll @Getter private final int baseAmp; - public TransformerMachine(IMachineBlockEntity holder, int tier, int amp) { - super(holder, tier, (TieredEnergyMachine machine) -> { + public TransformerMachine(BlockEntityCreationInfo info, int tier, int amp) { + super(info, tier, (TieredEnergyMachine machine) -> { NotifiableEnergyContainer energyContainer; long tierVoltage = GTValues.V[machine.getTier()]; energyContainer = new NotifiableEnergyContainer(machine, tierVoltage * 8L, tierVoltage * 4, amp, diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java index 4ace2e0c865..21a99974743 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; @@ -177,7 +178,7 @@ private void tickBlockEntity(@NotNull T blockEntity) { } private boolean canAccelerate(BlockEntity blockEntity) { - if (blockEntity instanceof PipeBlockEntity || blockEntity instanceof IMachineBlockEntity) return false; + if (blockEntity instanceof PipeBlockEntity || blockEntity instanceof MetaMachine) return false; generateWorldAcceleratorBlacklist(); final Class blockEntityClass = blockEntity.getClass(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java index 884520870f7..5f51703444a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.IEnergyContainer; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; @@ -50,8 +51,8 @@ public class ActiveTransformerMachine extends WorkableElectricMultiblockMachine private IEnergyContainer powerInput; protected ConditionalSubscriptionHandler converterSubscription; - public ActiveTransformerMachine(IMachineBlockEntity holder) { - super(holder); + public ActiveTransformerMachine(BlockEntityCreationInfo info) { + super(info); this.powerOutput = new EnergyContainerList(new ArrayList<>()); this.powerInput = new EnergyContainerList(new ArrayList<>()); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java index 76e9664e599..3bc5d1c3e40 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; @@ -44,8 +45,8 @@ public class AssemblyLineMachine extends WorkableElectricMultiblockMachine { @SaveField protected boolean allowCircuitSlots; - public AssemblyLineMachine(IMachineBlockEntity holder, boolean allowCircuitSlots) { - super(holder, machine -> new AsslineRecipeLogic((AssemblyLineMachine) machine)); + public AssemblyLineMachine(BlockEntityCreationInfo info, boolean allowCircuitSlots) { + super(info, machine -> new AsslineRecipeLogic((AssemblyLineMachine) machine)); this.allowCircuitSlots = allowCircuitSlots; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java index 35f65f686f3..89c0099267e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IEnergyContainer; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; @@ -39,8 +40,8 @@ public class BedrockOreMinerMachine extends WorkableElectricMultiblockMachine im @Getter private final int tier; - public BedrockOreMinerMachine(IMachineBlockEntity holder, int tier) { - super(holder, (m) -> new BedrockOreMinerLogic((BedrockOreMinerMachine) m)); + public BedrockOreMinerMachine(BlockEntityCreationInfo info, int tier) { + super(info, (m) -> new BedrockOreMinerLogic((BedrockOreMinerMachine) m)); this.tier = tier; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java index a3902546d61..333eee30c97 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.ICentralMonitor; import com.gregtechceu.gtceu.api.capability.IMonitorComponent; @@ -80,8 +81,8 @@ public class CentralMonitorMachine extends WorkableElectricMultiblockMachine private static TraceabilityPredicate MULTI_PREDICATE = null; - public CentralMonitorMachine(IMachineBlockEntity holder) { - super(holder, CentralMonitorLogic::new); + public CentralMonitorMachine(BlockEntityCreationInfo info) { + super(info, CentralMonitorLogic::new); } public static TraceabilityPredicate getMultiPredicate() { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java index 0762f8393a8..0345c433e3e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.IFilterType; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.ICleanroomReceiver; import com.gregtechceu.gtceu.api.capability.IEnergyContainer; @@ -99,8 +100,8 @@ public class CleanroomMachine extends WorkableElectricMultiblockMachine @Nullable private Collection cleanroomReceivers; - public CleanroomMachine(IMachineBlockEntity metaTileEntityId) { - super(metaTileEntityId, (m) -> new CleanroomLogic((CleanroomMachine) m)); + public CleanroomMachine(BlockEntityCreationInfo info) { + super(info, (m) -> new CleanroomLogic((CleanroomMachine) m)); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java index 3e0bfd7573e..af9fefca05d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.*; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; @@ -47,8 +48,8 @@ public class DistillationTowerMachine extends WorkableElectricMultiblockMachine private IFluidHandler firstValid = null; private final int yOffset; - public DistillationTowerMachine(IMachineBlockEntity holder) { - this(holder, 1); + public DistillationTowerMachine(BlockEntityCreationInfo info) { + this(info, 1); } /** @@ -57,8 +58,8 @@ public DistillationTowerMachine(IMachineBlockEntity holder) { * @param holder BlockEntity holder * @param yOffset The Y difference between the controller and the first fluid output */ - public DistillationTowerMachine(IMachineBlockEntity holder, int yOffset) { - super(holder, DistillationTowerLogic::new); + public DistillationTowerMachine(BlockEntityCreationInfo info, int yOffset) { + super(info, DistillationTowerLogic::new); this.yOffset = yOffset; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java index fc3462893c1..d2e605c16b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IEnergyContainer; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; @@ -40,8 +41,8 @@ public class FluidDrillMachine extends WorkableElectricMultiblockMachine impleme @Getter private final int tier; - public FluidDrillMachine(IMachineBlockEntity holder, int tier) { - super(holder, (m) -> new FluidDrillLogic((FluidDrillMachine) m)); + public FluidDrillMachine(BlockEntityCreationInfo info, int tier) { + super(info, (m) -> new FluidDrillLogic((FluidDrillMachine) m)); this.tier = tier; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java index 5e8b5ddddbd..33187439898 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.IFusionCasingType; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IEnergyContainer; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; @@ -81,8 +82,8 @@ public class FusionReactorMachine extends WorkableElectricMultiblockMachine impl @Nullable protected TickableSubscription preHeatSubs; - public FusionReactorMachine(IMachineBlockEntity holder, int tier) { - super(holder); + public FusionReactorMachine(BlockEntityCreationInfo info, int tier) { + super(info); this.tier = tier; this.energyContainer = createEnergyContainer(); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java index 5ac7526f892..a18478502b8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.IEnergyContainer; import com.gregtechceu.gtceu.api.capability.IMiner; @@ -67,9 +68,9 @@ public class LargeMinerMachine extends WorkableElectricMultiblockMachine protected FluidHandlerList inputFluidInventory; private final int drillingFluidConsumePerTick; - public LargeMinerMachine(IMachineBlockEntity holder, int tier, int speed, int maximumChunkDiameter, int fortune, + public LargeMinerMachine(BlockEntityCreationInfo info, int tier, int speed, int maximumChunkDiameter, int fortune, int drillingFluidConsumePerTick) { - super(holder, (m) -> new LargeMinerLogic(m, fortune, speed, maximumChunkDiameter * CHUNK_LENGTH / 2)); + super(info, (m) -> new LargeMinerLogic(m, fortune, speed, maximumChunkDiameter * CHUNK_LENGTH / 2)); this.tier = tier; this.drillingFluidConsumePerTick = drillingFluidConsumePerTick; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java index 6816e35eac2..7c51f4cbfa5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.fluids.PropertyFluidFilter; import com.gregtechceu.gtceu.api.gui.GuiTextures; @@ -41,8 +42,8 @@ public class MultiblockTankMachine extends MultiblockControllerMachine implement @NotNull private final NotifiableFluidTank tank; - public MultiblockTankMachine(IMachineBlockEntity holder, int capacity, @Nullable PropertyFluidFilter filter) { - super(holder); + public MultiblockTankMachine(BlockEntityCreationInfo info, int capacity, @Nullable PropertyFluidFilter filter) { + super(info); tank = new NotifiableFluidTank(this, 1, capacity, IO.BOTH); if (filter != null) tank.setFilter(filter); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java index 4383726a5c9..0f0b695eda1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IEnergyContainer; import com.gregtechceu.gtceu.api.capability.IEnergyInfoProvider; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; @@ -86,8 +87,8 @@ public class PowerSubstationMachine extends WorkableMultiblockMachine protected ConditionalSubscriptionHandler tickSubscription; - public PowerSubstationMachine(IMachineBlockEntity holder) { - super(holder); + public PowerSubstationMachine(BlockEntityCreationInfo info) { + super(info); this.tickSubscription = new ConditionalSubscriptionHandler(this, this::transferEnergyTick, this::isFormed); this.energyBank = new PowerStationEnergyBank(this, List.of()); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java index 2523f71d90d..f7251d2894f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IFluidRenderMulti; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; @@ -28,8 +29,8 @@ public class LargeChemicalBathMachine extends WorkableElectricMultiblockMachine @RerenderOnChanged private @NotNull Set fluidBlockOffsets = new HashSet<>(); - public LargeChemicalBathMachine(IMachineBlockEntity holder) { - super(holder); + public LargeChemicalBathMachine(BlockEntityCreationInfo info) { + super(info); } public void setFluidBlockOffsets(Set offsets) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java index 2fe13c5a49c..bad55809d7c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -28,8 +29,8 @@ public class LargeMacerationTowerMachine extends WorkableElectricMultiblockMachi private TickableSubscription hurtSub; - public LargeMacerationTowerMachine(IMachineBlockEntity holder) { - super(holder); + public LargeMacerationTowerMachine(BlockEntityCreationInfo info) { + super(info); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java index 80c91dd05e0..7ce5cf30683 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IFluidRenderMulti; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; @@ -28,8 +29,8 @@ public class LargeMixerMachine extends WorkableElectricMultiblockMachine impleme @RerenderOnChanged private @NotNull Set fluidBlockOffsets = new HashSet<>(); - public LargeMixerMachine(IMachineBlockEntity holder) { - super(holder); + public LargeMixerMachine(BlockEntityCreationInfo info) { + super(info); } public void setFluidBlockOffsets(Set offsets) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java index f8f1c104b55..e0feb7aff0c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric.research; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.IEnergyContainer; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; @@ -51,8 +52,8 @@ public class DataBankMachine extends WorkableElectricMultiblockMachine @Nullable protected TickableSubscription tickSubs; - public DataBankMachine(IMachineBlockEntity holder) { - super(holder); + public DataBankMachine(BlockEntityCreationInfo info) { + super(info); this.energyContainer = new EnergyContainerList(new ArrayList<>()); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java index fb5e46ec983..e38dfba4d02 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric.research; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.*; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; @@ -89,8 +90,8 @@ public class HPCAMachine extends WorkableElectricMultiblockMachine @Nullable protected TickableSubscription tickSubs; - public HPCAMachine(IMachineBlockEntity holder) { - super(holder); + public HPCAMachine(BlockEntityCreationInfo info) { + super(info); this.energyContainer = new EnergyContainerList(new ArrayList<>()); this.progressSupplier = new TimedProgressSupplier(200, 47, false); this.hpcaHandler = new HPCAGridHandler(this); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/NetworkSwitchMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/NetworkSwitchMachine.java index a06ff3d977d..dda50168860 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/NetworkSwitchMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/NetworkSwitchMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric.research; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IOpticalComputationHatch; import com.gregtechceu.gtceu.api.capability.IOpticalComputationProvider; import com.gregtechceu.gtceu.api.capability.recipe.CWURecipeCapability; @@ -35,8 +36,8 @@ public class NetworkSwitchMachine extends DataBankMachine implements IOpticalCom private final MultipleComputationHandler computationHandler = new MultipleComputationHandler(this); - public NetworkSwitchMachine(IMachineBlockEntity holder) { - super(holder); + public NetworkSwitchMachine(BlockEntityCreationInfo info) { + super(info); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java index ec1b59ee052..4a0b73eba52 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric.research; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IObjectHolder; import com.gregtechceu.gtceu.api.capability.IOpticalComputationProvider; import com.gregtechceu.gtceu.api.capability.IOpticalComputationReceiver; @@ -39,8 +40,8 @@ public class ResearchStationMachine extends WorkableElectricMultiblockMachine @Getter private IObjectHolder objectHolder; - public ResearchStationMachine(IMachineBlockEntity holder) { - super(holder, (m) -> new ResearchStationRecipeLogic((ResearchStationMachine) m)); + public ResearchStationMachine(BlockEntityCreationInfo info) { + super(info, (m) -> new ResearchStationRecipeLogic((ResearchStationMachine) m)); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java index 0fbf8088ca0..597c4853e8f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.generator; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKeys; import com.gregtechceu.gtceu.api.gui.GuiTextures; @@ -55,8 +56,8 @@ public class LargeCombustionEngineMachine extends WorkableElectricMultiblockMach private boolean isOxygenBoosted = false; private int runningTimer = 0; - public LargeCombustionEngineMachine(IMachineBlockEntity holder, int tier) { - super(holder); + public LargeCombustionEngineMachine(BlockEntityCreationInfo info, int tier) { + super(info); this.tier = tier; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java index f97174fed0c..eb323fa9f52 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.generator; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.ITurbineMachine; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -40,8 +41,8 @@ public class LargeTurbineMachine extends WorkableElectricMultiblockMachine imple @Getter private final int tier; - public LargeTurbineMachine(IMachineBlockEntity holder, int tier) { - super(holder); + public LargeTurbineMachine(BlockEntityCreationInfo info, int tier) { + super(info); this.tier = tier; this.BASE_EU_OUTPUT = GTValues.V[tier] * 2; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/AutoMaintenanceHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/AutoMaintenanceHatchPartMachine.java index f505bc85c35..90caa486b9a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/AutoMaintenanceHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/AutoMaintenanceHatchPartMachine.java @@ -1,14 +1,15 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; public class AutoMaintenanceHatchPartMachine extends TieredPartMachine implements IMaintenanceMachine { - public AutoMaintenanceHatchPartMachine(IMachineBlockEntity holder) { - super(holder, GTValues.HV); + public AutoMaintenanceHatchPartMachine(BlockEntityCreationInfo info) { + super(info, GTValues.HV); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CleaningMaintenanceHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CleaningMaintenanceHatchPartMachine.java index 56a22189527..9bacd931c75 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CleaningMaintenanceHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CleaningMaintenanceHatchPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.ICleanroomReceiver; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.ICleanroomProvider; @@ -28,8 +29,8 @@ public class CleaningMaintenanceHatchPartMachine extends AutoMaintenanceHatchPar @Getter private final CleanroomType cleanroomType; - public CleaningMaintenanceHatchPartMachine(IMachineBlockEntity holder, CleanroomType cleanroomType) { - super(holder); + public CleaningMaintenanceHatchPartMachine(BlockEntityCreationInfo info, CleanroomType cleanroomType) { + super(info); this.cleanroomType = cleanroomType; DUMMY_CLEANROOM = DummyCleanroom.createForTypes(Collections.singletonList(cleanroomType)); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java index 7df93ba07f9..72756107909 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; @@ -34,8 +35,8 @@ public class CokeOvenHatch extends MultiblockPartMachine { @Nullable protected ISubscription outputInventorySubs, outputTankSubs; - public CokeOvenHatch(IMachineBlockEntity holder) { - super(holder); + public CokeOvenHatch(BlockEntityCreationInfo info) { + super(info); this.inputInventory = new ItemHandlerProxyTrait(this, IO.IN); this.outputInventory = new ItemHandlerProxyTrait(this, IO.OUT); this.tank = new FluidTankProxyTrait(this, IO.BOTH); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java index 8db127511a7..20eb576ce26 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IDataAccessHatch; import com.gregtechceu.gtceu.api.capability.IMonitorComponent; import com.gregtechceu.gtceu.api.capability.recipe.IO; @@ -56,8 +57,8 @@ public class DataAccessHatchMachine extends TieredPartMachine @SaveField public final NotifiableItemStackHandler importItems; - public DataAccessHatchMachine(IMachineBlockEntity holder, int tier, boolean isCreative) { - super(holder, tier); + public DataAccessHatchMachine(BlockEntityCreationInfo info, int tier, boolean isCreative) { + super(info, tier); this.isCreative = isCreative; this.recipes = isCreative ? Collections.emptySet() : new ObjectOpenHashSet<>(); this.importItems = createImportItemHandler(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java index c0e3e116efd..37694c06fec 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; @@ -75,8 +76,8 @@ public static AmpMode getByValue(int amps) { @SaveField(nbtKey = "amp_mode") private int amps; - public DiodePartMachine(IMachineBlockEntity holder, int tier) { - super(holder, tier, IO.BOTH); + public DiodePartMachine(BlockEntityCreationInfo info, int tier) { + super(info, tier, IO.BOTH); long tierVoltage = GTValues.V[getTier()]; this.amps = 1; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java index 0e5f44dc123..81c22317e57 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; @@ -40,8 +41,8 @@ public class DualHatchPartMachine extends ItemBusPartMachine { private boolean hasFluidHandler; private boolean hasItemHandler; - public DualHatchPartMachine(IMachineBlockEntity holder, int tier, IO io) { - super(holder, tier, io); + public DualHatchPartMachine(BlockEntityCreationInfo info, int tier, IO io) { + super(info, tier, io); this.tank = new NotifiableFluidTank(this, (int) Math.sqrt(getInventorySize()), getTankCapacity(INITIAL_TANK_CAPACITY, getTier()), io); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java index edfad6d1683..f093be1f87d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; @@ -29,8 +30,8 @@ public class EnergyHatchPartMachine extends TieredIOPartMachine implements IExpl @Getter protected int amperage; - public EnergyHatchPartMachine(IMachineBlockEntity holder, int tier, IO io, int amperage) { - super(holder, tier, io); + public EnergyHatchPartMachine(BlockEntityCreationInfo info, int tier, IO io, int amperage) { + super(info, tier, io); this.amperage = amperage; this.energyContainer = createEnergyContainer(); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index f7fe1b5dabc..40fd762c6d2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; @@ -74,8 +75,8 @@ public class FluidHatchPartMachine extends TieredIOPartMachine implements IMachi @SaveField protected final NotifiableItemStackHandler circuitInventory; - public FluidHatchPartMachine(IMachineBlockEntity holder, int tier, IO io, int initialCapacity, int slots) { - super(holder, tier, io); + public FluidHatchPartMachine(BlockEntityCreationInfo info, int tier, IO io, int initialCapacity, int slots) { + super(info, tier, io); this.slots = slots; this.tank = createTank(initialCapacity, slots); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index d3c3422bde7..b2e9e86cd36 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; @@ -75,8 +76,8 @@ public class ItemBusPartMachine extends TieredIOPartMachine @SyncToClient private boolean isDistinct = false; - public ItemBusPartMachine(IMachineBlockEntity holder, int tier, IO io) { - super(holder, tier, io); + public ItemBusPartMachine(BlockEntityCreationInfo info, int tier, IO io) { + super(info, tier, io); this.inventory = createInventory(); this.circuitSlotEnabled = true; this.circuitInventory = createCircuitItemHandler(io).shouldSearchContent(false); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/LaserHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/LaserHatchPartMachine.java index d60a9e795aa..d5c204cca1c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/LaserHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/LaserHatchPartMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; @@ -28,8 +29,8 @@ public class LaserHatchPartMachine extends TieredIOPartMachine implements IDataI @SaveField private NotifiableLaserContainer buffer; - public LaserHatchPartMachine(IMachineBlockEntity holder, IO io, int tier, int amperage) { - super(holder, tier, io); + public LaserHatchPartMachine(BlockEntityCreationInfo info, IO io, int tier, int amperage) { + super(info, tier, io); if (io == IO.OUT) { this.buffer = NotifiableLaserContainer.emitterContainer(this, GTValues.V[tier] * 64L * amperage, GTValues.V[tier], amperage); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java index a1d5e54e1c0..c89558e5728 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; @@ -84,8 +85,8 @@ public class MaintenanceHatchPartMachine extends TieredPartMachine @Nullable protected TickableSubscription maintenanceSubs; - public MaintenanceHatchPartMachine(IMachineBlockEntity holder, boolean isConfigurable) { - super(holder, isConfigurable ? GTValues.HV : GTValues.LV); + public MaintenanceHatchPartMachine(BlockEntityCreationInfo info, boolean isConfigurable) { + super(info, isConfigurable ? GTValues.HV : GTValues.LV); this.isConfigurable = isConfigurable; this.itemStackHandler = createInventory(); this.itemStackHandler.setFilter(itemStack -> itemStack.is(GTItems.DUCT_TAPE.get())); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java index 07c03afda2d..fab6cd41916 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; @@ -45,8 +46,8 @@ public class MufflerPartMachine extends TieredPartMachine implements IMufflerMac private TickableSubscription snowSubscription; - public MufflerPartMachine(IMachineBlockEntity holder, int tier) { - super(holder, tier); + public MufflerPartMachine(BlockEntityCreationInfo info, int tier) { + super(info, tier); this.recoveryChance = Math.max(1, tier * 10); this.inventory = new CustomItemStackHandler((int) Math.pow(tier + 1, 2)); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java index 232e209e990..080cc4c1095 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IObjectHolder; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; @@ -42,8 +43,8 @@ public class ObjectHolderMachine extends MultiblockPartMachine implements IObjec @SyncToClient private boolean isLocked; - public ObjectHolderMachine(IMachineBlockEntity holder) { - super(holder); + public ObjectHolderMachine(BlockEntityCreationInfo info) { + super(info); heldItems = new ObjectHolderHandler(this); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalComputationHatchMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalComputationHatchMachine.java index 6b648c5c897..e4da667dcc6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalComputationHatchMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalComputationHatchMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; @@ -23,8 +24,8 @@ public class OpticalComputationHatchMachine extends MultiblockPartMachine { protected NotifiableComputationContainer computationContainer; - public OpticalComputationHatchMachine(IMachineBlockEntity holder, boolean transmitter) { - super(holder); + public OpticalComputationHatchMachine(BlockEntityCreationInfo info, boolean transmitter) { + super(info); this.transmitter = transmitter; this.computationContainer = new NotifiableComputationContainer(this, IO.IN, transmitter); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalDataHatchMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalDataHatchMachine.java index 14b8f3cff1d..2e8c64a2873 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalDataHatchMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalDataHatchMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IDataAccessHatch; import com.gregtechceu.gtceu.api.capability.IOpticalDataAccessHatch; import com.gregtechceu.gtceu.api.capability.forge.GTCapability; @@ -34,8 +35,8 @@ public class OpticalDataHatchMachine extends MultiblockPartMachine implements IO @Getter private final boolean isTransmitter; - public OpticalDataHatchMachine(IMachineBlockEntity holder, boolean isTransmitter) { - super(holder); + public OpticalDataHatchMachine(BlockEntityCreationInfo info, boolean isTransmitter) { + super(info); this.isTransmitter = isTransmitter; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ParallelHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ParallelHatchPartMachine.java index 99322e67f07..ccf5f3e352e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ParallelHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ParallelHatchPartMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IParallelHatch; import com.gregtechceu.gtceu.api.gui.widget.IntInputWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -27,8 +28,8 @@ public class ParallelHatchPartMachine extends TieredPartMachine implements IFanc @Getter private int currentParallel = 1; - public ParallelHatchPartMachine(IMachineBlockEntity holder, int tier) { - super(holder, tier); + public ParallelHatchPartMachine(BlockEntityCreationInfo info, int tier) { + super(info, tier); this.maxParallel = (int) Math.pow(4, tier - GTValues.EV); this.currentParallel = maxParallel; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java index 4fcfb073046..ee10507930a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; @@ -23,8 +24,8 @@ @MethodsReturnNonnullByDefault public class PumpHatchPartMachine extends FluidHatchPartMachine { - public PumpHatchPartMachine(IMachineBlockEntity holder) { - super(holder, 0, IO.OUT, FluidType.BUCKET_VOLUME, 1); + public PumpHatchPartMachine(BlockEntityCreationInfo info) { + super(info, 0, IO.OUT, FluidType.BUCKET_VOLUME, 1); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ReservoirHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ReservoirHatchPartMachine.java index bde394763e7..2c0aa2a9013 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ReservoirHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ReservoirHatchPartMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; @@ -23,8 +24,8 @@ public class ReservoirHatchPartMachine extends FluidHatchPartMachine { public static final int FLUID_AMOUNT = 2_000_000_000; - public ReservoirHatchPartMachine(IMachineBlockEntity holder) { - super(holder, GTValues.EV, IO.IN, FLUID_AMOUNT, 1); + public ReservoirHatchPartMachine(BlockEntityCreationInfo info) { + super(info, GTValues.EV, IO.IN, FLUID_AMOUNT, 1); } ////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java index 7a67abd5200..e13ca9fc765 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; @@ -63,8 +64,8 @@ public class RotorHolderPartMachine extends TieredPartMachine @Nullable protected ISubscription rotorInvSubs; - public RotorHolderPartMachine(IMachineBlockEntity holder, int tier) { - super(holder, tier); + public RotorHolderPartMachine(BlockEntityCreationInfo info, int tier) { + super(info, tier); this.inventory = new NotifiableItemStackHandler(this, 1, IO.NONE, IO.BOTH); this.maxRotorHolderSpeed = 2000 + 1000 * tier; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java index ab63a884b64..e0ff4169c1c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; @@ -26,8 +27,8 @@ public class SteamHatchPartMachine extends FluidHatchPartMachine { public static final int INITIAL_TANK_CAPACITY = 64 * FluidType.BUCKET_VOLUME; public static final boolean IS_STEEL = ConfigHolder.INSTANCE.machines.steelSteamMultiblocks; - public SteamHatchPartMachine(IMachineBlockEntity holder) { - super(holder, 0, IO.IN, SteamHatchPartMachine.INITIAL_TANK_CAPACITY, 1); + public SteamHatchPartMachine(BlockEntityCreationInfo info) { + super(info, 0, IO.IN, SteamHatchPartMachine.INITIAL_TANK_CAPACITY, 1); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java index f52c72821c9..11be05f8307 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; @@ -23,8 +24,8 @@ public class SteamItemBusPartMachine extends ItemBusPartMachine { private final String autoTooltipKey; - public SteamItemBusPartMachine(IMachineBlockEntity holder, IO io) { - super(holder, 1, io); + public SteamItemBusPartMachine(BlockEntityCreationInfo info, IO io) { + super(info, 1, io); autoTooltipKey = io == IO.IN ? "gtceu.gui.item_auto_input.tooltip" : "gtceu.gui.item_auto_output.tooltip"; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java index 37d86e5d6d9..f09270d2366 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.ConditionalSubscriptionHandler; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -28,8 +29,8 @@ public class TankValvePartMachine extends MultiblockPartMachine { private final ConditionalSubscriptionHandler autoIOSubscription; private ISubscription tankChangeListener; - public TankValvePartMachine(IMachineBlockEntity holder, boolean isMetal) { - super(holder); + public TankValvePartMachine(BlockEntityCreationInfo info, boolean isMetal) { + super(info); tankProxy = new FluidTankProxyTrait(this, IO.BOTH); autoIOSubscription = new ConditionalSubscriptionHandler(this, this::autoIO, this::shouldAutoIO); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCABridgePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCABridgePartMachine.java index 2578adca2fe..9e0845faee7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCABridgePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCABridgePartMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part.hpca; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -14,8 +15,8 @@ @ParametersAreNonnullByDefault public class HPCABridgePartMachine extends HPCAComponentPartMachine { - public HPCABridgePartMachine(IMachineBlockEntity holder) { - super(holder); + public HPCABridgePartMachine(BlockEntityCreationInfo info) { + super(info); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java index 5ae9e511b05..19af165a318 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part.hpca; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IHPCAComponentHatch; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IMachineModifyDrops; @@ -31,8 +32,8 @@ public abstract class HPCAComponentPartMachine extends MultiblockPartMachine @RerenderOnChanged private boolean damaged; - public HPCAComponentPartMachine(IMachineBlockEntity holder) { - super(holder); + public HPCAComponentPartMachine(BlockEntityCreationInfo info) { + super(info); } public abstract boolean isAdvanced(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComputationPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComputationPartMachine.java index 69bb815771c..d92ca1bcc14 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComputationPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComputationPartMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part.hpca; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IHPCAComputationProvider; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -20,8 +21,8 @@ public class HPCAComputationPartMachine extends HPCAComponentPartMachine impleme @Getter private final boolean advanced; - public HPCAComputationPartMachine(IMachineBlockEntity holder, boolean advanced) { - super(holder); + public HPCAComputationPartMachine(BlockEntityCreationInfo info, boolean advanced) { + super(info); this.advanced = advanced; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCACoolerPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCACoolerPartMachine.java index 007095b2ebf..b34380ac669 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCACoolerPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCACoolerPartMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part.hpca; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IHPCACoolantProvider; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -20,8 +21,8 @@ public class HPCACoolerPartMachine extends HPCAComponentPartMachine implements I @Getter private final boolean advanced; - public HPCACoolerPartMachine(IMachineBlockEntity holder, boolean advanced) { - super(holder); + public HPCACoolerPartMachine(BlockEntityCreationInfo info, boolean advanced) { + super(info); this.advanced = advanced; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAEmptyPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAEmptyPartMachine.java index 132929c7b90..e8a434c8371 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAEmptyPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAEmptyPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part.hpca; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -13,8 +14,8 @@ @ParametersAreNonnullByDefault public class HPCAEmptyPartMachine extends HPCAComponentPartMachine { - public HPCAEmptyPartMachine(IMachineBlockEntity holder) { - super(holder); + public HPCAEmptyPartMachine(BlockEntityCreationInfo info) { + super(info); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/AdvancedMonitorPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/AdvancedMonitorPartMachine.java index 2954f696f20..10302cfb2ae 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/AdvancedMonitorPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/AdvancedMonitorPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part.monitor; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; @@ -37,8 +38,8 @@ public class AdvancedMonitorPartMachine extends MonitorPartMachine implements II @Nullable private TickableSubscription clickResetSubscription; - public AdvancedMonitorPartMachine(IMachineBlockEntity holder) { - super(holder); + public AdvancedMonitorPartMachine(BlockEntityCreationInfo info) { + super(info); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorComponentPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorComponentPartMachine.java index 220bd378673..b0f9f2cda90 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorComponentPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorComponentPartMachine.java @@ -1,12 +1,13 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part.monitor; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IMonitorComponent; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; public abstract class MonitorComponentPartMachine extends MultiblockPartMachine implements IMonitorComponent { - public MonitorComponentPartMachine(IMachineBlockEntity holder) { - super(holder); + public MonitorComponentPartMachine(BlockEntityCreationInfo info) { + super(info); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorPartMachine.java index 4f999166910..43f43e87020 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorPartMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part.monitor; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; @@ -12,8 +13,8 @@ public class MonitorPartMachine extends MonitorComponentPartMachine { - public MonitorPartMachine(IMachineBlockEntity holder) { - super(holder); + public MonitorPartMachine(BlockEntityCreationInfo info) { + super(info); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java index fd6de76cde9..cd3d7306b46 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.primitive; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IWorkable; import com.gregtechceu.gtceu.api.item.ComponentItem; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -68,8 +69,8 @@ public class CharcoalPileIgniterMachine extends WorkableMultiblockMachine implem private boolean hasAir = false; - public CharcoalPileIgniterMachine(IMachineBlockEntity holder) { - super(holder, (m) -> new CharcoalRecipeLogic((CharcoalPileIgniterMachine) m)); + public CharcoalPileIgniterMachine(BlockEntityCreationInfo info) { + super(info, (m) -> new CharcoalRecipeLogic((CharcoalPileIgniterMachine) m)); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java index 0ab67bcea15..233dc39f4c3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.primitive; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; @@ -36,8 +37,8 @@ @MethodsReturnNonnullByDefault public class CokeOvenMachine extends PrimitiveWorkableMachine implements IUIMachine { - public CokeOvenMachine(IMachineBlockEntity holder) { - super(holder); + public CokeOvenMachine(BlockEntityCreationInfo info) { + super(info); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java index 13708951d30..cd1c3cfe2a3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.primitive; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.gui.GuiTextures; @@ -56,8 +57,8 @@ public class PrimitiveBlastFurnaceMachine extends PrimitiveWorkableMachine imple @RerenderOnChanged private @NotNull Set fluidBlockOffsets = new HashSet<>(); - public PrimitiveBlastFurnaceMachine(IMachineBlockEntity holder) { - super(holder); + public PrimitiveBlastFurnaceMachine(BlockEntityCreationInfo info) { + super(info); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveFancyUIWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveFancyUIWorkableMachine.java index c939267c9d9..76095bb8a8f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveFancyUIWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveFancyUIWorkableMachine.java @@ -1,11 +1,12 @@ package com.gregtechceu.gtceu.common.machine.multiblock.primitive; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; public class PrimitiveFancyUIWorkableMachine extends PrimitiveWorkableMachine implements IFancyUIMachine { - public PrimitiveFancyUIWorkableMachine(IMachineBlockEntity holder) { - super(holder); + public PrimitiveFancyUIWorkableMachine(BlockEntityCreationInfo info) { + super(info); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitivePumpMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitivePumpMachine.java index 19bff9fb510..872b51df5a6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitivePumpMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitivePumpMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.primitive; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -28,8 +29,8 @@ public class PrimitivePumpMachine extends MultiblockControllerMachine { private NotifiableFluidTank fluidTank; private TickableSubscription produceWaterSubscription; - public PrimitivePumpMachine(IMachineBlockEntity holder) { - super(holder); + public PrimitivePumpMachine(BlockEntityCreationInfo info) { + super(info); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java index 989c486334c..f696917d932 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.primitive; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; @@ -30,8 +31,8 @@ public class PrimitiveWorkableMachine extends WorkableMultiblockMachine @SaveField public final NotifiableFluidTank exportFluids; - public PrimitiveWorkableMachine(IMachineBlockEntity holder) { - super(holder); + public PrimitiveWorkableMachine(BlockEntityCreationInfo info) { + super(info); this.importItems = createImportItemHandler(); this.exportItems = createExportItemHandler(); this.importFluids = createImportFluidHandler(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java index e856bf34189..52339788437 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.steam; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.*; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -58,8 +59,8 @@ public class LargeBoilerMachine extends WorkableMultiblockMachine implements IEx protected TickableSubscription temperatureSubs; private int steamGenerated; - public LargeBoilerMachine(IMachineBlockEntity holder, int maxTemperature, int heatSpeed) { - super(holder, LargeBoilerRecipeLogic::new); + public LargeBoilerMachine(BlockEntityCreationInfo info, int maxTemperature, int heatSpeed) { + super(info, LargeBoilerRecipeLogic::new); this.maxTemperature = maxTemperature; this.heatSpeed = heatSpeed; this.throttle = 100; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java index 15dd65eb804..af7b68fa564 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.steam; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; @@ -57,8 +58,8 @@ public class SteamParallelMultiblockMachine extends WorkableMultiblockMachine im // if in millibuckets, this is 2.0, Meaning 2mb of steam -> 1 EU public static final double CONVERSION_RATE = 2.0; - public SteamParallelMultiblockMachine(IMachineBlockEntity holder, int maxParallels) { - super(holder); + public SteamParallelMultiblockMachine(BlockEntityCreationInfo info, int maxParallels) { + super(info); this.maxParallels = maxParallels; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java index be3e9eebef5..bf3c92b2c4c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.steam; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; @@ -45,8 +46,8 @@ public class SteamLiquidBoilerMachine extends SteamBoilerMachine { @SaveField public final NotifiableFluidTank fuelTank; - public SteamLiquidBoilerMachine(IMachineBlockEntity holder, boolean isHighPressure) { - super(holder, isHighPressure); + public SteamLiquidBoilerMachine(BlockEntityCreationInfo info, boolean isHighPressure) { + super(info, isHighPressure); this.fuelTank = createFuelTank().setFilter(fluid -> FUEL_CACHE.computeIfAbsent(fluid.getFluid(), f -> { if (isRemote()) return true; return recipeLogic.getRecipeManager().getAllRecipesFor(getRecipeType()).stream().anyMatch(recipe -> { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java index 1a9b1d00dad..e5912a916f6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.steam; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.IMiner; import com.gregtechceu.gtceu.api.capability.recipe.IO; @@ -65,9 +66,9 @@ public class SteamMinerMachine extends SteamWorkableMachine implements IMiner, I @Nullable protected ISubscription exportItemSubs; - public SteamMinerMachine(IMachineBlockEntity holder, boolean isHighPressure, int speed, int maximumRadius, + public SteamMinerMachine(BlockEntityCreationInfo info, boolean isHighPressure, int speed, int maximumRadius, int fortune, int energyPerTick) { - super(holder, isHighPressure, (m) -> new SteamMinerLogic(m, fortune, speed, maximumRadius)); + super(info, isHighPressure, (m) -> new SteamMinerLogic(m, fortune, speed, maximumRadius)); this.inventorySize = 4; this.energyPerTick = energyPerTick; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java index 726d9b352b1..e11b90c981e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.steam; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.steam.SteamBoilerMachine; @@ -25,8 +26,8 @@ @MethodsReturnNonnullByDefault public class SteamSolarBoiler extends SteamBoilerMachine { - public SteamSolarBoiler(IMachineBlockEntity holder, boolean isHighPressure) { - super(holder, isHighPressure); + public SteamSolarBoiler(BlockEntityCreationInfo info, boolean isHighPressure) { + super(info, isHighPressure); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java index 6b67a0fa41d..63dfcfb3206 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.steam; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; @@ -43,8 +44,8 @@ public class SteamSolidBoilerMachine extends SteamBoilerMachine implements IMach @SaveField public final NotifiableItemStackHandler fuelHandler, ashHandler; - public SteamSolidBoilerMachine(IMachineBlockEntity holder, boolean isHighPressure) { - super(holder, isHighPressure); + public SteamSolidBoilerMachine(BlockEntityCreationInfo info, boolean isHighPressure) { + super(info, isHighPressure); this.fuelHandler = createFuelHandler().setFilter(itemStack -> { if (FluidUtil.getFluidContained(itemStack).isPresent()) { return false; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java index 66322921497..559a35196f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.storage; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; @@ -89,8 +90,8 @@ public class BufferMachine extends TieredMachine implements IMachineLife, IAutoO @Nullable protected ISubscription invSubs, tankSubs; - public BufferMachine(IMachineBlockEntity holder, int tier) { - super(holder, tier); + public BufferMachine(BlockEntityCreationInfo info, int tier) { + super(info, tier); this.inventory = createInventory(); this.tank = createTank(); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java index 1c0d481ddb4..2e9b5fd07b2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java @@ -1,11 +1,11 @@ package com.gregtechceu.gtceu.common.machine.storage; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.*; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; @@ -56,8 +56,8 @@ public class CrateMachine extends MetaMachine implements IUIMachine, IMachineLif @SaveField public final NotifiableItemStackHandler inventory; - public CrateMachine(IMachineBlockEntity holder, Material material, int inventorySize) { - super(holder); + public CrateMachine(BlockEntityCreationInfo info, Material material, int inventorySize) { + super(info); this.material = material; this.inventorySize = inventorySize; this.inventory = new NotifiableItemStackHandler(this, inventorySize, IO.BOTH); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java index 39e02ec4137..ae5e99e44fe 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.storage; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.PhantomSlotWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -38,8 +39,8 @@ public class CreativeChestMachine extends QuantumChestMachine { @SaveField private int itemsPerCycle, ticksPerCycle = 1; - public CreativeChestMachine(IMachineBlockEntity holder) { - super(holder, GTValues.MAX, -1); + public CreativeChestMachine(BlockEntityCreationInfo info) { + super(info, GTValues.MAX, -1); } @Override @@ -49,7 +50,7 @@ protected ItemCache createCacheItemHandler() { protected void checkAutoOutput() { if (getOffsetTimer() % ticksPerCycle == 0) { - if (isAutoOutputItems() && getOutputFacingItems() != null) { + if (isAutoOutputItems()) { cache.exportToNearby(getOutputFacingItems()); } updateAutoOutputSubscription(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeComputationProviderMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeComputationProviderMachine.java index 184b7d4245f..28a6669cb3f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeComputationProviderMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeComputationProviderMachine.java @@ -1,8 +1,8 @@ package com.gregtechceu.gtceu.common.machine.storage; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IOpticalComputationProvider; import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; @@ -42,8 +42,8 @@ public class CreativeComputationProviderMachine extends MetaMachine @Nullable private TickableSubscription computationSubs; - public CreativeComputationProviderMachine(IMachineBlockEntity holder) { - super(holder); + public CreativeComputationProviderMachine(BlockEntityCreationInfo info) { + super(info); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java index 7911c089769..36bd8ce418b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.storage; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IEnergyContainer; import com.gregtechceu.gtceu.api.capability.ILaserContainer; @@ -49,8 +50,8 @@ public class CreativeEnergyContainerMachine extends TieredMachine implements ILa private long ampsReceived = 0; private boolean doExplosion = false; - public CreativeEnergyContainerMachine(IMachineBlockEntity holder) { - super(holder, GTValues.MAX); + public CreativeEnergyContainerMachine(BlockEntityCreationInfo info) { + super(info, GTValues.MAX); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java index b4efed33600..21125861c87 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.storage; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.PhantomFluidWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -43,8 +44,8 @@ public class CreativeTankMachine extends QuantumTankMachine { @SaveField private int ticksPerCycle = 1; - public CreativeTankMachine(IMachineBlockEntity holder) { - super(holder, GTValues.MAX, 1); + public CreativeTankMachine(BlockEntityCreationInfo info) { + super(info, GTValues.MAX, 1); } protected FluidCache createCacheFluidHandler() { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java index a16827c1007..7438c37b897 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java @@ -1,11 +1,11 @@ package com.gregtechceu.gtceu.common.machine.storage; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.item.tool.GTToolType; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid; @@ -72,8 +72,8 @@ public class DrumMachine extends MetaMachine implements IAutoOutputFluid, IDropS @Getter protected final Material material; - public DrumMachine(IMachineBlockEntity holder, Material material, int maxStoredFluids) { - super(holder); + public DrumMachine(BlockEntityCreationInfo info, Material material, int maxStoredFluids) { + super(info); this.material = material; this.maxStoredFluids = maxStoredFluids; this.cache = createCacheFluidHandler(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/LongDistanceEndpointMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/LongDistanceEndpointMachine.java index c482140cdd9..372a297a6e9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/LongDistanceEndpointMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/LongDistanceEndpointMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.storage; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; @@ -47,8 +48,8 @@ public abstract class LongDistanceEndpointMachine extends MetaMachine implements @Nullable protected TickableSubscription refreshNetSubs; - public LongDistanceEndpointMachine(IMachineBlockEntity holder, LongDistancePipeType pipeType) { - super(holder); + public LongDistanceEndpointMachine(BlockEntityCreationInfo info, LongDistancePipeType pipeType) { + super(info); this.pipeType = Objects.requireNonNull(pipeType); } @@ -187,7 +188,7 @@ public ILDEndpoint getLink() { if (network != null && network.isValid()) { this.link = network.getOtherEndpoint(this); } - } else if (this.link.isInValid()) { + } else if (this.link.isRemoved()) { this.link.invalidateLink(); this.link = null; LongDistanceNetwork network = LongDistanceNetwork.get(getLevel(), getPos()); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java index c7ae51ade2a..ae8a4980768 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.storage; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; @@ -111,8 +112,8 @@ public class QuantumChestMachine extends TieredMachine implements IAutoOutputIte @Nullable protected TickableSubscription autoOutputSubs; - public QuantumChestMachine(IMachineBlockEntity holder, int tier, long maxAmount) { - super(holder, tier); + public QuantumChestMachine(BlockEntityCreationInfo info, int tier, long maxAmount) { + super(info, tier); this.outputFacingItems = getFrontFacing().getOpposite(); this.maxAmount = maxAmount; this.cache = createCacheItemHandler(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java index d8fc1e12504..6e18339eb9d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.storage; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; @@ -103,8 +104,8 @@ public class QuantumTankMachine extends TieredMachine implements IAutoOutputFlui @Nullable protected TickableSubscription autoOutputSubs; - public QuantumTankMachine(IMachineBlockEntity holder, int tier, long maxAmount) { - super(holder, tier); + public QuantumTankMachine(BlockEntityCreationInfo info, int tier, long maxAmount) { + super(info, tier); this.outputFacingFluids = getFrontFacing().getOpposite(); this.maxAmount = maxAmount; this.cache = createCacheFluidHandler(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/longdistance/LDFluidEndpointMachine.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/longdistance/LDFluidEndpointMachine.java index 21acb2502da..8ecac35d5a7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/longdistance/LDFluidEndpointMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/longdistance/LDFluidEndpointMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.pipelike.fluidpipe.longdistance; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; @@ -15,8 +16,8 @@ public class LDFluidEndpointMachine extends LongDistanceEndpointMachine { - public LDFluidEndpointMachine(IMachineBlockEntity holder) { - super(holder, LDFluidPipeType.INSTANCE); + public LDFluidEndpointMachine(BlockEntityCreationInfo info) { + super(info, LDFluidPipeType.INSTANCE); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/longdistance/LDItemEndpointMachine.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/longdistance/LDItemEndpointMachine.java index 168e339d654..19095c150b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/longdistance/LDItemEndpointMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/longdistance/LDItemEndpointMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.pipelike.item.longdistance; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.common.machine.storage.LongDistanceEndpointMachine; @@ -15,8 +16,8 @@ public class LDItemEndpointMachine extends LongDistanceEndpointMachine { - public LDItemEndpointMachine(IMachineBlockEntity metaTileEntityId) { - super(metaTileEntityId, LDItemPipeType.INSTANCE); + public LDItemEndpointMachine(BlockEntityCreationInfo info) { + super(info, LDItemPipeType.INSTANCE); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java index fc6ba962069..4d0c3dc2d32 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.integration.ae2.machine; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.common.machine.multiblock.part.ItemBusPartMachine; @@ -34,8 +35,8 @@ public abstract class MEBusPartMachine extends ItemBusPartMachine implements IGr protected final IActionSource actionSource; - public MEBusPartMachine(IMachineBlockEntity holder, IO io) { - super(holder, GTValues.LuV, io); + public MEBusPartMachine(BlockEntityCreationInfo info, IO io) { + super(info, GTValues.LuV, io); this.nodeHolder = createNodeHolder(); this.actionSource = IActionSource.ofMachine(nodeHolder.getMainNode()::getNode); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java index ddaad0fc870..a7f3614561a 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.integration.ae2.machine; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.common.machine.multiblock.part.FluidHatchPartMachine; @@ -35,8 +36,8 @@ public abstract class MEHatchPartMachine extends FluidHatchPartMachine implement protected final IActionSource actionSource; - public MEHatchPartMachine(IMachineBlockEntity holder, IO io) { - super(holder, GTValues.UHV, io, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_1X, CONFIG_SIZE); + public MEHatchPartMachine(BlockEntityCreationInfo info, IO io) { + super(info, GTValues.UHV, io, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_1X, CONFIG_SIZE); this.nodeHolder = createNodeHolder(); this.actionSource = IActionSource.ofMachine(nodeHolder.getMainNode()::getNode); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java index e1272cf6a44..3343ec4622b 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.integration.ae2.machine; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IDataStickInteractable; @@ -39,8 +40,8 @@ public class MEInputBusPartMachine extends MEBusPartMachine protected ExportOnlyAEItemList aeItemHandler; - public MEInputBusPartMachine(IMachineBlockEntity holder) { - super(holder, IO.IN); + public MEInputBusPartMachine(BlockEntityCreationInfo info) { + super(info, IO.IN); } ///////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java index 43d76cbd8de..17e1145ed99 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.integration.ae2.machine; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IDataStickInteractable; @@ -38,8 +39,8 @@ public class MEInputHatchPartMachine extends MEHatchPartMachine protected ExportOnlyAEFluidList aeFluidHandler; - public MEInputHatchPartMachine(IMachineBlockEntity holder) { - super(holder, IO.IN); + public MEInputHatchPartMachine(BlockEntityCreationInfo info) { + super(info, IO.IN); } ///////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java index 8a0fac884b6..bd273947c90 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.integration.ae2.machine; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; @@ -38,8 +39,8 @@ public class MEOutputBusPartMachine extends MEBusPartMachine implements IMachine @SaveField private KeyStorage internalBuffer; // Do not use KeyCounter, use our simple implementation - public MEOutputBusPartMachine(IMachineBlockEntity holder) { - super(holder, IO.OUT); + public MEOutputBusPartMachine(BlockEntityCreationInfo info) { + super(info, IO.OUT); } ///////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java index 87299c7dc71..e62715c609a 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.integration.ae2.machine; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; @@ -37,8 +38,8 @@ public class MEOutputHatchPartMachine extends MEHatchPartMachine implements IMac @SaveField private KeyStorage internalBuffer; // Do not use KeyCounter, use our simple implementation - public MEOutputHatchPartMachine(IMachineBlockEntity holder) { - super(holder, IO.OUT); + public MEOutputHatchPartMachine(BlockEntityCreationInfo info) { + super(info, IO.OUT); } ///////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java index 34aa21fbd6b..bedc4ec4731 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.integration.ae2.machine; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; @@ -143,9 +144,9 @@ public void setItemDirect(int slotIndex, ItemStack stack) { @Nullable protected TickableSubscription updateSubs; - public MEPatternBufferPartMachine(IMachineBlockEntity holder) { - super(holder, IO.IN); - patternInventory.setOnContentsChanged(() -> syncDataHolder.markClientSyncFieldDirty("patternInventory")); + public MEPatternBufferPartMachine(BlockEntityCreationInfo info) { + super(info, IO.IN); + patternInventory.setOnContentsChanged(() -> getSyncDataHolder().markClientSyncFieldDirty("patternInventory")); this.patternInventory.setFilter(stack -> stack.getItem() instanceof ProcessingPatternItem); for (int i = 0; i < this.internalInventory.length; i++) { this.internalInventory[i] = new InternalSlot(); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferProxyPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferProxyPartMachine.java index 21a48d95867..9517572a6ab 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferProxyPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferProxyPartMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.integration.ae2.machine; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; @@ -48,8 +49,8 @@ public class MEPatternBufferProxyPartMachine extends TieredIOPartMachine private @Nullable MEPatternBufferPartMachine buffer = null; private boolean bufferResolved = false; - public MEPatternBufferProxyPartMachine(IMachineBlockEntity holder) { - super(holder, GTValues.LuV, IO.IN); + public MEPatternBufferProxyPartMachine(BlockEntityCreationInfo info) { + super(info, GTValues.LuV, IO.IN); proxySlotRecipeHandler = new ProxySlotRecipeHandler(this, MEPatternBufferPartMachine.MAX_PATTERN_COUNT); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java index 8869b710720..3723d8307c3 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.integration.ae2.machine; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; import com.gregtechceu.gtceu.api.gui.fancy.TabsWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -66,8 +67,8 @@ public class MEStockingBusPartMachine extends MEInputBusPartMachine implements I @Setter private Predicate autoPullTest; - public MEStockingBusPartMachine(IMachineBlockEntity holder) { - super(holder); + public MEStockingBusPartMachine(BlockEntityCreationInfo info) { + super(info); this.autoPullTest = $ -> false; } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java index 5a5746cd285..035859b1d25 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.integration.ae2.machine; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; import com.gregtechceu.gtceu.api.gui.fancy.TabsWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -70,8 +71,8 @@ public class MEStockingHatchPartMachine extends MEInputHatchPartMachine implemen @Setter private Predicate autoPullTest; - public MEStockingHatchPartMachine(IMachineBlockEntity holder) { - super(holder); + public MEStockingHatchPartMachine(BlockEntityCreationInfo info) { + super(info); this.autoPullTest = $ -> false; } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java index 9228bc795a6..bfe68586b62 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java @@ -1,7 +1,7 @@ package com.gregtechceu.gtceu.integration.jade; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.common.blockentity.FluidPipeBlockEntity; import com.gregtechceu.gtceu.common.data.GTMaterialItems; import com.gregtechceu.gtceu.integration.jade.provider.*; @@ -50,8 +50,8 @@ public void register(IWailaCommonRegistration registration) { registration.registerBlockDataProvider(new MEPatternBufferProxyProvider(), BlockEntity.class); } - registration.registerItemStorage(GTItemStorageProvider.INSTANCE, MetaMachineBlockEntity.class); - registration.registerFluidStorage(GTFluidStorageProvider.INSTANCE, MetaMachineBlockEntity.class); + registration.registerItemStorage(GTItemStorageProvider.INSTANCE, MetaMachine.class); + registration.registerFluidStorage(GTFluidStorageProvider.INSTANCE, MetaMachine.class); registration.registerFluidStorage(FluidPipeStorageProvider.INSTANCE, FluidPipeBlockEntity.class); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/EnergyConverterModeProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/EnergyConverterModeProvider.java index 4eccc045b03..addba1d4bd5 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/EnergyConverterModeProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/EnergyConverterModeProvider.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.jade.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.common.machine.electric.ConverterMachine; import net.minecraft.nbt.CompoundTag; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/GTFluidStorageProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/GTFluidStorageProvider.java index 69b085bb8a5..bebf882cf50 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/GTFluidStorageProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/GTFluidStorageProvider.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.jade.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.common.machine.storage.CreativeTankMachine; import com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine; @@ -38,7 +37,7 @@ * Currently: Quantum Tanks, Pattern Buffer Proxies * Defaults to Jade's normal FluidView provider */ -public enum GTFluidStorageProvider implements IServerExtensionProvider, +public enum GTFluidStorageProvider implements IServerExtensionProvider, IClientExtensionProvider { INSTANCE; @@ -55,8 +54,7 @@ public List> getClientGroups(Accessor accessor, Li @Override public @Nullable List> getGroups(ServerPlayer serverPlayer, ServerLevel serverLevel, - MetaMachineBlockEntity mmbe, boolean b) { - MetaMachine machine = mmbe.getMetaMachine(); + MetaMachine machine, boolean b) { if (machine instanceof QuantumTankMachine qtm) { FluidStack stored = qtm.getStored(); if (stored.isEmpty() && qtm instanceof CreativeTankMachine) return Collections.emptyList(); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/GTItemStorageProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/GTItemStorageProvider.java index 6fbb859903f..7126c70604d 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/GTItemStorageProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/GTItemStorageProvider.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.jade.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.common.machine.storage.CreativeChestMachine; import com.gregtechceu.gtceu.common.machine.storage.QuantumChestMachine; @@ -31,7 +30,7 @@ * Currently: Quantum Chests, Pattern Buffer Proxies * Defaults to Jade's normal ItemStack provider */ -public enum GTItemStorageProvider implements IServerExtensionProvider, +public enum GTItemStorageProvider implements IServerExtensionProvider, IClientExtensionProvider { INSTANCE; @@ -48,8 +47,7 @@ public List> getClientGroups(Accessor accessor, Lis @Override public @Nullable List> getGroups(ServerPlayer serverPlayer, ServerLevel serverLevel, - MetaMachineBlockEntity mmbe, boolean b) { - MetaMachine machine = mmbe.getMetaMachine(); + MetaMachine machine, boolean b) { if (machine instanceof QuantumChestMachine qcm) { ItemStack stored = qcm.getStored(); long amount = qcm.getStoredAmount(); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/HazardCleanerBlockProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/HazardCleanerBlockProvider.java index a8c72156d5e..8bc480e2c1a 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/HazardCleanerBlockProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/HazardCleanerBlockProvider.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.jade.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IEnvironmentalHazardCleaner; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MachineModeProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MachineModeProvider.java index 7a8fd66182b..0abb419724e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MachineModeProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MachineModeProvider.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.jade.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java index cb4c2d5cf31..526b0399689 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.jade.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import net.minecraft.ChatFormatting; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ParallelProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ParallelProvider.java index c5c25a645e2..fc9bbaf90e3 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ParallelProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ParallelProvider.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.jade.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.capability.IParallelHatch; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java index 31f2324e24b..789c02fc2b1 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.machine.SimpleGeneratorMachine; import com.gregtechceu.gtceu.api.machine.SimpleTieredMachine; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java index 113b517de61..1931a6a88f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java @@ -1,8 +1,8 @@ package com.gregtechceu.gtceu.integration.kjs.builders.machine; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.item.MetaMachineItem; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; @@ -80,7 +80,7 @@ public static MultiblockMachineBuilder createKJSMulti(ResourceLocation id) { WorkableElectricMultiblockMachine::new, MetaMachineBlock::new, MetaMachineItem::new, - MetaMachineBlockEntity::new); + MetaMachine::new); } public static MultiblockMachineBuilder createKJSMulti(ResourceLocation id, @@ -89,6 +89,6 @@ public static MultiblockMachineBuilder createKJSMulti(ResourceLocation id, machine::create, MetaMachineBlock::new, MetaMachineItem::new, - MetaMachineBlockEntity::new); + MetaMachine::new); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/EnergyConverterModeProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/EnergyConverterModeProvider.java index 6d978358f5a..10e0a954a07 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/EnergyConverterModeProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/EnergyConverterModeProvider.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.top.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.common.machine.electric.ConverterMachine; import net.minecraft.network.chat.Component; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/HazardCleanerInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/HazardCleanerInfoProvider.java index 6fb64aa38f1..edef831d895 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/HazardCleanerInfoProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/HazardCleanerInfoProvider.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.top.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IEnvironmentalHazardCleaner; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java index 8050bda6b7e..a7b3b128258 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.top.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MultiblockStructureProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MultiblockStructureProvider.java index 1b0a999953b..12c9e44ac9f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MultiblockStructureProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MultiblockStructureProvider.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.top.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/ParallelProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/ParallelProvider.java index a7eb257361d..4f803376671 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/ParallelProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/ParallelProvider.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.top.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.capability.IParallelHatch; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; diff --git a/src/main/java/com/gregtechceu/gtceu/utils/DummyMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/utils/DummyMachineBlockEntity.java deleted file mode 100644 index 7f85400c1e6..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/utils/DummyMachineBlockEntity.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gregtechceu.gtceu.utils; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; -import com.gregtechceu.gtceu.api.recipe.GTRecipeType; -import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; - -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; - -import it.unimi.dsi.fastutil.ints.Int2IntFunction; -import lombok.Getter; -import lombok.Setter; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.Collection; - -/** - * Dummy machine BE used for wrapping {@link DummyRecipeLogicMachine}s - */ -public class DummyMachineBlockEntity implements IMachineBlockEntity { - - @Getter - public final DummyRecipeLogicMachine metaMachine; - @Getter - private final MachineDefinition definition; - @Getter - @Setter - private MachineRenderState renderState; - - // TODO: Fix the proxy parameter - public DummyMachineBlockEntity(int tier, GTRecipeType type, Int2IntFunction tankScalingFunction, - Collection handlers) { - this.definition = new MachineDefinition(GTCEu.id("dummy")); - this.definition.setRecipeTypes(new GTRecipeType[] { type }); - this.definition.setTier(tier); - - this.renderState = getDefinition().defaultRenderState(); - this.metaMachine = new DummyRecipeLogicMachine(this, tier, tankScalingFunction, handlers); - } - - @Override - public long getOffset() { - return 0; - } - - @Override - public CompoundTag getPersistentData() { - return new CompoundTag(); - } - - @Override - public @NotNull LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { - return LazyOptional.empty(); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/DummyRecipeLogicMachine.java b/src/main/java/com/gregtechceu/gtceu/utils/DummyRecipeLogicMachine.java deleted file mode 100644 index e4820fe02da..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/utils/DummyRecipeLogicMachine.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gregtechceu.gtceu.utils; - -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.WorkableTieredMachine; -import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; -import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; - -import it.unimi.dsi.fastutil.ints.Int2IntFunction; - -import java.util.Collection; - -/** - * Dummy machine used for searching recipes outside of a machine. - */ -public class DummyRecipeLogicMachine extends WorkableTieredMachine implements IRecipeLogicMachine { - - public DummyRecipeLogicMachine(IMachineBlockEntity be, int tier, Int2IntFunction tankScalingFunction, - Collection handlers) { - super(be, tier, tankScalingFunction); - reinitializeHandlers(handlers); - } - - public void reinitializeHandlers(Collection handlers) { - this.capabilitiesProxy.clear(); - this.capabilitiesFlat.clear(); - for (RecipeHandlerList handlerList : handlers) { - this.addHandlerList(handlerList); - } - } -} diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/MultipleEnergyHatchTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/MultipleEnergyHatchTest.java index de4f0b46524..197fb86d19c 100644 --- a/src/test/java/com/gregtechceu/gtceu/api/recipe/MultipleEnergyHatchTest.java +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/MultipleEnergyHatchTest.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredientTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredientTest.java index b9ea29bc8ce..cf59c2a7e9b 100644 --- a/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredientTest.java +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredientTest.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredientTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredientTest.java index c2264960355..ace9bdf78b8 100644 --- a/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredientTest.java +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredientTest.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.machine.MetaMachine; diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/ConveyorCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/ConveyorCoverTest.java index fa47dc2bd48..eca869a096f 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/ConveyorCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/ConveyorCoverTest.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.data.GTMachines; diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/ItemFilterCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/ItemFilterCoverTest.java index 48240b0b70f..e4418236d6d 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/ItemFilterCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/ItemFilterCoverTest.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.cover.filter.SimpleItemFilter; import com.gregtechceu.gtceu.common.cover.data.FilterMode; diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/PumpCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/PumpCoverTest.java index 12e573d4fcc..327d5ef3461 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/PumpCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/PumpCoverTest.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.data.GTMachines; diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/RobotArmTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/RobotArmTest.java index 275cb2e1801..f23316eaaed 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/RobotArmTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/RobotArmTest.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.common.cover; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.common.cover.data.TransferMode; import com.gregtechceu.gtceu.common.data.GTItems; @@ -18,8 +17,6 @@ import net.minecraftforge.gametest.GameTestHolder; import net.minecraftforge.gametest.PrefixGameTestTemplate; -import static com.gregtechceu.gtceu.common.data.GTCovers.*; - @PrefixGameTestTemplate(false) @GameTestHolder(GTCEu.MOD_ID) public class RobotArmTest { diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/ShutterCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/ShutterCoverTest.java index 13dbaaa770a..5bd6f45d27e 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/ShutterCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/ShutterCoverTest.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.data.GTMachines; diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/SolarPanelTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/SolarPanelTest.java index 85296199fe1..0e69866abfa 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/SolarPanelTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/SolarPanelTest.java @@ -1,6 +1,10 @@ package com.gregtechceu.gtceu.common.cover; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.common.data.GTItems; +import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.common.machine.electric.BatteryBufferMachine; diff --git a/src/test/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachineTest.java b/src/test/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachineTest.java index 125e389b19b..e4e27ac51aa 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachineTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachineTest.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.common.machine.storage.CrateMachine; import com.gregtechceu.gtceu.gametest.util.TestUtils; diff --git a/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java b/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java index 8b51ec7161c..bf4f9ca239b 100644 --- a/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java +++ b/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; From f32dac43e613e266cb22b54be664aed9eeeb4506 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Thu, 11 Dec 2025 22:30:02 +1100 Subject: [PATCH 12/41] clean up all remaining references --- .../gtceu/api/block/MetaMachineBlock.java | 11 +- .../api/capability/IMonitorComponent.java | 2 +- .../api/gui/factory/MachineUIFactory.java | 7 +- .../api/gui/widget/PatternPreviewWidget.java | 7 +- .../CombinedDirectionalConfigurator.java | 8 +- .../gtceu/api/item/MetaMachineItem.java | 2 +- .../gtceu/api/item/tool/ToolHelper.java | 100 +++++++++--------- .../api/machine/IMachineBlockEntity.java | 10 +- .../api/machine/MachineCoverContainer.java | 2 +- .../gtceu/api/machine/MetaMachine.java | 34 +++--- .../api/machine/SimpleTieredMachine.java | 4 +- .../feature/IEnvironmentalHazardEmitter.java | 4 +- .../machine/feature/IExhaustVentMachine.java | 4 +- .../machine/feature/IExplosionMachine.java | 6 +- .../feature/ILocalizedHazardEmitter.java | 4 +- .../feature/multiblock/IMufflerMachine.java | 4 +- .../multiblock/IRotorHolderMachine.java | 2 +- ...CoilWorkableElectricMultiblockMachine.java | 1 - .../MultiblockControllerMachine.java | 9 +- ...eredWorkableElectricMultiblockMachine.java | 1 - .../WorkableElectricMultiblockMachine.java | 1 - .../multiblock/WorkableMultiblockMachine.java | 3 +- .../part/MultiblockPartMachine.java | 7 +- .../multiblock/part/TieredIOPartMachine.java | 1 - .../multiblock/part/TieredPartMachine.java | 1 - .../api/machine/steam/SimpleSteamMachine.java | 1 - .../api/machine/steam/SteamBoilerMachine.java | 13 ++- .../gtceu/api/machine/steam/SteamMachine.java | 1 - .../machine/steam/SteamWorkableMachine.java | 1 - .../machine/trait/FluidTankProxyTrait.java | 2 +- .../machine/trait/ItemHandlerProxyTrait.java | 2 +- .../trait/NotifiableComputationContainer.java | 4 +- .../trait/NotifiableEnergyContainer.java | 2 +- .../machine/trait/NotifiableFluidTank.java | 4 +- .../trait/NotifiableItemStackHandler.java | 4 +- .../trait/NotifiableLaserContainer.java | 4 +- .../gtceu/api/machine/trait/RecipeLogic.java | 6 +- .../gtceu/api/pattern/BlockPattern.java | 15 ++- .../api/pattern/MultiblockShapeInfo.java | 4 +- .../gtceu/api/pattern/MultiblockState.java | 3 +- .../gtceu/api/pattern/Predicates.java | 2 +- .../api/pipenet/longdistance/ILDEndpoint.java | 3 +- .../longdistance/LongDistanceNetwork.java | 10 +- .../longdistance/LongDistancePipeType.java | 4 +- .../api/registry/registrate/GTRegistrate.java | 20 ++-- .../registry/registrate/MachineBuilder.java | 3 +- .../registrate/MultiblockMachineBuilder.java | 13 +-- .../forge/ForgeClientEventListener.java | 1 - .../model/machine/IMachineRendererModel.java | 4 +- .../client/model/machine/MachineModel.java | 24 ++--- .../MultiblockInWorldPreviewRenderer.java | 7 +- .../machine/impl/BoilerMultiPartRender.java | 4 +- .../machine/impl/CentralMonitorRender.java | 4 +- .../machine/impl/FluidAreaRender.java | 2 +- .../machine/impl/FusionRingRender.java | 2 +- .../machine/impl/GrowingPlantRender.java | 4 +- .../gtceu/common/block/DuctPipeBlock.java | 3 +- .../blockentity/DuctPipeBlockEntity.java | 5 +- .../gtceu/common/data/GTBlockEntities.java | 1 - .../gtceu/common/data/GTPlaceholders.java | 8 +- .../gtceu/common/data/GTRecipeModifiers.java | 2 +- .../common/data/machines/GCYMMachines.java | 2 +- .../common/data/machines/GTMachineUtils.java | 27 ++--- .../common/data/machines/GTMultiMachines.java | 2 +- .../data/machines/GTResearchMachines.java | 5 +- .../common/item/PortableScannerBehavior.java | 5 +- .../tool/behavior/BlockRotatingBehavior.java | 1 - .../MetaMachineConfigCopyBehaviour.java | 3 +- .../item/tool/behavior/PlungerBehavior.java | 5 +- .../machine/electric/AirScrubberMachine.java | 5 +- .../electric/BatteryBufferMachine.java | 9 +- .../machine/electric/BlockBreakerMachine.java | 17 ++- .../machine/electric/ChargerMachine.java | 1 - .../machine/electric/ConverterMachine.java | 1 - .../machine/electric/FisherMachine.java | 7 +- .../common/machine/electric/HullMachine.java | 1 - .../electric/ItemCollectorMachine.java | 11 +- .../common/machine/electric/MinerMachine.java | 3 +- .../common/machine/electric/PumpMachine.java | 7 +- .../machine/electric/RockCrusherMachine.java | 1 - .../machine/electric/TransformerMachine.java | 1 - .../electric/WorldAcceleratorMachine.java | 18 ++-- .../electric/ActiveTransformerMachine.java | 3 +- .../electric/AssemblyLineMachine.java | 7 +- .../electric/BedrockOreMinerMachine.java | 1 - .../electric/CentralMonitorMachine.java | 51 +++++---- .../multiblock/electric/CleanroomMachine.java | 18 ++-- .../electric/DistillationTowerMachine.java | 13 ++- .../electric/FluidDrillMachine.java | 1 - .../electric/FusionReactorMachine.java | 3 +- .../electric/LargeMinerMachine.java | 5 +- .../electric/MultiblockTankMachine.java | 1 - .../electric/PowerSubstationMachine.java | 3 +- .../gcym/LargeChemicalBathMachine.java | 3 +- .../gcym/LargeMacerationTowerMachine.java | 5 +- .../electric/gcym/LargeMixerMachine.java | 3 +- .../electric/research/DataBankMachine.java | 3 +- .../electric/research/HPCAMachine.java | 11 +- .../research/NetworkSwitchMachine.java | 1 - .../research/ResearchStationMachine.java | 3 +- .../LargeCombustionEngineMachine.java | 3 +- .../generator/LargeTurbineMachine.java | 1 - .../part/AutoMaintenanceHatchPartMachine.java | 1 - .../CleaningMaintenanceHatchPartMachine.java | 1 - .../multiblock/part/CokeOvenHatch.java | 5 +- .../part/DataAccessHatchMachine.java | 1 - .../multiblock/part/DiodePartMachine.java | 1 - .../multiblock/part/DualHatchPartMachine.java | 11 +- .../part/EnergyHatchPartMachine.java | 1 - .../part/FluidHatchPartMachine.java | 9 +- .../multiblock/part/ItemBusPartMachine.java | 9 +- .../part/LaserHatchPartMachine.java | 1 - .../part/MaintenanceHatchPartMachine.java | 1 - .../multiblock/part/MufflerPartMachine.java | 3 +- .../multiblock/part/ObjectHolderMachine.java | 1 - .../part/OpticalComputationHatchMachine.java | 1 - .../part/OpticalDataHatchMachine.java | 3 +- .../part/ParallelHatchPartMachine.java | 1 - .../multiblock/part/PumpHatchPartMachine.java | 1 - .../part/ReservoirHatchPartMachine.java | 1 - .../part/RotorHolderPartMachine.java | 1 - .../part/SteamHatchPartMachine.java | 1 - .../part/SteamItemBusPartMachine.java | 6 +- .../multiblock/part/TankValvePartMachine.java | 3 +- .../part/hpca/HPCABridgePartMachine.java | 1 - .../part/hpca/HPCAComponentPartMachine.java | 1 - .../part/hpca/HPCAComputationPartMachine.java | 1 - .../part/hpca/HPCACoolerPartMachine.java | 1 - .../part/hpca/HPCAEmptyPartMachine.java | 1 - .../monitor/AdvancedMonitorPartMachine.java | 1 - .../monitor/MonitorComponentPartMachine.java | 1 - .../part/monitor/MonitorPartMachine.java | 1 - .../primitive/CharcoalPileIgniterMachine.java | 7 +- .../multiblock/primitive/CokeOvenMachine.java | 3 +- .../PrimitiveBlastFurnaceMachine.java | 7 +- .../PrimitiveFancyUIWorkableMachine.java | 1 - .../primitive/PrimitivePumpMachine.java | 5 +- .../primitive/PrimitiveWorkableMachine.java | 1 - .../multiblock/steam/LargeBoilerMachine.java | 3 +- .../steam/SteamParallelMultiblockMachine.java | 5 +- .../steam/SteamLiquidBoilerMachine.java | 1 - .../machine/steam/SteamMinerMachine.java | 3 +- .../machine/steam/SteamSolarBoiler.java | 5 +- .../steam/SteamSolidBoilerMachine.java | 1 - .../common/machine/storage/BufferMachine.java | 5 +- .../machine/storage/CreativeChestMachine.java | 1 - .../CreativeEnergyContainerMachine.java | 7 +- .../machine/storage/CreativeTankMachine.java | 1 - .../common/machine/storage/DrumMachine.java | 2 +- .../storage/LongDistanceEndpointMachine.java | 21 ++-- .../machine/storage/QuantumChestMachine.java | 7 +- .../machine/storage/QuantumTankMachine.java | 4 +- .../machine/trait/BedrockOreMinerLogic.java | 4 +- .../common/machine/trait/CleanroomLogic.java | 2 +- .../common/machine/trait/ConverterTrait.java | 5 +- .../common/machine/trait/FluidDrillLogic.java | 4 +- .../machine/trait/miner/LargeMinerLogic.java | 2 +- .../machine/trait/miner/MinerLogic.java | 2 +- .../SCPacketMonitorGroupNBTChange.java | 2 +- .../common/pipelike/duct/DuctNetHandler.java | 3 +- .../longdistance/LDFluidEndpointMachine.java | 3 +- .../longdistance/LDItemEndpointMachine.java | 3 +- .../condition/AdjacentBlockCondition.java | 2 +- .../condition/AdjacentFluidCondition.java | 2 +- .../recipe/condition/BiomeCondition.java | 2 +- .../EnvironmentalHazardCondition.java | 2 +- .../recipe/condition/PositionYCondition.java | 2 +- .../mixins/client/LevelRendererMixin.java | 7 +- .../gtceu/forge/ForgeCommonEventListener.java | 2 +- .../integration/ae2/GTAEPlaceholders.java | 8 +- .../ae2/machine/MEBusPartMachine.java | 1 - .../ae2/machine/MEHatchPartMachine.java | 1 - .../ae2/machine/MEInputBusPartMachine.java | 1 - .../ae2/machine/MEInputHatchPartMachine.java | 1 - .../ae2/machine/MEOutputBusPartMachine.java | 1 - .../ae2/machine/MEOutputHatchPartMachine.java | 1 - .../machine/MEPatternBufferPartMachine.java | 7 +- .../MEPatternBufferProxyPartMachine.java | 1 - .../ae2/machine/MEStockingBusPartMachine.java | 1 - .../machine/MEStockingHatchPartMachine.java | 1 - .../ae2/machine/trait/GridNodeHolder.java | 2 +- .../ae2/machine/trait/GridNodeHostTrait.java | 2 +- .../jade/provider/DataBankBlockProvider.java | 10 +- .../provider/EnergyConverterModeProvider.java | 3 +- .../jade/provider/GTFluidStorageProvider.java | 4 +- .../jade/provider/GTItemStorageProvider.java | 4 +- .../provider/HazardCleanerBlockProvider.java | 3 +- .../provider/MEPatternBufferProvider.java | 8 +- .../MEPatternBufferProxyProvider.java | 11 +- .../jade/provider/MachineModeProvider.java | 9 +- .../provider/MultiblockStructureProvider.java | 6 +- .../jade/provider/ParallelProvider.java | 30 +++--- .../provider/PrimitivePumpBlockProvider.java | 10 +- .../jade/provider/RecipeLogicProvider.java | 15 ++- .../provider/TransformerBlockProvider.java | 10 +- .../machine/KJSSteamMachineBuilder.java | 3 +- .../machine/KJSTieredMachineBuilder.java | 5 +- .../machine/KJSTieredMultiblockBuilder.java | 3 +- .../machine/KJSWrappingMultiblockBuilder.java | 6 +- .../kjs/helpers/MachineConstructors.java | 17 +-- .../provider/EnergyConverterModeProvider.java | 3 +- .../provider/HazardCleanerInfoProvider.java | 3 +- .../top/provider/MachineModeProvider.java | 44 ++++---- .../provider/MultiblockStructureProvider.java | 12 +-- .../top/provider/ParallelProvider.java | 94 ++++++++-------- .../top/provider/RecipeLogicInfoProvider.java | 4 +- .../api/recipe/MultipleEnergyHatchTest.java | 5 +- .../IntProviderFluidIngredientTest.java | 2 +- .../ingredient/IntProviderIngredientTest.java | 2 +- .../cover/AdvancedDetectorCoverTest.java | 12 +-- .../gtceu/common/cover/ConveyorCoverTest.java | 19 ++-- .../gtceu/common/cover/DetectorCoverTest.java | 6 +- .../common/cover/ItemFilterCoverTest.java | 12 +-- .../gtceu/common/cover/PumpCoverTest.java | 18 ++-- .../gtceu/common/cover/RobotArmTest.java | 18 ++-- .../gtceu/common/cover/ShutterCoverTest.java | 6 +- .../gtceu/common/cover/SolarPanelTest.java | 4 +- .../cover/WirelessTransmitterCoverTest.java | 2 +- .../part/ItemBusPartMachineTest.java | 54 ++++------ .../gtceu/gametest/util/TestUtils.java | 4 +- 220 files changed, 591 insertions(+), 826 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java index 7ff4cf9d4b5..17c88ca050c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java @@ -97,7 +97,6 @@ public RotationState getRotationState() { return getDefinition().getRotationState(); } - @Override public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) { return getRotationState() == RotationState.NONE ? definition.getShape(Direction.NORTH) : @@ -186,7 +185,8 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { @Override public ItemStack getCloneItemStack(BlockGetter level, BlockPos pos, BlockState state) { ItemStack itemStack = super.getCloneItemStack(level, pos, state); - if (MetaMachine.getMachine(level, pos) instanceof IDropSaveMachine dropSaveMachine && dropSaveMachine.savePickClone()) { + if (MetaMachine.getMachine(level, pos) instanceof IDropSaveMachine dropSaveMachine && + dropSaveMachine.savePickClone()) { dropSaveMachine.saveToItem(itemStack.getOrCreateTag()); } return itemStack; @@ -375,7 +375,7 @@ public Direction getFrontFacing(BlockState state) { } public static int colorTinted(BlockState blockState, @Nullable BlockAndTintGetter level, @Nullable BlockPos pos, - int index) { + int index) { if (level != null && pos != null) { var machine = MetaMachine.getMachine(level, pos); if (machine != null) { @@ -393,8 +393,8 @@ public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { @Nullable @Override - public BlockEntityTicker getTicker(Level level, BlockState state, - BlockEntityType blockEntityType) { + public BlockEntityTicker getTicker(Level level, BlockState state, + BlockEntityType blockEntityType) { if (blockEntityType == getDefinition().getBlockEntityType()) { if (!level.isClientSide) { return (pLevel, pPos, pState, pTile) -> { @@ -420,5 +420,4 @@ public BlockEntityTicker getTicker(Level level, Bloc public boolean canConnectRedstone(BlockGetter level, BlockPos pos, Direction side) { return MetaMachine.getMachine(level, pos).canConnectRedstone(side); } - } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IMonitorComponent.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IMonitorComponent.java index aa9d1cb61fe..002c650a187 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IMonitorComponent.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IMonitorComponent.java @@ -15,7 +15,7 @@ default boolean isMonitor() { IGuiTexture getComponentIcon(); - BlockPos getPos(); + BlockPos getBlockPos(); default @Nullable IItemHandler getDataItems() { return null; diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/factory/MachineUIFactory.java b/src/main/java/com/gregtechceu/gtceu/api/gui/factory/MachineUIFactory.java index 0a71e7c5454..220c3a9c4d0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/factory/MachineUIFactory.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/factory/MachineUIFactory.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.api.gui.factory; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; @@ -36,14 +35,14 @@ protected ModularUI createUITemplate(MetaMachine holder, Player entityPlayer) { protected MetaMachine readHolderFromSyncData(FriendlyByteBuf syncData) { Level world = Minecraft.getInstance().level; if (world == null) return null; - if (world.getBlockEntity(syncData.readBlockPos()) instanceof IMachineBlockEntity holder) { - return holder.getMetaMachine(); + if (world.getBlockEntity(syncData.readBlockPos()) instanceof MetaMachine holder) { + return holder; } return null; } @Override protected void writeHolderToSyncData(FriendlyByteBuf syncData, MetaMachine holder) { - syncData.writeBlockPos(holder.getPos()); + syncData.writeBlockPos(holder.getBlockPos()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java index ec1ffa01db5..8923ee5734c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java @@ -387,9 +387,8 @@ private MBPattern initializePattern(MultiblockShapeInfo shapeInfo, HashSet parts = gatherBlockDrops(blockMap); diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/directional/CombinedDirectionalConfigurator.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/directional/CombinedDirectionalConfigurator.java index 92d640f9472..cf281d96a37 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/directional/CombinedDirectionalConfigurator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/directional/CombinedDirectionalConfigurator.java @@ -77,7 +77,7 @@ public void initWidget() { } private SceneWidget createSceneWidget() { - var pos = this.machine.getPos(); + var pos = this.machine.getBlockPos(); SceneWidget sceneWidget = new SceneWidget(4, 4, width - 8, height - 8, this.machine.getLevel()) .setRenderedCore(List.of(pos), null) @@ -111,7 +111,7 @@ private void renderOverlays(WorldSceneRenderer renderer) { for (Direction face : GTUtil.DIRECTIONS) { for (IDirectionalConfigHandler configHandler : configHandlers) { - configHandler.renderOverlay(sceneWidget, new BlockPosFace(machine.getPos(), face)); + configHandler.renderOverlay(sceneWidget, new BlockPosFace(machine.getBlockPos(), face)); } } } @@ -143,7 +143,7 @@ private void addConfigWidgets(SceneWidget sceneWidget) { } protected void onSideSelected(BlockPos pos, Direction side) { - if (!pos.equals(machine.getPos())) + if (!pos.equals(machine.getBlockPos())) return; if (this.selectedSide == side) @@ -166,7 +166,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) { if (isMouseOverElement(mouseX, mouseY) && this.selectedSide == lastSide && this.selectedSide != null) { var hover = sceneWidget.getHoverPosFace(); - if (hover != null && hover.pos.equals(machine.getPos()) && hover.facing == this.selectedSide) { + if (hover != null && hover.pos.equals(machine.getBlockPos()) && hover.facing == this.selectedSide) { var cd = new ClickData(); writeClientAction(MOUSE_CLICK_CLIENT_ACTION_ID, buf -> { cd.writeToBuf(buf); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java index 531db293514..782b65efeb2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java @@ -26,7 +26,7 @@ public class MetaMachineItem extends BlockItem { public MetaMachineItem(MetaMachineBlock block, Properties properties) { - super(block.self(), properties); + super(block, properties); } public MachineDefinition getDefinition() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java index 95724290893..167415da721 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java @@ -398,56 +398,56 @@ public static void applyHammerDropConversion(ServerLevel world, BlockPos pos, It List drops, int fortune, float dropChance, RandomSource random) { // EnchantmentHelper.getEnchantmentLevel(EnchantmentHardHammer.INSTANCE, tool) -// if (is(tool, GTToolType.HARD_HAMMER)) { -// List silktouchDrops = getSilkTouchDrop(world, pos, state); -// for (ItemStack silktouchDrop : silktouchDrops) { -// if (silktouchDrop.isEmpty()) continue; -// // Stack lists can be immutable going into Recipe#matches barring no rewrites -// // Search for forge hammer recipes from all drops individually (only LV or under) -// -// DummyMachineBlockEntity be = new DummyMachineBlockEntity(GTValues.LV, -// GTRecipeTypes.FORGE_HAMMER_RECIPES, GTMachineUtils.defaultTankSizeFunction, -// Collections.emptyList()); -// RecipeHandlerList dummyInputs = RecipeHandlerList.of(IO.IN, -// new InfiniteEnergyContainer(be.getMetaMachine(), GTValues.V[GTValues.LV], -// GTValues.V[GTValues.LV], 1, GTValues.V[GTValues.LV], 1), -// new NotifiableItemStackHandler(be.getMetaMachine(), 1, IO.IN, IO.IN, -// (slots) -> new CustomItemStackHandler(silktouchDrop))); -// -// RecipeHandlerList dummyOutputs = RecipeHandlerList.of(IO.OUT, -// new NotifiableItemStackHandler(be.getMetaMachine(), 2, IO.OUT)); -// be.getMetaMachine().reinitializeHandlers(List.of(dummyInputs, dummyOutputs)); -// -// Iterator hammerRecipes = GTRecipeTypes.FORGE_HAMMER_RECIPES.searchRecipe(be.metaMachine, -// r -> RecipeHelper.matchContents(be.metaMachine, r).isSuccess()); -// GTRecipe hammerRecipe = !hammerRecipes.hasNext() ? null : hammerRecipes.next(); -// if (hammerRecipe != null && RecipeHelper.handleRecipeIO(be.metaMachine, hammerRecipe, IO.IN, -// be.getMetaMachine().recipeLogic.getChanceCaches()).isSuccess()) { -// drops.clear(); -// TagPrefix prefix = ChemicalHelper.getPrefix(silktouchDrop.getItem()); -// if (prefix.isEmpty()) { -// for (Content output : hammerRecipe.getOutputContents(ItemRecipeCapability.CAP)) { -// if (dropChance >= 1.0F || random.nextFloat() <= dropChance) { -// drops.add(SizedIngredient.copy(ItemRecipeCapability.CAP.of(output.content)) -// .getItems()[0]); -// } -// } -// } else if (TagPrefix.ORES.containsKey(prefix)) { -// for (Content content : hammerRecipe.getOutputContents(ItemRecipeCapability.CAP)) { -// if (dropChance >= 1.0F || random.nextFloat() <= dropChance) { -// ItemStack output = ItemRecipeCapability.CAP.of(content.content).getItems()[0]; -// // Only apply fortune on ore -> crushed forge hammer recipes -// if (ChemicalHelper.getPrefix(output.getItem()) == TagPrefix.crushed) { -// output = output.copy(); -// if (fortune > 0) output.grow(random.nextInt(fortune)); -// drops.add(output); -// } -// } -// } -// } -// } -// } -// } + // if (is(tool, GTToolType.HARD_HAMMER)) { + // List silktouchDrops = getSilkTouchDrop(world, pos, state); + // for (ItemStack silktouchDrop : silktouchDrops) { + // if (silktouchDrop.isEmpty()) continue; + // // Stack lists can be immutable going into Recipe#matches barring no rewrites + // // Search for forge hammer recipes from all drops individually (only LV or under) + // + // DummyMachineBlockEntity be = new DummyMachineBlockEntity(GTValues.LV, + // GTRecipeTypes.FORGE_HAMMER_RECIPES, GTMachineUtils.defaultTankSizeFunction, + // Collections.emptyList()); + // RecipeHandlerList dummyInputs = RecipeHandlerList.of(IO.IN, + // new InfiniteEnergyContainer(be.getMetaMachine(), GTValues.V[GTValues.LV], + // GTValues.V[GTValues.LV], 1, GTValues.V[GTValues.LV], 1), + // new NotifiableItemStackHandler(be.getMetaMachine(), 1, IO.IN, IO.IN, + // (slots) -> new CustomItemStackHandler(silktouchDrop))); + // + // RecipeHandlerList dummyOutputs = RecipeHandlerList.of(IO.OUT, + // new NotifiableItemStackHandler(be.getMetaMachine(), 2, IO.OUT)); + // be.getMetaMachine().reinitializeHandlers(List.of(dummyInputs, dummyOutputs)); + // + // Iterator hammerRecipes = GTRecipeTypes.FORGE_HAMMER_RECIPES.searchRecipe(be.metaMachine, + // r -> RecipeHelper.matchContents(be.metaMachine, r).isSuccess()); + // GTRecipe hammerRecipe = !hammerRecipes.hasNext() ? null : hammerRecipes.next(); + // if (hammerRecipe != null && RecipeHelper.handleRecipeIO(be.metaMachine, hammerRecipe, IO.IN, + // be.getMetaMachine().recipeLogic.getChanceCaches()).isSuccess()) { + // drops.clear(); + // TagPrefix prefix = ChemicalHelper.getPrefix(silktouchDrop.getItem()); + // if (prefix.isEmpty()) { + // for (Content output : hammerRecipe.getOutputContents(ItemRecipeCapability.CAP)) { + // if (dropChance >= 1.0F || random.nextFloat() <= dropChance) { + // drops.add(SizedIngredient.copy(ItemRecipeCapability.CAP.of(output.content)) + // .getItems()[0]); + // } + // } + // } else if (TagPrefix.ORES.containsKey(prefix)) { + // for (Content content : hammerRecipe.getOutputContents(ItemRecipeCapability.CAP)) { + // if (dropChance >= 1.0F || random.nextFloat() <= dropChance) { + // ItemStack output = ItemRecipeCapability.CAP.of(content.content).getItems()[0]; + // // Only apply fortune on ore -> crushed forge hammer recipes + // if (ChemicalHelper.getPrefix(output.getItem()) == TagPrefix.crushed) { + // output = output.copy(); + // if (fortune > 0) output.grow(random.nextInt(fortune)); + // drops.add(output); + // } + // } + // } + // } + // } + // } + // } } public static boolean breakBlockRoutine(ServerPlayer player, ItemStack tool, BlockPos pos, boolean playSound) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java index a447662c3ff..e356a7311fd 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java @@ -12,11 +12,6 @@ import net.minecraftforge.client.model.data.ModelProperty; import net.minecraftforge.common.extensions.IForgeBlockEntity; -/** - * A simple compound Interface for all my TileEntities. - *

- * Also delivers most of the Information about TileEntities. - */ public interface IMachineBlockEntity extends IToolGridHighlight, IPaintable, IForgeBlockEntity { ModelProperty MODEL_DATA_LEVEL = new ModelProperty<>(); @@ -48,9 +43,14 @@ default void scheduleRenderUpdate() { } MachineRenderState getRenderState(); + void setRenderState(MachineRenderState state); + long getOffset(); + int getPaintingColor(); + void setPaintingColor(int color); + int getDefaultPaintingColor(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java index 5793766ee0d..00527c4763e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java @@ -52,7 +52,7 @@ public Level getLevel() { @Override public BlockPos getPos() { - return machine.getPos(); + return machine.getBlockPos(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index c2e9a2fe08c..a230cee4dfb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -1,7 +1,5 @@ package com.gregtechceu.gtceu.api.machine; -import appeng.api.networking.IInWorldGridNodeHost; -import appeng.capabilities.Capabilities; import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; @@ -48,7 +46,6 @@ import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.utils.DummyWorld; -import lombok.Setter; import net.minecraft.ChatFormatting; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.client.Minecraft; @@ -69,7 +66,6 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; @@ -87,8 +83,11 @@ import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.IItemHandlerModifiable; +import appeng.api.networking.IInWorldGridNodeHost; +import appeng.capabilities.Capabilities; import com.mojang.datafixers.util.Pair; import lombok.Getter; +import lombok.Setter; import org.jetbrains.annotations.MustBeInvokedByOverriders; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -105,7 +104,8 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class MetaMachine extends ManagedSyncBlockEntity implements ISyncManaged, IToolable, ITickSubscription, IToolGridHighlight, +public class MetaMachine extends ManagedSyncBlockEntity + implements ISyncManaged, IToolable, ITickSubscription, IToolGridHighlight, IFancyTooltip, IPaintable, IRedstoneSignalMachine { ModelProperty MODEL_DATA_LEVEL = new ModelProperty<>(); @@ -167,7 +167,7 @@ public final void setRemoved() { } @Override - public void load(@NotNull CompoundTag tag) { + public final void load(@NotNull CompoundTag tag) { TagFixer.fixFluidTags(tag); super.load(tag); } @@ -176,10 +176,6 @@ public void load(@NotNull CompoundTag tag) { return super.getLevel(); } - public BlockPos getPos() { - return getBlockPos(); - } - public void setOwnerUUID(UUID uuid) { ownerUUID = uuid; syncDataHolder.markClientSyncFieldDirty("ownerUUID"); @@ -216,7 +212,7 @@ public void scheduleRenderUpdate() { public void scheduleNeighborShapeUpdate() { Level level = getLevel(); - BlockPos pos = getPos(); + BlockPos pos = getBlockPos(); if (level == null) return; @@ -267,7 +263,6 @@ public void notifyBlockUpdate() { } } - ////////////////////////////////////// // ***** Tickable Manager ****// ////////////////////////////////////// @@ -438,7 +433,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand hand, Direction gridSide, BlockHitResult hitResult) { - var controllable = GTCapabilityHelper.getControllable(getLevel(), getPos(), gridSide); + var controllable = GTCapabilityHelper.getControllable(getLevel(), getBlockPos(), gridSide); if (controllable == null) return InteractionResult.PASS; if (!isRemote()) { controllable.setWorkingEnabled(!controllable.isWorkingEnabled()); @@ -503,7 +498,6 @@ protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand // ********** MISC ***********// ////////////////////////////////////// - @Nullable public static MetaMachine getMachine(BlockGetter level, BlockPos pos) { if (level.getBlockEntity(pos) instanceof MetaMachine m) { @@ -524,7 +518,7 @@ public void clearInventory(IItemHandlerModifiable inventory) { ItemStack stackInSlot = inventory.getStackInSlot(i); if (!stackInSlot.isEmpty()) { inventory.setStackInSlot(i, ItemStack.EMPTY); - Block.popResource(Objects.requireNonNull(getLevel()), getPos(), stackInSlot); + Block.popResource(getLevel(), getBlockPos(), stackInSlot); } } } @@ -584,7 +578,8 @@ public MachineDefinition getDefinition() { if (getBlockState().getBlock() instanceof MetaMachineBlock machineBlock) { return machineBlock.getDefinition(); } else { - throw new IllegalStateException("MetaMachine created for an un available block: " + getBlockState().getBlock()); + throw new IllegalStateException( + "MetaMachine created for an un available block: " + getBlockState().getBlock()); } } @@ -641,8 +636,7 @@ public void setFrontFacing(Direction facing) { var blockState = getBlockState(); if (isFacingValid(facing)) { - Objects.requireNonNull(getLevel()).setBlockAndUpdate(getPos(), - blockState.setValue(getRotationState().property, facing)); + getLevel().setBlockAndUpdate(getBlockPos(), blockState.setValue(getRotationState().property, facing)); } if (getLevel() != null && !getLevel().isClientSide) { @@ -678,7 +672,7 @@ public void setUpwardsFacing(Direction upwardsFacing) { var blockState = getBlockState(); if (blockState.getBlock() instanceof MetaMachineBlock && blockState.getValue(GTBlockStateProperties.UPWARDS_FACING) != upwardsFacing) { - Objects.requireNonNull(getLevel()).setBlockAndUpdate(getPos(), + getLevel().setBlockAndUpdate(getBlockPos(), blockState.setValue(GTBlockStateProperties.UPWARDS_FACING, upwardsFacing)); if (getLevel() != null && !getLevel().isClientSide) { notifyBlockUpdate(); @@ -915,7 +909,7 @@ public AABB getRenderBoundingBox() { } public static @NotNull LazyOptional getCapability(MetaMachine machine, @NotNull Capability cap, - @Nullable Direction side) { + @Nullable Direction side) { if (cap == GTCapability.CAPABILITY_COVERABLE) { return GTCapability.CAPABILITY_COVERABLE.orEmpty(cap, LazyOptional.of(machine::getCoverContainer)); } else if (cap == GTCapability.CAPABILITY_TOOLABLE) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java index e9755d25e07..752c4931bd4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java @@ -244,9 +244,9 @@ protected void updateAutoOutputSubscription() { var outputFacingItems = getOutputFacingItems(); var outputFacingFluids = getOutputFacingFluids(); if ((isAutoOutputItems() && !exportItems.isEmpty() && outputFacingItems != null && - GTTransferUtils.hasAdjacentItemHandler(getLevel(), getPos(), outputFacingItems)) || + GTTransferUtils.hasAdjacentItemHandler(getLevel(), getBlockPos(), outputFacingItems)) || (isAutoOutputFluids() && !exportFluids.isEmpty() && outputFacingFluids != null && - GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), outputFacingFluids))) { + GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getBlockPos(), outputFacingFluids))) { autoOutputSubs = subscribeServerTick(autoOutputSubs, this::autoOutput); } else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IEnvironmentalHazardEmitter.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IEnvironmentalHazardEmitter.java index 86bb8b68348..4d4edb0c46e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IEnvironmentalHazardEmitter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IEnvironmentalHazardEmitter.java @@ -34,7 +34,7 @@ default void spreadEnvironmentalHazard() { if (self().getLevel() instanceof ServerLevel serverLevel) { IHazardParticleContainer container = GTCapabilityHelper.getHazardContainer(serverLevel, - self().getPos().relative(self().getFrontFacing()), self().getFrontFacing().getOpposite()); + self().getBlockPos().relative(self().getFrontFacing()), self().getFrontFacing().getOpposite()); if (container != null && container.getHazardCanBeInserted(getConditionToEmit()) > getHazardStrengthPerOperation()) { container.addHazard(getConditionToEmit(), getHazardStrengthPerOperation()); @@ -42,7 +42,7 @@ default void spreadEnvironmentalHazard() { } var savedData = EnvironmentalHazardSavedData.getOrCreate(serverLevel); - savedData.addZone(self().getPos(), getHazardStrengthPerOperation(), true, + savedData.addZone(self().getBlockPos(), getHazardStrengthPerOperation(), true, HazardProperty.HazardTrigger.INHALATION, getConditionToEmit()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java index 8493f730910..7c62d616ba2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java @@ -62,7 +62,7 @@ public interface IExhaustVentMachine extends IMachineFeature { */ default boolean checkVenting() { if (isNeedsVenting()) { - tryDoVenting(self().getLevel(), self().getPos()); + tryDoVenting(self().getLevel(), self().getBlockPos()); } return !isNeedsVenting(); } @@ -73,7 +73,7 @@ default boolean checkVenting() { default boolean isVentingBlocked() { Level level = self().getLevel(); Direction ventingSide = getVentingDirection(); - BlockPos ventingBlockPos = self().getPos().relative(ventingSide); + BlockPos ventingBlockPos = self().getBlockPos().relative(ventingSide); BlockState state = level.getBlockState(ventingBlockPos); return state.canOcclude() || Shapes.blockOccudes(state.getCollisionShape(level, ventingBlockPos), diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExplosionMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExplosionMachine.java index bf1c40a6b88..44f35b1e1c3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExplosionMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExplosionMachine.java @@ -24,7 +24,7 @@ default void checkWeatherOrTerrainExplosion(float explosionPower, double additio if (!shouldWeatherOrTerrainExplosion()) return; var machine = self(); var level = machine.getLevel(); - var pos = machine.getPos(); + var pos = machine.getBlockPos(); if (GTValues.RNG.nextInt(1000) == 0) { for (Direction side : GTUtil.DIRECTIONS) { var fluidState = level.getBlockState(pos.relative(side)).getFluidState(); @@ -47,7 +47,7 @@ default void checkWeatherOrTerrainExplosion(float explosionPower, double additio } default void doExplosion(float explosionPower) { - doExplosion(self().getPos(), explosionPower); + doExplosion(self().getBlockPos(), explosionPower); } default void doExplosion(BlockPos pos, float explosionPower) { @@ -62,7 +62,7 @@ default void doExplosion(BlockPos pos, float explosionPower) { default void setOnFire(double additionalFireChance) { var machine = self(); var level = machine.getLevel(); - var pos = machine.getPos(); + var pos = machine.getBlockPos(); boolean isFirstFireSpawned = false; for (Direction side : GTUtil.DIRECTIONS) { if (level.isEmptyBlock(pos.relative(side))) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ILocalizedHazardEmitter.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ILocalizedHazardEmitter.java index 41144c5946c..f13c10b0af1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ILocalizedHazardEmitter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ILocalizedHazardEmitter.java @@ -34,7 +34,7 @@ default void spreadLocalizedHazard() { if (self().getLevel() instanceof ServerLevel serverLevel) { IHazardParticleContainer container = GTCapabilityHelper.getHazardContainer(serverLevel, - self().getPos().relative(self().getFrontFacing()), self().getFrontFacing().getOpposite()); + self().getBlockPos().relative(self().getFrontFacing()), self().getFrontFacing().getOpposite()); if (container != null && container.getHazardCanBeInserted(getConditionToEmit()) > getHazardSizePerOperation()) { container.addHazard(getConditionToEmit(), getHazardSizePerOperation()); @@ -42,7 +42,7 @@ default void spreadLocalizedHazard() { } var savedData = LocalizedHazardSavedData.getOrCreate(serverLevel); - savedData.addSphericalZone(self().getPos(), getHazardSizePerOperation(), false, + savedData.addSphericalZone(self().getBlockPos(), getHazardSizePerOperation(), false, HazardProperty.HazardTrigger.INHALATION, getConditionToEmit()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMufflerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMufflerMachine.java index 90a20071f83..788d7fdec68 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMufflerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMufflerMachine.java @@ -26,14 +26,14 @@ public interface IMufflerMachine extends IMultiPart, IEnvironmentalHazardEmitter * @return true if front face is free and contains only air blocks in 1x1 area OR has a duct block on it. */ default boolean isFrontFaceFree() { - var frontPos = self().getPos().relative(self().getFrontFacing()); + var frontPos = self().getBlockPos().relative(self().getFrontFacing()); return self().getLevel().getBlockState(frontPos).isAir() || GTCapabilityHelper.getHazardContainer(self().getLevel(), frontPos, self().getFrontFacing().getOpposite()) != null; } default void emitPollutionParticles() { - var pos = self().getPos(); + var pos = self().getBlockPos(); var facing = self().getFrontFacing(); IHazardParticleContainer container = GTCapabilityHelper.getHazardContainer(self().getLevel(), diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java index 3f46cf2765b..58ba7ce2a43 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java @@ -150,7 +150,7 @@ default void damageRotor(int damageAmount) { default boolean isFrontFaceFree() { final var facing = self().getFrontFacing(); final var up = facing.getAxis() == Direction.Axis.Y ? Direction.NORTH : Direction.UP; - final var pos = self().getPos(); + final var pos = self().getBlockPos(); final var level = self().getLevel(); for (int dLeft = -1; dLeft < 2; dLeft++) { for (int dUp = -1; dUp < 2; dUp++) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/CoilWorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/CoilWorkableElectricMultiblockMachine.java index 9d6fa1bb052..a4ea83d5a11 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/CoilWorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/CoilWorkableElectricMultiblockMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.block.ICoilType; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.common.block.CoilBlock; import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java index 4b0ade89c21..fee56e23d70 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IParallelHatch; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; @@ -96,7 +95,7 @@ public void onUnload() { @NotNull public MultiblockState getMultiblockState() { if (multiblockState == null) { - multiblockState = new MultiblockState(getLevel(), getPos()); + multiblockState = new MultiblockState(getLevel(), getBlockPos()); } return multiblockState; } @@ -119,7 +118,7 @@ protected void onPartsUpdated() { protected void updatePartPositions() { this.partPositions = this.parts.isEmpty() ? new BlockPos[0] : - this.parts.stream().map(part -> part.self().getPos()).toArray(BlockPos[]::new); + this.parts.stream().map(part -> part.self().getBlockPos()).toArray(BlockPos[]::new); syncDataHolder.markClientSyncFieldDirty("partPositions"); } @@ -150,7 +149,7 @@ public Optional getParallelHatch() { @Override public void asyncCheckPattern(long periodID) { - if ((getMultiblockState().hasError() || !isFormed) && (getHolder().getOffset() + periodID) % 4 == 0 && + if ((getMultiblockState().hasError() || !isFormed) && (getOffset() + periodID) % 4 == 0 && checkPatternWithTryLock()) { // per second if (getLevel() instanceof ServerLevel serverLevel) { serverLevel.getServer().execute(() -> { @@ -253,7 +252,7 @@ public void setUpwardsFacing(@NotNull Direction upwardsFacing) { var blockState = getBlockState(); if (blockState.getBlock() instanceof MetaMachineBlock && blockState.getValue(GTBlockStateProperties.UPWARDS_FACING) != upwardsFacing) { - getLevel().setBlockAndUpdate(getPos(), + getLevel().setBlockAndUpdate(getBlockPos(), blockState.setValue(GTBlockStateProperties.UPWARDS_FACING, upwardsFacing)); if (getLevel() != null && !getLevel().isClientSide) { notifyBlockUpdate(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java index 5daf4d2ee4d..0b7802a67c8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IOverclockMachine; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.syncsystem.annotations.SaveField; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java index 3b88aef8769..a539f87542b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java @@ -9,7 +9,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.*; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.feature.IOverclockMachine; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java index 38e6bd2a562..43a14b50c53 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.ICleanroomProvider; import com.gregtechceu.gtceu.api.machine.feature.IMufflableMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; @@ -127,7 +126,7 @@ public void onStructureFormed() { Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { - IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); + IO io = ioMap.getOrDefault(part.self().getBlockPos().asLong(), IO.BOTH); if (io == IO.NONE) continue; var handlerLists = part.getRecipeHandlers(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java index fa83664ec7b..f4e4630d4da 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; @@ -111,7 +110,7 @@ public void onUnload() { // Need to copy if > 1 so that we can call removedFromController safely without CME Set toIter = controllers.size() > 1 ? new ObjectOpenHashSet<>(controllers) : controllers; for (IMultiController controller : toIter) { - if (serverLevel.isLoaded(controller.self().getPos())) { + if (serverLevel.isLoaded(controller.self().getBlockPos())) { removedFromController(controller); controller.onPartUnload(); } @@ -128,7 +127,7 @@ public void onUnload() { @MustBeInvokedByOverriders @Override public void removedFromController(IMultiController controller) { - controllerPositions.remove(controller.self().getPos()); + controllerPositions.remove(controller.self().getBlockPos()); controllers.remove(controller); if (controllers.isEmpty()) { @@ -143,7 +142,7 @@ public void removedFromController(IMultiController controller) { @MustBeInvokedByOverriders @Override public void addedToController(IMultiController controller) { - controllerPositions.add(controller.self().getPos()); + controllerPositions.add(controller.self().getBlockPos()); controllers.add(controller); syncDataHolder.markClientSyncFieldDirty("controllerPositions"); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredIOPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredIOPartMachine.java index 96947d11fb0..d27f64e6476 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredIOPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredIOPartMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.syncsystem.annotations.RerenderOnChanged; import com.gregtechceu.gtceu.syncsystem.annotations.SaveField; import com.gregtechceu.gtceu.syncsystem.annotations.SyncToClient; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredPartMachine.java index 14a7c787b0c..e3af3eda8b0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredPartMachine.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.api.machine.multiblock.part; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java index 906b101f498..91409caea89 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; import com.gregtechceu.gtceu.api.gui.widget.PredicatedImageWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IExhaustVentMachine; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java index ab74a8c926e..14137c88bfa 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; import com.gregtechceu.gtceu.api.gui.widget.TankWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; @@ -136,7 +135,7 @@ public void onNeighborChanged(Block block, BlockPos fromPos, boolean isMoving) { protected void updateAutoOutputSubscription() { if (Direction.stream().filter(direction -> direction != getFrontFacing() && direction != Direction.DOWN) - .anyMatch(direction -> GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), direction))) { + .anyMatch(direction -> GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getBlockPos(), direction))) { autoOutputSubs = subscribeServerTick(autoOutputSubs, this::autoOutput); } else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); @@ -148,7 +147,7 @@ protected void autoOutput() { if (getOffsetTimer() % 5 == 0) { steamTank.exportToNearby(Direction.stream() .filter(direction -> direction != getFrontFacing() && direction != Direction.DOWN) - .filter(direction -> GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), direction)) + .filter(direction -> GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getBlockPos(), direction)) .toArray(Direction[]::new)); updateAutoOutputSubscription(); } @@ -198,9 +197,9 @@ protected void updateCurrentTemperature() { doExplosion(2.0f); } else this.hasNoWater = !hasDrainedWater; if (filledSteam == 0 && hasDrainedWater && getLevel() instanceof ServerLevel serverLevel) { - final float x = getPos().getX() + 0.5F; - final float y = getPos().getY() + 0.5F; - final float z = getPos().getZ() + 0.5F; + final float x = getBlockPos().getX() + 0.5F; + final float y = getBlockPos().getY() + 0.5F; + final float z = getBlockPos().getZ() + 0.5F; serverLevel.sendParticles(ParticleTypes.CLOUD, x + getFrontFacing().getStepX() * 0.6, @@ -341,7 +340,7 @@ public ModularUI createUI(Player entityPlayer) { @Override public void animateTick(RandomSource random) { if (isActive()) { - final BlockPos pos = getPos(); + final BlockPos pos = getBlockPos(); float x = pos.getX() + 0.5F; float z = pos.getZ() + 0.5F; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java index a91d13c5194..9c1f2be2357 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java index a40ba5b99ee..e5c0bfc601d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.item.tool.GTToolType; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.ICleanroomProvider; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.feature.IMufflableMachine; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/FluidTankProxyTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/FluidTankProxyTrait.java index 607ae9ca84b..b9fc462b299 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/FluidTankProxyTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/FluidTankProxyTrait.java @@ -120,7 +120,7 @@ public boolean isEmpty() { public void exportToNearby(Direction... facings) { if (isEmpty()) return; var level = getMachine().getLevel(); - var pos = getMachine().getPos(); + var pos = getMachine().getBlockPos(); for (Direction facing : facings) { var filter = getMachine().getFluidCapFilter(facing, IO.OUT); GTTransferUtils.getAdjacentFluidHandler(level, pos, facing) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ItemHandlerProxyTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ItemHandlerProxyTrait.java index b2bb0a8e7e0..6aab403d666 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ItemHandlerProxyTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ItemHandlerProxyTrait.java @@ -104,7 +104,7 @@ public boolean isEmpty() { public void exportToNearby(Direction... facings) { if (isEmpty()) return; var level = getMachine().getLevel(); - var pos = getMachine().getPos(); + var pos = getMachine().getBlockPos(); for (Direction facing : facings) { var filter = getMachine().getItemCapFilter(facing, IO.OUT); GTTransferUtils.getAdjacentItemHandler(level, pos, facing) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableComputationContainer.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableComputationContainer.java index c32067261d8..2ce4bbd3241 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableComputationContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableComputationContainer.java @@ -254,7 +254,7 @@ public IOpticalComputationProvider getComputationProvider() { } } for (Direction direction : GTUtil.DIRECTIONS) { - BlockEntity blockEntity = machine.getLevel().getBlockEntity(machine.getPos().relative(direction)); + BlockEntity blockEntity = machine.getLevel().getBlockEntity(machine.getBlockPos().relative(direction)); if (blockEntity == null) continue; // noinspection DataFlowIssue can be null just fine. @@ -271,7 +271,7 @@ public IOpticalComputationProvider getComputationProvider() { @Nullable private IOpticalComputationProvider getOpticalNetProvider() { for (Direction direction : GTUtil.DIRECTIONS) { - BlockEntity blockEntity = machine.getLevel().getBlockEntity(machine.getPos().relative(direction)); + BlockEntity blockEntity = machine.getLevel().getBlockEntity(machine.getBlockPos().relative(direction)); if (blockEntity instanceof OpticalPipeBlockEntity) { return blockEntity.getCapability(GTCapability.CAPABILITY_COMPUTATION_PROVIDER, direction.getOpposite()) .orElse(null); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableEnergyContainer.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableEnergyContainer.java index 46cc1872da9..d8ab29624ed 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableEnergyContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableEnergyContainer.java @@ -164,7 +164,7 @@ public void serverTick() { if (!outputsEnergy(side)) continue; var oppositeSide = side.getOpposite(); var energyContainer = GTCapabilityHelper.getEnergyContainer(machine.getLevel(), - machine.getPos().relative(side), oppositeSide); + machine.getBlockPos().relative(side), oppositeSide); if (energyContainer != null && energyContainer.inputsEnergy(oppositeSide)) { amperesUsed += energyContainer.acceptEnergyFromNetwork(oppositeSide, outputVoltage, outputAmperes - amperesUsed); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java index 22235f5eb59..15b16f284d2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java @@ -308,7 +308,7 @@ public boolean isEmpty() { public void exportToNearby(@NotNull Direction... facings) { if (isEmpty()) return; var level = getMachine().getLevel(); - var pos = getMachine().getPos(); + var pos = getMachine().getBlockPos(); for (Direction facing : facings) { var filter = getMachine().getFluidCapFilter(facing, IO.OUT); GTTransferUtils.getAdjacentFluidHandler(level, pos, facing) @@ -318,7 +318,7 @@ public void exportToNearby(@NotNull Direction... facings) { public void importFromNearby(@NotNull Direction... facings) { var level = getMachine().getLevel(); - var pos = getMachine().getPos(); + var pos = getMachine().getBlockPos(); for (Direction facing : facings) { var filter = getMachine().getFluidCapFilter(facing, IO.IN); GTTransferUtils.getAdjacentFluidHandler(level, pos, facing) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java index fe3433ebd8c..84e4074d1eb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java @@ -247,7 +247,7 @@ public boolean isEmpty() { public void exportToNearby(@NotNull Direction... facings) { if (isEmpty()) return; var level = getMachine().getLevel(); - var pos = getMachine().getPos(); + var pos = getMachine().getBlockPos(); for (Direction facing : facings) { var filter = getMachine().getItemCapFilter(facing, IO.OUT); GTTransferUtils.getAdjacentItemHandler(level, pos, facing) @@ -257,7 +257,7 @@ public void exportToNearby(@NotNull Direction... facings) { public void importFromNearby(@NotNull Direction... facings) { var level = getMachine().getLevel(); - var pos = getMachine().getPos(); + var pos = getMachine().getBlockPos(); for (Direction facing : facings) { var filter = getMachine().getItemCapFilter(facing, IO.IN); GTTransferUtils.getAdjacentItemHandler(level, pos, facing) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableLaserContainer.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableLaserContainer.java index 23229f60c2d..acba206d27e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableLaserContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableLaserContainer.java @@ -38,10 +38,10 @@ public void serverTick() { long amperesUsed = 0; for (Direction side : GTUtil.DIRECTIONS) { if (!outputsEnergy(side)) continue; - BlockEntity tileEntity = getMachine().getLevel().getBlockEntity(getMachine().getPos().relative(side)); + BlockEntity tileEntity = getMachine().getLevel().getBlockEntity(getMachine().getBlockPos().relative(side)); Direction oppositeSide = side.getOpposite(); ILaserContainer laserContainer = GTCapabilityHelper.getLaser(getMachine().getLevel(), - getMachine().getPos().relative(side), oppositeSide); + getMachine().getBlockPos().relative(side), oppositeSide); if (tileEntity != null && laserContainer != null) { if (laserContainer == null || !laserContainer.inputsEnergy(oppositeSide)) continue; amperesUsed += laserContainer.acceptEnergyFromNetwork(oppositeSide, outputVoltage, diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index 74bdc9b1d02..c953e0141cb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -568,9 +568,9 @@ public void updateSound() { if (sound != null) { workingSound = sound.playAutoReleasedSound( () -> machine.shouldWorkingPlaySound() && isWorking() && !getMachine().isRemoved() && - getMachine().getLevel().isLoaded(getMachine().getPos()) && - MetaMachine.getMachine(getMachine().getLevel(), getMachine().getPos()) == getMachine(), - getMachine().getPos(), true, 0, 1, 1); + getMachine().getLevel().isLoaded(getMachine().getBlockPos()) && + MetaMachine.getMachine(getMachine().getLevel(), getMachine().getBlockPos()) == getMachine(), + getMachine().getBlockPos(), true, 0, 1, 1); } } else if (workingSound instanceof AutoReleasedSound soundEntry) { soundEntry.release(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java index 0942643a042..346add8ca7f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.block.ActiveBlock; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; @@ -94,7 +93,7 @@ public boolean checkPatternAt(MultiblockState worldState, boolean savePredicate) worldState.setError(new PatternStringError("no controller found")); return false; } - BlockPos centerPos = controller.self().getPos(); + BlockPos centerPos = controller.self().getBlockPos(); Direction frontFacing = controller.self().getFrontFacing(); Direction[] facings = controller.hasFrontFacing() ? new Direction[] { frontFacing } : new Direction[] { Direction.SOUTH, Direction.NORTH, Direction.EAST, Direction.WEST }; @@ -149,8 +148,7 @@ public boolean checkPatternAt(MultiblockState worldState, BlockPos centerPos, Di } } boolean canPartShared = true; - if (worldState.getTileEntity() instanceof IMachineBlockEntity machineBlockEntity && - machineBlockEntity.getMetaMachine() instanceof IMultiPart part) { // add detected parts + if (worldState.getTileEntity() instanceof IMultiPart part) { // add detected parts if (!predicate.isAny()) { if (part.isFormed() && !part.canShared() && !part.hasController(worldState.controllerPos)) { // check part can be shared @@ -224,7 +222,7 @@ public void autoBuild(Player player, MultiblockState worldState) { int minZ = -centerOffset[4]; worldState.clean(); IMultiController controller = worldState.getController(); - BlockPos centerPos = controller.self().getPos(); + BlockPos centerPos = controller.self().getBlockPos(); Direction facing = controller.self().getFrontFacing(); Direction upwardsFacing = controller.self().getUpwardsFacing(); boolean isFlipped = controller.self().isFlipped(); @@ -345,8 +343,8 @@ public void autoBuild(Player player, MultiblockState worldState) { handler.extractItem(foundSlot, 1, false); } } - if (world.getBlockEntity(pos) instanceof IMachineBlockEntity machineBlockEntity) { - blocks.put(pos, machineBlockEntity.getMetaMachine()); + if (world.getBlockEntity(pos) instanceof MetaMachine metaMachine) { + blocks.put(pos, metaMachine); } else { blocks.put(pos, world.getBlockState(pos)); } @@ -502,8 +500,7 @@ public BlockInfo[][][] getPreview(int[] repetition) { if (blockInfo == null || blockInfo.getBlockState().getBlock() == Blocks.AIR) { if (blocks.get(pos).getBlockState().getBlock() instanceof MetaMachineBlock machineBlock) { if (machineBlock.newBlockEntity(BlockPos.ZERO, - machineBlock.defaultBlockState()) instanceof IMachineBlockEntity machineBlockEntity) { - var machine = machineBlockEntity.getMetaMachine(); + machineBlock.defaultBlockState()) instanceof MetaMachine machine) { if (machine instanceof IMultiController) { return false; } else { diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockShapeInfo.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockShapeInfo.java index 95180285147..cc1c36353af 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockShapeInfo.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockShapeInfo.java @@ -48,8 +48,8 @@ public ShapeInfoBuilder where(char symbol, Supplier public ShapeInfoBuilder where(char symbol, MetaMachineBlock machine, Direction facing) { return where(symbol, machine.getRotationState() == RotationState.NONE ? - machine.self().defaultBlockState() : - machine.self().defaultBlockState().setValue(machine.getRotationState().property, facing)); + machine.defaultBlockState() : + machine.defaultBlockState().setValue(machine.getRotationState().property, facing)); } private BlockInfo[][][] bake() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java index e310177a82a..926b00faea4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java @@ -86,8 +86,7 @@ public boolean update(BlockPos posIn, TraceabilityPredicate predicate) { public IMultiController getController() { if (world.isLoaded(controllerPos)) { - if (world.getBlockEntity(controllerPos) instanceof IMachineBlockEntity machineBlockEntity && - machineBlockEntity.getMetaMachine() instanceof IMultiController controller) { + if (world.getBlockEntity(controllerPos) instanceof IMultiController controller) { return lastController = controller; } } else { diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java index adfa8c1a8f6..55c816d8620 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java @@ -63,7 +63,7 @@ public static TraceabilityPredicate blocks(Block... blocks) { public static TraceabilityPredicate blocks(MetaMachineBlock... blocks) { return new TraceabilityPredicate( - new PredicateBlocks(Arrays.stream(blocks).map(MetaMachineBlock::self).toArray(Block[]::new))); + new PredicateBlocks(Arrays.stream(blocks).toArray(Block[]::new))); } public static TraceabilityPredicate machines(MachineDefinition... definitions) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/ILDEndpoint.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/ILDEndpoint.java index 55f28fee014..17cea8f68f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/ILDEndpoint.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/ILDEndpoint.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.pipenet.longdistance; import com.gregtechceu.gtceu.api.capability.recipe.IO; + import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.Level; @@ -72,7 +73,7 @@ default boolean isOutput() { /** * @return pos in world */ - BlockPos getPos(); + BlockPos getBlockPos(); Level getLevel(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/LongDistanceNetwork.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/LongDistanceNetwork.java index beb40bc6099..cf59ed6c42f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/LongDistanceNetwork.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/LongDistanceNetwork.java @@ -128,7 +128,7 @@ public void onRemoveEndpoint(ILDEndpoint endpoint) { if (this.endpoints.remove(endpoint)) { invalidateEndpoints(); } - onRemovePipe(endpoint.getPos()); + onRemovePipe(endpoint.getBlockPos()); } /** @@ -144,8 +144,8 @@ public void onPlacePipe(BlockPos pos) { */ public void onPlaceEndpoint(ILDEndpoint endpoint) { addEndpoint(endpoint); - this.longDistancePipeBlocks.add(endpoint.getPos()); - this.world.putNetwork(endpoint.getPos(), this); + this.longDistancePipeBlocks.add(endpoint.getBlockPos()); + this.world.putNetwork(endpoint.getBlockPos(), this); } /** @@ -205,7 +205,7 @@ public ILDEndpoint getOtherEndpoint(ILDEndpoint endpoint) { int thisIndex = this.endpoints.indexOf(endpoint); if (thisIndex < 0) { // endpoint not found in this network, something is wrong, recalculate network - recalculateNetwork(Collections.singleton(endpoint.getPos())); + recalculateNetwork(Collections.singleton(endpoint.getBlockPos())); return null; } @@ -441,7 +441,7 @@ public CompoundTag save(@NotNull CompoundTag nbtTagCompound) { ListTag endpoints = new ListTag(); tag.put("endpoints", endpoints); for (ILDEndpoint endpoint : network.endpoints) { - endpoints.add(LongTag.valueOf(endpoint.getPos().asLong())); + endpoints.add(LongTag.valueOf(endpoint.getBlockPos().asLong())); } } nbtTagCompound.put("nets", list); diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/LongDistancePipeType.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/LongDistancePipeType.java index 2983ff3bcbb..ce42f98570d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/LongDistancePipeType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/longdistance/LongDistancePipeType.java @@ -57,9 +57,9 @@ public int getMinLength() { } public boolean satisfiesMinLength(ILDEndpoint endpoint1, ILDEndpoint endpoint2) { - BlockPos p = endpoint2.getPos(); + BlockPos p = endpoint2.getBlockPos(); int minLength = getMinLength(); - return endpoint1 != endpoint2 && endpoint1.getPos().distSqr(p) >= minLength * minLength; + return endpoint1 != endpoint2 && endpoint1.getBlockPos().distSqr(p) >= minLength * minLength; } @NotNull diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java index 2ea084651e6..70de7fa3336 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java @@ -5,16 +5,13 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.item.MetaMachineItem; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; -import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.registry.registrate.forge.GTFluidBuilder; import com.gregtechceu.gtceu.core.mixins.registrate.AbstractRegistrateAccessor; import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; @@ -24,9 +21,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.IEventBus; @@ -45,7 +40,6 @@ import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullFunction; import com.tterrag.registrate.util.nullness.NonNullSupplier; -import org.apache.commons.lang3.function.TriFunction; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -134,24 +128,24 @@ public MachineBuilder machine blockFactory, itemFactory, blockEntityFactory); } - public MachineBuilder machine(String name, Function blockEntityFactory) { + public MachineBuilder machine(String name, + Function blockEntityFactory) { return new MachineBuilder<>(this, name, MachineDefinition::new, MetaMachineBlock::new, MetaMachineItem::new, blockEntityFactory); } public MultiblockMachineBuilder multiblock(String name, - Function metaMachine, BiFunction blockFactory, BiFunction itemFactory, - TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { - return new MultiblockMachineBuilder(this, name, metaMachine, + Function blockEntityFactory) { + return new MultiblockMachineBuilder(this, name, blockFactory, itemFactory, blockEntityFactory); } public MultiblockMachineBuilder multiblock(String name, - Function metaMachine) { - return new MultiblockMachineBuilder(this, name, metaMachine, - MetaMachineBlock::new, MetaMachineItem::new, MetaMachineBlockEntity::new); + Function blockEntityFactory) { + return new MultiblockMachineBuilder(this, name, MetaMachineBlock::new, MetaMachineItem::new, + blockEntityFactory); } public SoundEntryBuilder sound(String name) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index dfff3086040..021dcb3f54e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -550,7 +550,8 @@ public DEFINITION register() { var item = itemBuilder.register(); var blockEntityBuilder = registrate - .blockEntity((type, pos, state) -> blockEntityFactory.apply(new BlockEntityCreationInfo(type, pos, state))) + .blockEntity( + (type, pos, state) -> blockEntityFactory.apply(new BlockEntityCreationInfo(type, pos, state))) .onRegister(onBlockEntityRegister) .validBlock(block); if (hasBER) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java index d6ff180ce39..21abaf12f75 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java @@ -1,11 +1,11 @@ package com.gregtechceu.gtceu.api.registry.registrate; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; import com.gregtechceu.gtceu.api.item.MetaMachineItem; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; @@ -23,7 +23,6 @@ import com.gregtechceu.gtceu.utils.memoization.GTMemoizer; import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -83,11 +82,10 @@ public class MultiblockMachineBuilder extends MachineBuilder> additionalDisplay = (m, l) -> {}; public MultiblockMachineBuilder(GTRegistrate registrate, String name, - Function metaMachine, BiFunction blockFactory, BiFunction itemFactory, - TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { - super(registrate, name, MultiblockMachineDefinition::new, metaMachine::apply, blockFactory, + Function blockEntityFactory) { + super(registrate, name, MultiblockMachineDefinition::new, blockFactory, itemFactory, blockEntityFactory); allowExtendedFacing(true); allowCoverOnFront(true); @@ -116,11 +114,6 @@ public MultiblockMachineBuilder recoveryStacks(Supplier stacks) { return this; } - @Override - public MultiblockMachineBuilder machine(Function metaMachine) { - return (MultiblockMachineBuilder) super.machine(metaMachine); - } - @Override public MultiblockMachineBuilder model(@Nullable MachineBuilder.ModelInitializer model) { return (MultiblockMachineBuilder) super.model(model); diff --git a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java index 2a3f24f87ce..69db6523b79 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.block.BlockAttributes; import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.client.EnvironmentalHazardClientHandler; import com.gregtechceu.gtceu.client.TooltipsHandler; diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java index 3b95701b5cd..554697b1d0c 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java @@ -51,7 +51,7 @@ default boolean shouldRenderOffScreen(T machine) { } default boolean shouldRender(T machine, Vec3 cameraPos) { - return Vec3.atCenterOf(machine.self().getPos()).closerThan(cameraPos, this.getViewDistance()); + return Vec3.atCenterOf(machine.self().getBlockPos()).closerThan(cameraPos, this.getViewDistance()); } default int getViewDistance() { @@ -59,7 +59,7 @@ default int getViewDistance() { } default AABB getRenderBoundingBox(T machine) { - BlockPos pos = machine.self().getPos(); + BlockPos pos = machine.self().getBlockPos(); return new AABB(pos.offset(-1, 0, -1), pos.offset(2, 2, 2)); } diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java index c20eb618e68..73ad55e4549 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java @@ -390,14 +390,13 @@ public boolean isCustomRenderer() { public void render(@NotNull BlockEntity blockEntity, float partialTick, @NotNull PoseStack poseStack, @NotNull MultiBufferSource buffer, int packedLight, int packedOverlay) { - if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return; - if (machineBE.getDefinition() != getDefinition()) return; - ICoverableRenderer.super.renderDynamicCovers(machineBE.getMetaMachine(), partialTick, poseStack, buffer, + if (!(blockEntity instanceof MetaMachine machine)) return; + if (machine.getDefinition() != getDefinition()) return; + ICoverableRenderer.super.renderDynamicCovers(machine, partialTick, poseStack, buffer, packedLight, packedOverlay); if (dynamicRenders.isEmpty()) return; - MetaMachine machine = machineBE.getMetaMachine(); Vec3 cameraPos = Minecraft.getInstance().gameRenderer.getMainCamera().getPosition(); for (DynamicRender model : dynamicRenders) { if (!model.shouldRender(machine, cameraPos)) { @@ -422,11 +421,10 @@ public void renderByItem(ItemStack stack, ItemDisplayContext displayContext, public AABB getRenderBoundingBox(BlockEntity blockEntity) { AABB bounds = IBlockEntityRendererBakedModel.super.getRenderBoundingBox(blockEntity); - if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return bounds; - if (machineBE.getDefinition() != getDefinition()) return bounds; + if (!(blockEntity instanceof MetaMachine machine)) return bounds; + if (machine.getDefinition() != getDefinition()) return bounds; if (dynamicRenders.isEmpty()) return bounds; - MetaMachine machine = machineBE.getMetaMachine(); for (DynamicRender model : dynamicRenders) { bounds = bounds.minmax(model.getRenderBoundingBox(machine)); } @@ -436,11 +434,10 @@ public AABB getRenderBoundingBox(BlockEntity blockEntity) { @SuppressWarnings({ "rawtypes", "unchecked" }) @Override public boolean shouldRenderOffScreen(BlockEntity blockEntity) { - if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return false; - if (machineBE.getDefinition() != getDefinition()) return false; + if (!(blockEntity instanceof MetaMachine machine)) return false; + if (machine.getDefinition() != getDefinition()) return false; if (dynamicRenders.isEmpty()) return false; - MetaMachine machine = machineBE.getMetaMachine(); for (DynamicRender render : dynamicRenders) { if (render.shouldRenderOffScreen(machine)) return true; } @@ -450,12 +447,11 @@ public boolean shouldRenderOffScreen(BlockEntity blockEntity) { @SuppressWarnings({ "rawtypes", "unchecked" }) @Override public boolean shouldRender(BlockEntity blockEntity, @NotNull Vec3 cameraPos) { - if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return false; - if (machineBE.getDefinition() != getDefinition()) return false; - if (machineBE.getMetaMachine().getCoverContainer().hasDynamicCovers()) return true; + if (!(blockEntity instanceof MetaMachine machine)) return false; + if (machine.getDefinition() != getDefinition()) return false; + if (machine.getCoverContainer().hasDynamicCovers()) return true; if (dynamicRenders.isEmpty()) return false; - MetaMachine machine = machineBE.getMetaMachine(); for (DynamicRender model : dynamicRenders) { if (model.shouldRender(machine, Minecraft.getInstance().gameRenderer.getMainCamera().getPosition())) { return true; diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java index 0d2bc36aa14..24043fe27e2 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java @@ -195,9 +195,8 @@ public static void showPreview(BlockPos pos, MultiblockControllerMachine control BlockPos realPos = pos.offset(offset); - if (column[z].getBlockEntity(realPos) instanceof IMachineBlockEntity holder && - holder.getMetaMachine() instanceof IMultiController cont) { - holder.self().setLevel(LEVEL); + if (column[z].getBlockEntity(realPos) instanceof IMultiController cont) { + cont.self().setLevel(LEVEL); controllerBase = cont; } else { blockMap.put(realPos, BlockInfo.fromBlockState(blockState)); @@ -208,7 +207,7 @@ public static void showPreview(BlockPos pos, MultiblockControllerMachine control LEVEL.addBlocks(blockMap); if (controllerBase != null) { - LEVEL.setInnerBlockEntity(controllerBase.self().holder.self()); + LEVEL.setInnerBlockEntity(controllerBase.self()); } prepareBuffers(LEVEL, blockMap.keySet(), duration); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java index 850a0c64c55..c208a90c6df 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java @@ -106,10 +106,10 @@ public void renderPartModel(List quads, IMultiController controller, this.casingModel = ModelUtils.getModelForState(casing); } - BlockPos partPos = part.self().getPos(); + BlockPos partPos = part.self().getBlockPos(); MultiblockControllerMachine machine = controller.self(); - BlockPos controllerPos = machine.getPos(); + BlockPos controllerPos = machine.getBlockPos(); Direction multiFront = machine.getFrontFacing(); Direction multiUpward = machine.getUpwardsFacing(); boolean flipped = machine.isFlipped(); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/CentralMonitorRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/CentralMonitorRender.java index 8ce0183cafc..6e04229890f 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/CentralMonitorRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/CentralMonitorRender.java @@ -75,7 +75,7 @@ public boolean shouldRender(CentralMonitorMachine machine, Vec3 cameraPos) { @Override public AABB getRenderBoundingBox(CentralMonitorMachine machine) { - BlockPos pos = machine.getPos(); + BlockPos pos = machine.getBlockPos(); BoundingBox bounds = new BoundingBox( pos.getX() - 1, pos.getY() - 1, pos.getZ() - 1, pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1); @@ -85,7 +85,7 @@ public AABB getRenderBoundingBox(CentralMonitorMachine machine) { IMonitorComponent component = machine.getComponent(row, col); if (component != null && component.isMonitor()) { // noinspection deprecation - bounds.encapsulate(component.getPos()); + bounds.encapsulate(component.getBlockPos()); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java index 590e0f4c744..7c1d4b4061a 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java @@ -111,7 +111,7 @@ public void render(IFluidRenderMulti machine, float partialTick, if (dir.getAxis() != Direction.Axis.Y) dir = dir.getOpposite(); fluidBlockRenderer.drawPlane(dir, machine.getFluidOffsets(), pose, consumer, cachedFluid, - RenderUtil.FluidTextureType.STILL, packedOverlay, machine.self().getPos()); + RenderUtil.FluidTextureType.STILL, packedOverlay, machine.self().getBlockPos()); poseStack.popPose(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FusionRingRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FusionRingRender.java index fb5e254216e..c23337bbb61 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FusionRingRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FusionRingRender.java @@ -108,6 +108,6 @@ public int getViewDistance() { @Override public AABB getRenderBoundingBox(FusionReactorMachine machine) { - return new AABB(machine.getPos()).inflate(getViewDistance() / 2.0D); + return new AABB(machine.getBlockPos()).inflate(getViewDistance() / 2.0D); } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/GrowingPlantRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/GrowingPlantRender.java index 9608285fdb1..2eebe91ad4f 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/GrowingPlantRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/GrowingPlantRender.java @@ -92,7 +92,7 @@ public int getViewDistance() { @Override public AABB getRenderBoundingBox(IRecipeLogicMachine machine) { - final BlockPos pos = machine.self().getPos(); + final BlockPos pos = machine.self().getBlockPos(); List positions = new ArrayList<>(); Collections.addAll(positions, pos.offset(-1, 0, -1), pos.offset(2, 2, 2)); @@ -143,7 +143,7 @@ public void render(IRecipeLogicMachine rlm, float partialTick, PoseStack poseSta MetaMachine machine = rlm.self(); Level level = machine.getLevel(); assert level != null; - BlockPos machinePos = machine.getPos(); + BlockPos machinePos = machine.getBlockPos(); var statesToDraw = mode.renderFunction().configureState(level, state, progress); diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/DuctPipeBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/DuctPipeBlock.java index b2efe57cb08..c7e7fd5b683 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/DuctPipeBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/DuctPipeBlock.java @@ -95,7 +95,8 @@ public boolean canPipeConnectToBlock(IPipeNode @Nullable BlockEntity tile) { return tile != null && (tile.getCapability(GTCapability.CAPABILITY_HAZARD_CONTAINER, side.getOpposite()).isPresent() || - tile instanceof MetaMachine metaMachine && (tile instanceof IEnvironmentalHazardCleaner || tile instanceof IEnvironmentalHazardEmitter)); + tile instanceof MetaMachine metaMachine && (tile instanceof IEnvironmentalHazardCleaner || + tile instanceof IEnvironmentalHazardEmitter)); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/blockentity/DuctPipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/common/blockentity/DuctPipeBlockEntity.java index d2e27a69840..da196a22908 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/blockentity/DuctPipeBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/common/blockentity/DuctPipeBlockEntity.java @@ -117,9 +117,8 @@ public boolean canAttachTo(Direction side) { BlockPos relative = getBlockPos().relative(side); return GTCapabilityHelper.getHazardContainer(level, relative, side.getOpposite()) != null || - (level.getBlockEntity(relative) instanceof IMachineBlockEntity machineBlockEntity && - (machineBlockEntity.getMetaMachine() instanceof IEnvironmentalHazardCleaner || - machineBlockEntity.getMetaMachine() instanceof IEnvironmentalHazardEmitter)); + (level.getBlockEntity(relative) instanceof IEnvironmentalHazardCleaner || + level.getBlockEntity(relative) instanceof IEnvironmentalHazardEmitter); } return false; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlockEntities.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlockEntities.java index eac3af9d136..4355206d72f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlockEntities.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlockEntities.java @@ -11,7 +11,6 @@ public class GTBlockEntities { - @SuppressWarnings("unchecked") public static final BlockEntityEntry CABLE = REGISTRATE .blockEntity("cable", CableBlockEntity::create) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java index 35a707c549c..2468c96de3e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java @@ -91,10 +91,8 @@ public static void initPlaceholders() { public MultiLineComponent apply(PlaceholderContext ctx, List args) throws PlaceholderException { PlaceholderUtils.checkArgs(args, 0); - if (ctx.level().getBlockEntity(ctx.pos()) instanceof IMachineBlockEntity machineBE) { - if (machineBE.getMetaMachine() instanceof IEnergyInfoProvider energyInfoProvider) { + if (ctx.level().getBlockEntity(ctx.pos()) instanceof IEnergyInfoProvider energyInfoProvider) { return MultiLineComponent.literal(energyInfoProvider.getEnergyInfo().stored().longValue()); - } } IEnergyContainer energy = GTCapabilityHelper.getEnergyContainer(ctx.level(), ctx.pos(), ctx.side()); return MultiLineComponent.literal(energy != null ? energy.getEnergyStored() : 0); @@ -106,10 +104,8 @@ public MultiLineComponent apply(PlaceholderContext ctx, public MultiLineComponent apply(PlaceholderContext ctx, List args) throws PlaceholderException { PlaceholderUtils.checkArgs(args, 0); - if (ctx.level().getBlockEntity(ctx.pos()) instanceof IMachineBlockEntity machineBE) { - if (machineBE.getMetaMachine() instanceof IEnergyInfoProvider energyInfoProvider) { + if (ctx.level().getBlockEntity(ctx.pos()) instanceof IEnergyInfoProvider energyInfoProvider) { return MultiLineComponent.literal(energyInfoProvider.getEnergyInfo().capacity().longValue()); - } } IEnergyContainer energy = GTCapabilityHelper.getEnergyContainer(ctx.level(), ctx.pos(), ctx.side()); return MultiLineComponent.literal(energy != null ? energy.getEnergyCapacity() : 0); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java index ba1fa7bba54..11810bc6fc1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java @@ -55,7 +55,7 @@ public class GTRecipeModifiers { if (!(machine.getLevel() instanceof ServerLevel serverLevel)) return ModifierFunction.NULL; EnvironmentalHazardSavedData data = EnvironmentalHazardSavedData.getOrCreate(serverLevel); - BlockPos machinePos = machine.getPos(); + BlockPos machinePos = machine.getBlockPos(); var zone = data.getZoneByContainedPosAndCondition(machinePos, condition); if (zone == null) return ModifierFunction.IDENTITY; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java index 8ece01ec0cb..f460eb19aee 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java @@ -702,7 +702,7 @@ public static void init() {} return shapeInfos; }) .allowExtendedFacing(false) - .partSorter(Comparator.comparingInt(p -> p.self().getPos().getY())) + .partSorter(Comparator.comparingInt(p -> p.self().getBlockPos().getY())) .workableCasingModel(GTCEu.id("block/casings/gcym/watertight_casing"), GTCEu.id("block/multiblock/gcym/large_distillery")) .register(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index 17a7127310a..6c78b3d7446 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.compat.FeCompat; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; @@ -165,7 +166,7 @@ public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate boolean hasPollutionDebuff, int... tiers) { return registerTieredMachines(registrate, name, - (holder, tier) -> new SimpleTieredMachine(holder, tier, tankScalingFunction), (tier, builder) -> { + (info, tier) -> new SimpleTieredMachine(info, tier, tankScalingFunction), (tier, builder) -> { if (hasPollutionDebuff) { builder.recipeModifiers(GTRecipeModifiers.ENVIRONMENT_REQUIREMENT .apply(GTMedicalConditions.CARBON_MONOXIDE_POISONING, 100 * tier), @@ -189,7 +190,7 @@ public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate } public static MachineDefinition[] registerTieredMachines(String name, - BiFunction factory, + BiFunction factory, BiFunction, MachineDefinition> builder, int... tiers) { return registerTieredMachines(REGISTRATE, name, factory, builder, tiers); @@ -197,14 +198,14 @@ public static MachineDefinition[] registerTieredMachines(String name, public static MachineDefinition[] registerTieredMachines(GTRegistrate registrate, String name, - BiFunction factory, + BiFunction factory, BiFunction, MachineDefinition> builder, int... tiers) { MachineDefinition[] definitions = new MachineDefinition[GTValues.TIER_COUNT]; for (int tier : tiers) { var register = registrate .machine(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, - holder -> factory.apply(holder, tier)) + info -> factory.apply(info, tier)) .tier(tier); definitions[tier] = builder.apply(tier, register); } @@ -212,13 +213,13 @@ public static MachineDefinition[] registerTieredMachines(GTRegistrate registrate } public static Pair registerSteamMachines(String name, - BiFunction factory, + BiFunction factory, BiFunction, MachineDefinition> builder) { return registerSteamMachines(REGISTRATE, name, factory, builder); } public static Pair registerSteamMachines(GTRegistrate registrate, String name, - BiFunction factory, + BiFunction factory, BiFunction, MachineDefinition> builder) { MachineDefinition lowTier = builder.apply(false, registrate.machine("lp_%s".formatted(name), holder -> factory.apply(holder, false)) @@ -508,9 +509,9 @@ public static MachineDefinition registerDrum(GTRegistrate registrate, Material m boolean wooden = material.hasProperty(PropertyKey.WOOD); var definition = registrate .machine(material.getName() + "_drum", MachineDefinition::new, - holder -> new DrumMachine(holder, material, capacity), MetaMachineBlock::new, + MetaMachineBlock::new, (holder, prop) -> DrumMachineItem.create(holder, prop, material), - MetaMachineBlockEntity::new) + info -> new DrumMachine(info, material, capacity)) .langValue(lang) .rotationState(RotationState.NONE) .simpleModel(GTCEu.id("block/machine/template/drum/" + (wooden ? "wooden" : "metal") + "_drum")) @@ -541,9 +542,9 @@ public static MachineDefinition[] registerQuantumTanks(GTRegistrate registrate, long maxAmount = 4000 * FluidType.BUCKET_VOLUME * (long) Math.pow(2, tier - 1); var register = registrate.machine( GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, - MachineDefinition::new, (holder) -> new QuantumTankMachine(holder, tier, maxAmount), + MachineDefinition::new, MetaMachineBlock::new, QuantumTankMachineItem::new, - MetaMachineBlockEntity::new) + (holder) -> new QuantumTankMachine(holder, tier, maxAmount)) .langValue(toEnglishName(name) + " " + LVT[tier]) .blockProp(BlockBehaviour.Properties::dynamicShape) .rotationState(RotationState.ALL) @@ -650,14 +651,14 @@ public static MachineDefinition registerTankValve(GTRegistrate registrate, Strin } public static MultiblockMachineDefinition[] registerTieredMultis(String name, - BiFunction factory, + BiFunction factory, BiFunction builder, int... tiers) { return registerTieredMultis(REGISTRATE, name, factory, builder, tiers); } public static MultiblockMachineDefinition[] registerTieredMultis(GTRegistrate registrate, String name, - BiFunction factory, + BiFunction factory, BiFunction builder, int... tiers) { MultiblockMachineDefinition[] definitions = new MultiblockMachineDefinition[GTValues.TIER_COUNT]; @@ -697,7 +698,7 @@ public static MultiblockMachineDefinition registerLargeBoiler(GTRegistrate regis .recipeModifier(LargeBoilerMachine::recipeModifier, true) .appearanceBlock(casing) .partAppearance((controller, part, side) -> - controller.self().getPos().below().getY() == part.self().getPos().getY() ? + controller.self().getBlockPos().below().getY() == part.self().getBlockPos().getY() ? fireBox.get().defaultBlockState() : casing.get().defaultBlockState()) .pattern((definition) -> { TraceabilityPredicate fireboxPred = blocks(ALL_FIREBOXES.get(firebox).get()).setMinGlobalLimited(3) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java index 019c13fbeea..dfbcf64b53d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java @@ -503,7 +503,7 @@ public class GTMultiMachines { return shapeInfos; }) .allowExtendedFacing(false) - .partSorter(Comparator.comparingInt(p -> p.self().getPos().getY())) + .partSorter(Comparator.comparingInt(p -> p.self().getBlockPos().getY())) .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel"), GTCEu.id("block/multiblock/distillation_tower")) .register(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java index 2baae3aa047..dcb3d2f4fa7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; @@ -439,7 +440,7 @@ public class GTResearchMachines { @NotNull private static MachineBuilder registerDataHatch(String name, String displayName, int tier, - Function constructor, + Function constructor, String model, PartAbility... abilities) { return REGISTRATE.machine(name, constructor) .langValue(displayName) @@ -450,7 +451,7 @@ private static MachineBuilder registerDataHatch(String name, } private static MachineBuilder registerHPCAPart(String name, String displayName, - Function constructor, + Function constructor, String texture, boolean isAdvanced) { return REGISTRATE.machine(name, constructor) .langValue(displayName) diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java index 8416000eb05..8e3e44f0691 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java @@ -197,8 +197,7 @@ public int addScannerInfo(Player player, Level level, BlockPos pos, DisplayMode } } - if (tileEntity instanceof IMachineBlockEntity machineBlockEntity) { - MetaMachine machine = machineBlockEntity.getMetaMachine(); + if (tileEntity instanceof MetaMachine machine) { list.add(Component.translatable(state.getBlock().getDescriptionId()).withStyle(ChatFormatting.BLUE)); @@ -214,7 +213,7 @@ public int addScannerInfo(Player player, Level level, BlockPos pos, DisplayMode list.add(Component.translatable("behavior.portable_scanner.machine_front_facing", machine.getFrontFacing().getSerializedName())); list.add(Component.translatable("behavior.portable_scanner.machine_upwards_facing", - machineBlockEntity.self().getBlockState().getValue(GTBlockStateProperties.UPWARDS_FACING) + machine.getBlockState().getValue(GTBlockStateProperties.UPWARDS_FACING) .getSerializedName())); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java index d6bd8244c00..9c50b46bfb0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.item.tool.behavior.IToolBehavior; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.common.data.item.GTToolActions; import com.gregtechceu.gtceu.common.item.tool.rotation.CustomBlockRotations; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/MetaMachineConfigCopyBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/MetaMachineConfigCopyBehaviour.java index 2d52bb34cec..32b52b376f1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/MetaMachineConfigCopyBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/MetaMachineConfigCopyBehaviour.java @@ -101,8 +101,7 @@ public InteractionResultHolder use(Item item, Level level, Player pla @Override public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { // spotless:off - if (context.getLevel().getBlockEntity(context.getClickedPos()) instanceof IMachineBlockEntity blockEntity) { - var machine = blockEntity.getMetaMachine(); + if (context.getLevel().getBlockEntity(context.getClickedPos()) instanceof MetaMachine machine) { if (!MachineOwner.canOpenOwnerMachine(context.getPlayer(), machine)) { return InteractionResult.FAIL; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java index 154473063f9..527eb4538e5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java @@ -5,6 +5,7 @@ import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.item.tool.behavior.IToolBehavior; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.misc.forge.VoidFluidHandlerItemStack; import net.minecraft.network.chat.Component; @@ -51,8 +52,8 @@ public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { } IFluidHandler fluidHandler; - if (level.getBlockEntity(context.getClickedPos()) instanceof IMachineBlockEntity mmbe) { - fluidHandler = mmbe.getMetaMachine().getFluidHandlerCap(context.getClickedFace(), false); + if (level.getBlockEntity(context.getClickedPos()) instanceof MetaMachine machine) { + fluidHandler = machine.getFluidHandlerCap(context.getClickedFace(), false); } else { // noinspection DataFlowIssue fluidHandler = FluidUtil.getFluidHandler(level, context.getClickedPos(), context.getClickedFace()) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java index bded78b2a91..2b4458f88e3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.SimpleTieredMachine; import com.gregtechceu.gtceu.api.machine.feature.IEnvironmentalHazardCleaner; import com.gregtechceu.gtceu.api.recipe.GTRecipe; @@ -89,7 +88,7 @@ public boolean onWorking() { removedLastSecond = 0; for (Direction dir : GTUtil.DIRECTIONS) { - BlockPos offset = getPos().relative(dir); + BlockPos offset = getBlockPos().relative(dir); if (GTCapabilityHelper.getHazardContainer(getLevel(), offset, dir.getOpposite()) != null) { if (getLevel().getBlockEntity(offset) instanceof DuctPipeBlockEntity duct && !duct.isConnected(dir.getOpposite())) { @@ -102,7 +101,7 @@ public boolean onWorking() { final ServerLevel serverLevel = (ServerLevel) getLevel(); EnvironmentalHazardSavedData savedData = EnvironmentalHazardSavedData.getOrCreate(serverLevel); - final ChunkPos pos = new ChunkPos(getPos()); + final ChunkPos pos = new ChunkPos(getBlockPos()); Object2FloatMap relativePositions = new Object2FloatOpenHashMap<>(); int radius = tier / 2; if (radius <= 0) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java index 1b17d8b7294..2a05e2b3b5d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java @@ -9,7 +9,6 @@ import com.gregtechceu.gtceu.api.capability.compat.FeCompat; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; @@ -30,6 +29,7 @@ import net.minecraftforge.energy.IEnergyStorage; import lombok.Getter; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -202,13 +202,14 @@ public IGuiTexture getComponentIcon() { protected static class EnergyBatteryTrait extends NotifiableEnergyContainer { - private BatteryBufferMachine machine; + private final BatteryBufferMachine machine; private final int tier; - protected EnergyBatteryTrait(BatteryBufferMachine machine, int inventorySize) { + protected EnergyBatteryTrait(@NotNull BatteryBufferMachine machine, int inventorySize) { super(machine, GTValues.V[machine.getTier()] * inventorySize * 32L, GTValues.V[machine.getTier()], inventorySize * AMPS_PER_BATTERY, GTValues.V[machine.getTier()], inventorySize); tier = machine.getTier(); + this.machine = machine; this.setSideInputCondition(side -> side != machine.getFrontFacing() && machine.isWorkingEnabled()); this.setSideOutputCondition(side -> side == machine.getFrontFacing() && machine.isWorkingEnabled()); } @@ -227,7 +228,7 @@ public void checkOutputSubscription() { public void serverTick() { var outFacing = machine.getFrontFacing(); var energyContainer = GTCapabilityHelper.getEnergyContainer(machine.getLevel(), - machine.getPos().relative(outFacing), + machine.getBlockPos().relative(outFacing), outFacing.getOpposite()); if (energyContainer == null) { return; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java index 53d2f67b8e9..01fce22daa2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java @@ -11,7 +11,6 @@ import com.gregtechceu.gtceu.api.gui.editor.EditableUI; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.item.tool.GTToolType; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; @@ -180,7 +179,7 @@ public void onNeighborChanged(Block block, BlockPos fromPos, boolean isMoving) { ////////////////////////////////////// public void updateBreakerSubscription() { - if (drainEnergy(true) && !getLevel().getBlockState(getPos().relative(getFrontFacing())).isAir() && + if (drainEnergy(true) && !getLevel().getBlockState(getBlockPos().relative(getFrontFacing())).isAir() && isWorkingEnabled) { breakerSubs = subscribeServerTick(breakerSubs, this::breakerUpdate); } else if (breakerSubs != null) { @@ -196,7 +195,7 @@ public void breakerUpdate() { drainEnergy(false); if (blockBreakProgress == 0) { - var pos = getPos().relative(getFrontFacing()); + var pos = getBlockPos().relative(getFrontFacing()); var blockState = getLevel().getBlockState(pos); float hardness = blockState.getBlock().defaultDestroyTime(); if (hardness >= 0.0f && Math.abs(hardness - currentHardness) < .5f) { @@ -205,9 +204,9 @@ public void breakerUpdate() { var remainder = tryFillCache(drop); if (!remainder.isEmpty()) { if (getOutputFacingItems() == null) { - Block.popResource(getLevel(), getPos(), remainder); + Block.popResource(getLevel(), getBlockPos(), remainder); } else { - Block.popResource(getLevel(), getPos().relative(getOutputFacingItems()), remainder); + Block.popResource(getLevel(), getBlockPos().relative(getOutputFacingItems()), remainder); } } } @@ -217,7 +216,7 @@ public void breakerUpdate() { } if (blockBreakProgress == 0) { - var pos = getPos().relative(getFrontFacing()); + var pos = getBlockPos().relative(getFrontFacing()); var blockState = getLevel().getBlockState(pos); float hardness = blockState.getBlock().defaultDestroyTime(); boolean skipBlock = blockState.isAir(); @@ -238,7 +237,7 @@ public void breakerUpdate() { public void clientTick() { super.clientTick(); if (blockBreakProgress > 0) { - var pos = getPos().relative(getFrontFacing()); + var pos = getBlockPos().relative(getFrontFacing()); var blockState = getLevel().getBlockState(pos); getLevel().addDestroyBlockEffect(pos, blockState); } @@ -298,7 +297,7 @@ public void setOutputFacingItems(@Nullable Direction outputFacing) { protected void updateAutoOutputSubscription() { var outputFacing = getOutputFacingItems(); if ((isAutoOutputItems() && !cache.isEmpty()) && outputFacing != null && - GTTransferUtils.hasAdjacentItemHandler(getLevel(), getPos(), outputFacing)) + GTTransferUtils.hasAdjacentItemHandler(getLevel(), getBlockPos(), outputFacing)) autoOutputSubs = subscribeServerTick(autoOutputSubs, this::checkAutoOutput); else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); @@ -476,7 +475,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, @Override protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand hand, Direction gridSide, BlockHitResult hitResult) { - var controllable = GTCapabilityHelper.getControllable(getLevel(), getPos(), gridSide); + var controllable = GTCapabilityHelper.getControllable(getLevel(), getBlockPos(), gridSide); if (controllable != null) { if (!isRemote()) { controllable.setWorkingEnabled(!controllable.isWorkingEnabled()); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java index 1cb3a7eb28d..92e90d46257 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.capability.compat.FeCompat; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java index 98891e2152a..6f2cf812f04 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.capability.compat.FeCompat; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.item.tool.GTToolType; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.common.machine.trait.ConverterTrait; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java index 0cb52df1338..0aec24ba5c3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java @@ -12,7 +12,6 @@ import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; import com.gregtechceu.gtceu.api.item.tool.GTToolType; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; @@ -227,7 +226,7 @@ public void updateFishingUpdateSubscription() { private void updateHasWater() { for (int x = 0; x < WATER_CHECK_SIZE; x++) for (int z = 0; z < WATER_CHECK_SIZE; z++) { - BlockPos waterCheckPos = getPos().below().offset(x - WATER_CHECK_SIZE / 2, 0, z - WATER_CHECK_SIZE / 2); + BlockPos waterCheckPos = getBlockPos().below().offset(x - WATER_CHECK_SIZE / 2, 0, z - WATER_CHECK_SIZE / 2); if (!getLevel().getBlockState(waterCheckPos).getFluidState().is(Fluids.WATER)) { hasWater = false; return; @@ -260,7 +259,7 @@ public boolean isOpenWaterFishing() { .withOptionalParameter(LootContextParams.THIS_ENTITY, simulatedHook) .withParameter(LootContextParams.TOOL, fishingRod) .withParameter(LootContextParams.ORIGIN, - new Vec3(getPos().getX(), getPos().getY(), getPos().getZ())) + new Vec3(getBlockPos().getX(), getBlockPos().getY(), getBlockPos().getZ())) .create(LootContextParamSets.FISHING); NonNullList generatedLoot = NonNullList.create(); @@ -328,7 +327,7 @@ else if (batterySubs != null) { protected void updateAutoOutputSubscription() { var outputFacing = getOutputFacingItems(); if ((isAutoOutputItems() && !cache.isEmpty()) && outputFacing != null && - GTTransferUtils.hasAdjacentItemHandler(getLevel(), getPos(), outputFacing)) + GTTransferUtils.hasAdjacentItemHandler(getLevel(), getBlockPos(), outputFacing)) autoOutputSubs = subscribeServerTick(autoOutputSubs, this::checkAutoOutput); else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/HullMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/HullMachine.java index 36fe2bea3dd..8017d8ba498 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/HullMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/HullMachine.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IMonitorComponent; import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.integration.ae2.machine.trait.GridNodeHostTrait; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java index 4ec002b0221..82e33277732 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java @@ -13,7 +13,6 @@ import com.gregtechceu.gtceu.api.gui.widget.IntInputWidget; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.item.tool.GTToolType; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; @@ -232,8 +231,8 @@ public void update() { if (drainEnergy(false)) { if (aabb == null || rangeDirty) { rangeDirty = false; - BlockPos pos1 = getPos().offset(-range, 0, -range); - BlockPos pos2 = getPos().offset(range, 2, range); + BlockPos pos1 = getBlockPos().offset(-range, 0, -range); + BlockPos pos2 = getBlockPos().offset(range, 2, range); this.aabb = AABB.of(BoundingBox.fromCorners(pos1, pos2)); } moveItemsInRange(); @@ -245,7 +244,7 @@ public void moveItemsInRange() { ItemFilter filter = null; if (!filterInventory.getStackInSlot(0).isEmpty()) filter = ItemFilter.loadFilter(filterInventory.getStackInSlot(0)); - BlockPos centerPos = self().getPos().above(); + BlockPos centerPos = self().getBlockPos().above(); List itemEntities = getLevel().getEntitiesOfClass(ItemEntity.class, aabb); for (ItemEntity itemEntity : itemEntities) { @@ -339,7 +338,7 @@ else if (batterySubs != null) { protected void updateAutoOutputSubscription() { var outputFacing = getOutputFacingItems(); if ((isAutoOutputItems() && !output.isEmpty()) && outputFacing != null && - GTTransferUtils.hasAdjacentItemHandler(getLevel(), getPos(), outputFacing)) + GTTransferUtils.hasAdjacentItemHandler(getLevel(), getBlockPos(), outputFacing)) autoOutputSubs = subscribeServerTick(autoOutputSubs, this::autoOutput); else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); @@ -551,7 +550,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, @Override protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand hand, Direction gridSide, BlockHitResult hitResult) { - var controllable = GTCapabilityHelper.getControllable(getLevel(), getPos(), gridSide); + var controllable = GTCapabilityHelper.getControllable(getLevel(), getBlockPos(), gridSide); if (controllable != null) { if (!isRemote()) { controllable.setWorkingEnabled(!controllable.isWorkingEnabled()); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java index 4c1b63a6ae8..f594329cd0c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java @@ -11,7 +11,6 @@ import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; import com.gregtechceu.gtceu.api.gui.editor.EditableUI; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.WorkableTieredMachine; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; @@ -182,7 +181,7 @@ public void onUnload() { protected void updateAutoOutputSubscription() { var outputFace = getOutputFacingItems(); if (isAutoOutputItems() && outputFace != null && !exportItems.isEmpty() && - GTTransferUtils.hasAdjacentItemHandler(getLevel(), getPos(), outputFace)) { + GTTransferUtils.hasAdjacentItemHandler(getLevel(), getBlockPos(), outputFace)) { autoOutputSubs = subscribeServerTick(autoOutputSubs, this::autoOutput); } else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java index 7b22a5b979e..b93dc476bcd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; import com.gregtechceu.gtceu.api.item.tool.GTToolType; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; @@ -249,7 +248,7 @@ private void updatePumpQueue(@Nullable FluidType fluidType) { return; } - BlockPos headPos = getPos().below(pumpHeadY); + BlockPos headPos = getBlockPos().below(pumpHeadY); BlockPos downPos = headPos.below(1); var downBlock = getLevel().getBlockState(downPos); @@ -383,7 +382,7 @@ private PumpQueue buildPumpQueue(Level level, BlockPos headPos, FluidType fluidT */ private boolean canAdvancePumpHead() { // position of the pump head, i.e. the position of the lowest mining pipe - BlockPos headPos = getPos().below(pumpHeadY); + BlockPos headPos = getBlockPos().below(pumpHeadY); if (pumpQueue == null || pumpQueue.queue.isEmpty()) { Level level; @@ -407,7 +406,7 @@ private boolean canAdvancePumpHead() { @Override public void onMachineRemoved() { if (getLevel() instanceof ServerLevel serverLevel) { - var pos = getPos().relative(Direction.DOWN); + var pos = getBlockPos().relative(Direction.DOWN); while (serverLevel.getBlockState(pos).is(GTBlocks.MINER_PIPE.get())) { serverLevel.removeBlock(pos, false); pos = pos.relative(Direction.DOWN); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/RockCrusherMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/RockCrusherMachine.java index 9cd21eef9c8..e18da73b220 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/RockCrusherMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/RockCrusherMachine.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.common.machine.electric; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.SimpleTieredMachine; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java index 3d90acaeb67..73efa8ec84e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IControllable; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java index 21a99974743..655c5473f71 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java @@ -2,12 +2,12 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.item.tool.GTToolType; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; @@ -87,8 +87,8 @@ public class WorldAcceleratorMachine extends TieredEnergyMachine implements ICon private boolean active = false; private TickableSubscription tickSubs; - public WorldAcceleratorMachine(IMachineBlockEntity holder, int tier) { - super(holder, tier, (TieredEnergyMachine machine) -> { + public WorldAcceleratorMachine(BlockEntityCreationInfo info, int tier) { + super(info, tier, (TieredEnergyMachine machine) -> { long tierVoltage = GTValues.V[machine.getTier()]; return new NotifiableEnergyContainer(machine, tierVoltage * 256L, tierVoltage, 8, 0L, 0L); }); @@ -121,9 +121,9 @@ public void update() { // handle random tick mode if (isRandomTickMode) { BlockPos cornerPos = new BlockPos( - getPos().getX() - getTier(), - getPos().getY() - getTier(), - getPos().getZ() - getTier()); + getBlockPos().getX() - getTier(), + getBlockPos().getY() - getTier(), + getBlockPos().getZ() - getTier()); int attempts = successLimit * 3; for (int i = 0, j = 0; i < successLimit && j < attempts; j++) { @@ -133,7 +133,7 @@ public void update() { GTValues.RNG.nextInt(randRange)); if (randomPos.getY() > getLevel().getMaxBuildHeight() || randomPos.getY() < getLevel().getMinBuildHeight() || !getLevel().isLoaded(randomPos) || - randomPos.equals(getPos())) + randomPos.equals(getBlockPos())) continue; if (getLevel().getBlockState(randomPos).isRandomlyTicking()) { getLevel().getBlockState(randomPos).randomTick((ServerLevel) this.getLevel(), randomPos, @@ -144,7 +144,7 @@ public void update() { } else { // else handle block entity mode for (Direction dir : GTUtil.DIRECTIONS) { - BlockEntity blockEntity = this.getLevel().getBlockEntity(this.getPos().relative(dir)); + BlockEntity blockEntity = this.getLevel().getBlockEntity(this.getBlockPos().relative(dir)); if (blockEntity != null && canAccelerate(blockEntity)) { tickBlockEntity(blockEntity); } @@ -234,7 +234,7 @@ public void setWorkingEnabled(boolean workingEnabled) { protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand hand, Direction gridSide, BlockHitResult hitResult) { - var controllable = GTCapabilityHelper.getControllable(getLevel(), getPos(), gridSide); + var controllable = GTCapabilityHelper.getControllable(getLevel(), getBlockPos(), gridSide); if (controllable != null) { if (!isRemote()) { controllable.setWorkingEnabled(!controllable.isWorkingEnabled()); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java index 5f51703444a..0eb894dac70 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.FancyMachineUIWidget; import com.gregtechceu.gtceu.api.machine.ConditionalSubscriptionHandler; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IExplosionMachine; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; @@ -94,7 +93,7 @@ public void onStructureFormed() { Long2ObjectMaps::emptyMap); for (IMultiPart part : getPrioritySortedParts()) { - IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); + IO io = ioMap.getOrDefault(part.self().getBlockPos().asLong(), IO.BOTH); if (io == IO.NONE) continue; var handlerLists = part.getRecipeHandlers(); for (var handlerList : handlerLists) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java index 3bc5d1c3e40..17f3f0798b4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; @@ -50,12 +49,12 @@ public AssemblyLineMachine(BlockEntityCreationInfo info, boolean allowCircuitSlo this.allowCircuitSlots = allowCircuitSlots; } - public AssemblyLineMachine(IMachineBlockEntity holder) { - this(holder, false); + public AssemblyLineMachine(BlockEntityCreationInfo info) { + this(info, false); } public static Comparator partSorter(MultiblockControllerMachine mc) { - return Comparator.comparing(p -> p.self().getPos(), + return Comparator.comparing(p -> p.self().getBlockPos(), RelativeDirection.RIGHT.getSorter(mc.getFrontFacing(), mc.getUpwardsFacing(), mc.isFlipped())); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java index 89c0099267e..5933ae2b079 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.data.worldgen.bedrockore.WeightedMaterial; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java index 333eee30c97..c3496e2dabc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java @@ -12,7 +12,6 @@ import com.gregtechceu.gtceu.api.item.IComponentItem; import com.gregtechceu.gtceu.api.item.component.IItemComponent; import com.gregtechceu.gtceu.api.item.component.IMonitorModuleItem; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockDisplayText; @@ -133,7 +132,7 @@ public void tick() { continue; } module.tick(stack, this, group); - GTNetwork.sendToAllPlayersTrackingChunk(level.getChunkAt(getPos()), + GTNetwork.sendToAllPlayersTrackingChunk(level.getChunkAt(getBlockPos()), new SCPacketMonitorGroupNBTChange(stack, group, this)); } } @@ -153,7 +152,7 @@ protected void clearPatternFindingState() { protected MultiblockState getPatternFindingState() { if (this.patternFindingState == null) { - this.patternFindingState = new MultiblockState(getLevel(), getPos()); + this.patternFindingState = new MultiblockState(getLevel(), getBlockPos()); this.patternFindingState.clean(); } return this.patternFindingState; @@ -183,10 +182,10 @@ public void updateStructureDimensions() { Direction right = RelativeDirection.RIGHT.getRelative(front, spin, false); Direction up = RelativeDirection.UP.getRelative(front, spin, false); Direction down = RelativeDirection.DOWN.getRelative(front, spin, false); - BlockPos.MutableBlockPos posLeft = getPos().mutable().move(left); - BlockPos.MutableBlockPos posRight = getPos().mutable().move(right); - BlockPos.MutableBlockPos posUp = getPos().mutable().move(up); - BlockPos.MutableBlockPos posDown = getPos().mutable().move(down); + BlockPos.MutableBlockPos posLeft = getBlockPos().mutable().move(left); + BlockPos.MutableBlockPos posRight = getBlockPos().mutable().move(right); + BlockPos.MutableBlockPos posUp = getBlockPos().mutable().move(up); + BlockPos.MutableBlockPos posDown = getBlockPos().mutable().move(down); this.leftDist = 0; this.rightDist = 0; this.upDist = 0; @@ -261,7 +260,7 @@ public BlockPos toRelative(BlockPos pos) { Direction right = RelativeDirection.RIGHT.getRelative(front, spin, flipped); Direction up = RelativeDirection.UP.getRelative(front, spin, flipped); - BlockPos tmp = getPos().mutable().move(right, rightDist).move(up, upDist); + BlockPos tmp = getBlockPos().mutable().move(right, rightDist).move(up, upDist); return new BlockPos(Math.abs(tmp.get(right.getAxis()) - pos.get(right.getAxis())), Math.abs(tmp.get(up.getAxis()) - pos.get(up.getAxis())), @@ -281,7 +280,7 @@ public IMonitorComponent getComponent(int row, int col) { Direction up = RelativeDirection.UP.getRelative(front, spin, flipped); col = leftDist + rightDist - col; - BlockPos pos = getPos().relative(left, leftDist - col).relative(up, upDist - row); + BlockPos pos = getBlockPos().relative(left, leftDist - col).relative(up, upDist - row); return GTCapabilityHelper.getMonitorComponent(level, pos, null); } @@ -301,7 +300,7 @@ private IGuiTexture getComponentTexture(int row, int col) { } private boolean isInAnyGroup(IMonitorComponent component) { - return monitorGroups.stream().anyMatch(group -> group.contains(component.getPos())); + return monitorGroups.stream().anyMatch(group -> group.contains(component.getBlockPos())); } @Override @@ -436,7 +435,7 @@ public Widget createUIWidget() { .getString()); for (IMonitorComponent component : selectedComponents) { if (isInAnyGroup(component)) return; - group.add(component.getPos()); + group.add(component.getBlockPos()); } monitorGroups.add(group); addGroupToList.accept(group); @@ -446,18 +445,18 @@ public Widget createUIWidget() { Iterator it = selectedComponents.iterator(); while (it.hasNext()) { IMonitorComponent c = it.next(); - BlockPos rel = toRelative(c.getPos()); + BlockPos rel = toRelative(c.getBlockPos()); imageButtons.get(rel.getY()).get(rel.getX()).accept(it); } if (!selectedTargets.isEmpty()) { - rightClickCallbacks.getOrDefault(selectedTargets.get(0).getPos(), () -> {}).run(); + rightClickCallbacks.getOrDefault(selectedTargets.get(0).getBlockPos(), () -> {}).run(); } }); setTargetButton.setOnPressCallback(click -> { MonitorGroup group = null; for (MonitorGroup group2 : monitorGroups) { for (IMonitorComponent component : selectedComponents) { - if (group2.contains(component.getPos())) { + if (group2.contains(component.getBlockPos())) { group = group2; break; } @@ -467,13 +466,13 @@ public Widget createUIWidget() { if (group == null) return; if (selectedTargets.isEmpty()) group.setTarget(null); else { - group.setTarget(selectedTargets.get(0).getPos()); + group.setTarget(selectedTargets.get(0).getBlockPos()); group.setDataSlot(dataSlot[0] - 1); } }); removeFromGroupButton.setOnPressCallback(click -> { for (MonitorGroup group : monitorGroups) { - for (IMonitorComponent component : selectedComponents) group.remove(component.getPos()); + for (IMonitorComponent component : selectedComponents) group.remove(component.getBlockPos()); } Iterator itg = monitorGroups.iterator(); while (itg.hasNext()) { @@ -492,13 +491,13 @@ public Widget createUIWidget() { Iterator it = selectedComponents.iterator(); while (it.hasNext()) { IMonitorComponent c = it.next(); - BlockPos rel = toRelative(c.getPos()); + BlockPos rel = toRelative(c.getBlockPos()); if (imageButtons.size() - 1 < rel.getY()) continue; if (imageButtons.get(rel.getY()).size() - 1 < rel.getX()) continue; imageButtons.get(rel.getY()).get(rel.getX()).accept(it); } if (!selectedTargets.isEmpty()) { - rightClickCallbacks.getOrDefault(selectedTargets.get(0).getPos(), () -> {}).run(); + rightClickCallbacks.getOrDefault(selectedTargets.get(0).getBlockPos(), () -> {}).run(); } }); createGroupButton.setButtonTexture(new TextTexture("gtceu.central_monitor.gui.create_group")); @@ -565,7 +564,7 @@ public Widget createUIWidget() { } if (isInAnyGroup(component)) { monitorGroups.forEach(group -> { - if (group.contains(component.getPos())) { + if (group.contains(component.getBlockPos())) { img.setHoverTooltips( Component.translatable("gtceu.gui.central_monitor.group", group.getName())); } @@ -577,7 +576,7 @@ public Widget createUIWidget() { }; Runnable rightClickCallback = () -> { if (!selectedTargets.isEmpty()) { - if (selectedTargets.get(0).getPos() == component.getPos()) { + if (selectedTargets.get(0).getBlockPos() == component.getBlockPos()) { selectedTargets.clear(); if (selectedComponents.contains(component)) { ColorRectTexture rect = new ColorRectTexture(Color.RED); @@ -589,12 +588,12 @@ public Widget createUIWidget() { return; } else { try { - rightClickCallbacks.get(selectedTargets.get(0).getPos()).run(); + rightClickCallbacks.get(selectedTargets.get(0).getBlockPos()).run(); } catch (StackOverflowError e) { GTCEu.LOGGER.error( "Stack overflow when right-clicking monitor component {} at {} (selectedTarget is {} at {})", - component, component.getPos(), selectedTargets.get(0), - selectedTargets.get(0).getPos()); + component, component.getBlockPos(), selectedTargets.get(0), + selectedTargets.get(0).getBlockPos()); } } } @@ -611,7 +610,7 @@ public Widget createUIWidget() { MonitorGroup selectedGroup = null; for (MonitorGroup group : monitorGroups) { for (IMonitorComponent c : selectedComponents) { - if (group.contains(c.getPos())) { + if (group.contains(c.getBlockPos())) { if (selectedGroup == null || selectedGroup == group) { selectedGroup = group; } else { @@ -630,7 +629,7 @@ public Widget createUIWidget() { }; if (isInAnyGroup(component)) { monitorGroups.forEach(group -> { - if (group.contains(component.getPos())) img.setHoverTooltips( + if (group.contains(component.getBlockPos())) img.setHoverTooltips( Component.translatable("gtceu.gui.central_monitor.group", group.getName())); }); } else { @@ -643,7 +642,7 @@ public Widget createUIWidget() { }); componentSelection.addWidget(img); GTUtil.getLast(imageButtons).add(callback); - rightClickCallbacks.put(component.getPos(), rightClickCallback); + rightClickCallbacks.put(component.getBlockPos(), rightClickCallback); } } builder.addWidget(main); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java index 0345c433e3e..47efc8dc087 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.capability.IEnergyContainer; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.SimpleGeneratorMachine; import com.gregtechceu.gtceu.api.machine.feature.ICleanroomProvider; @@ -169,7 +168,7 @@ public void onStructureInvalid() { public boolean shouldAddPartToController(IMultiPart part) { var cache = getMultiblockState().getCache(); for (Direction side : GTUtil.DIRECTIONS) { - if (!cache.contains(part.self().getPos().relative(side))) { + if (!cache.contains(part.self().getBlockPos().relative(side))) { return true; } } @@ -182,7 +181,7 @@ protected void initializeAbilities() { Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { if (isPartIgnored(part)) continue; - IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); + IO io = ioMap.getOrDefault(part.self().getBlockPos().asLong(), IO.BOTH); if (io == IO.NONE || io == IO.OUT) continue; var handlerLists = part.getRecipeHandlers(); for (var handlerList : handlerLists) { @@ -221,11 +220,11 @@ public void updateStructureDimensions() { Direction left = front.getCounterClockWise(); Direction right = left.getOpposite(); - BlockPos.MutableBlockPos lPos = getPos().mutable(); - BlockPos.MutableBlockPos rPos = getPos().mutable(); - BlockPos.MutableBlockPos fPos = getPos().mutable(); - BlockPos.MutableBlockPos bPos = getPos().mutable(); - BlockPos.MutableBlockPos hPos = getPos().mutable(); + BlockPos.MutableBlockPos lPos = getBlockPos().mutable(); + BlockPos.MutableBlockPos rPos = getBlockPos().mutable(); + BlockPos.MutableBlockPos fPos = getBlockPos().mutable(); + BlockPos.MutableBlockPos bPos = getBlockPos().mutable(); + BlockPos.MutableBlockPos hPos = getBlockPos().mutable(); // find the distances from the controller to the plascrete blocks on one horizontal axis and the Y axis // repeatable aisles take care of the second horizontal axis @@ -425,8 +424,7 @@ protected TraceabilityPredicate innerPredicate() { Sets::newHashSet); // all non-GTMachines are allowed inside by default BlockEntity blockEntity = blockWorldState.getTileEntity(); - if (blockEntity instanceof IMachineBlockEntity machineBlockEntity) { - var machine = machineBlockEntity.getMetaMachine(); + if (blockEntity instanceof MetaMachine machine) { if (isMachineBanned(machine)) { return false; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java index af9fefca05d..b7417d417a5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.*; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; @@ -71,15 +70,15 @@ public DistillationTowerLogic getRecipeLogic() { @Override public void onStructureFormed() { super.onStructureFormed(); - final int startY = getPos().getY() + yOffset; + final int startY = getBlockPos().getY() + yOffset; List parts = getParts().stream() .filter(part -> PartAbility.EXPORT_FLUIDS.isApplicable(part.self().getBlockState().getBlock())) - .filter(part -> part.self().getPos().getY() >= startY) + .filter(part -> part.self().getBlockPos().getY() >= startY) .toList(); if (!parts.isEmpty()) { // Loop from controller y + offset -> the highest output hatch - int maxY = parts.get(parts.size() - 1).self().getPos().getY(); + int maxY = parts.get(parts.size() - 1).self().getBlockPos().getY(); fluidOutputs = new ObjectArrayList<>(maxY - startY); int outputIndex = 0; for (int y = startY; y <= maxY; ++y) { @@ -89,7 +88,7 @@ public void onStructureFormed() { } var part = parts.get(outputIndex); - if (part.self().getPos().getY() == y) { + if (part.self().getBlockPos().getY() == y) { var handler = part.getRecipeHandlers().get(0).getCapability(FluidRecipeCapability.CAP) .stream() .filter(IFluidHandler.class::isInstance) @@ -98,12 +97,12 @@ public void onStructureFormed() { .orElse(VoidFluidHandler.INSTANCE); addOutput(handler); outputIndex++; - } else if (part.self().getPos().getY() > y) { + } else if (part.self().getBlockPos().getY() > y) { fluidOutputs.add(VoidFluidHandler.INSTANCE); } else { GTCEu.LOGGER.error( "The Distillation Tower at {} has a fluid export hatch with an unexpected Y position", - getPos()); + getBlockPos()); onStructureInvalid(); return; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java index d2e605c16b6..cd114c360ee 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java index 33187439898..bf568983ae8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; @@ -116,7 +115,7 @@ public void onStructureFormed() { Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { - IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); + IO io = ioMap.getOrDefault(part.self().getBlockPos().asLong(), IO.BOTH); if (io == IO.NONE || io == IO.OUT) continue; var handlerLists = part.getRecipeHandlers(); for (var handlerList : handlerLists) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java index a18478502b8..029c3285eab 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java @@ -9,7 +9,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; @@ -118,7 +117,7 @@ private void initializeAbilities() { Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { - IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); + IO io = ioMap.getOrDefault(part.self().getBlockPos().asLong(), IO.BOTH); if (io == IO.NONE) continue; var handlerLists = part.getRecipeHandlers(); @@ -140,7 +139,7 @@ private void initializeAbilities() { getRecipeLogic().setVoltageTier(GTUtil.getTierByVoltage(this.energyContainer.getInputVoltage())); getRecipeLogic().setOverclockAmount( Math.max(1, GTUtil.getTierByVoltage(this.energyContainer.getInputVoltage()) - this.tier)); - getRecipeLogic().initPos(getPos(), getRecipeLogic().getCurrentRadius()); + getRecipeLogic().initPos(getBlockPos(), getRecipeLogic().getCurrentRadius()); } public int getEnergyTier() { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java index 7c51f4cbfa5..a4b98438b8d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.fluids.PropertyFluidFilter; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.TankWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java index 0f0b695eda1..7f52589b610 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java @@ -10,7 +10,6 @@ import com.gregtechceu.gtceu.api.gui.fancy.IFancyUIProvider; import com.gregtechceu.gtceu.api.gui.fancy.TooltipsPanel; import com.gregtechceu.gtceu.api.machine.ConditionalSubscriptionHandler; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IDisplayUIMachine; @@ -101,7 +100,7 @@ public void onStructureFormed() { Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { - IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); + IO io = ioMap.getOrDefault(part.self().getBlockPos().asLong(), IO.BOTH); if (io == IO.NONE) continue; if (part instanceof IMaintenanceMachine maintenanceMachine) { this.maintenance = maintenanceMachine; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java index f7251d2894f..d58724da7ed 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IFluidRenderMulti; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; @@ -59,7 +58,7 @@ public Set saveOffsets() { Direction counterClockWise = RelativeDirection.LEFT.getRelative(getFrontFacing(), getUpwardsFacing(), isFlipped()); - BlockPos pos = getPos(); + BlockPos pos = getBlockPos(); BlockPos center = pos.relative(up); Set offsets = new HashSet<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java index bad55809d7c..0951561d061 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; @@ -62,8 +61,8 @@ public void onUnload() { } private void updateBounds() { - var fl = RelativeDirection.offsetPos(getPos(), getFrontFacing(), getUpwardsFacing(), isFlipped(), 1, 1, -1); - var br = RelativeDirection.offsetPos(getPos(), getFrontFacing(), getUpwardsFacing(), isFlipped(), 1, -2, -4); + var fl = RelativeDirection.offsetPos(getBlockPos(), getFrontFacing(), getUpwardsFacing(), isFlipped(), 1, 1, -1); + var br = RelativeDirection.offsetPos(getBlockPos(), getFrontFacing(), getUpwardsFacing(), isFlipped(), 1, -2, -4); grindBound = AABB.of(BoundingBox.fromCorners(fl, br)); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java index 7ce5cf30683..6f6fb3dde19 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IFluidRenderMulti; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; @@ -58,7 +57,7 @@ public void onStructureInvalid() { Direction counterClockWise = RelativeDirection.LEFT.getRelative(getFrontFacing(), getUpwardsFacing(), isFlipped()); - BlockPos pos = getPos(); + BlockPos pos = getBlockPos(); BlockPos center = pos.relative(up, 3); Set offsets = new HashSet<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java index e0feb7aff0c..00f643a92c3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.capability.IEnergyContainer; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IDisplayUIMachine; @@ -64,7 +63,7 @@ public void onStructureFormed() { Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { - IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); + IO io = ioMap.getOrDefault(part.self().getBlockPos().asLong(), IO.BOTH); if (part instanceof IMaintenanceMachine maintenanceMachine) { this.maintenance = maintenanceMachine; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java index e38dfba4d02..833bd7f5ea8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java @@ -9,8 +9,6 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.util.TimedProgressSupplier; import com.gregtechceu.gtceu.api.gui.widget.ExtendedProgressWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; @@ -106,7 +104,7 @@ public void onStructureFormed() { Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { - IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); + IO io = ioMap.getOrDefault(part.self().getBlockPos().asLong(), IO.BOTH); if (part instanceof IHPCAComponentHatch componentHatch) { componentHatches.add(componentHatch); } @@ -265,7 +263,7 @@ public Widget createUIWidget() { // we need to know what components we have on the client if (getLevel().isClientSide) { if (isFormed) { - hpcaHandler.tryGatherClientComponents(this.getLevel(), this.getPos(), this.getFrontFacing(), + hpcaHandler.tryGatherClientComponents(this.getLevel(), this.getBlockPos(), this.getFrontFacing(), this.getUpwardsFacing(), this.isFlipped); } else { hpcaHandler.clearClientComponents(); @@ -734,11 +732,6 @@ public void tryGatherClientComponents(Level world, BlockPos pos, Direction front BlockEntity be = world.getBlockEntity(tempPos); if (be instanceof IHPCAComponentHatch hatch) { components.add(hatch); - } else if (be instanceof IMachineBlockEntity machineBE) { - MetaMachine machine = machineBE.getMetaMachine(); - if (machine instanceof IHPCAComponentHatch hatch) { - components.add(hatch); - } } // if here without a hatch, something went wrong, better to skip than add a null into the mix. } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/NetworkSwitchMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/NetworkSwitchMachine.java index dda50168860..d7b119c7492 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/NetworkSwitchMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/NetworkSwitchMachine.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.capability.IOpticalComputationProvider; import com.gregtechceu.gtceu.api.capability.recipe.CWURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockDisplayText; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java index 4a0b73eba52..ba746372013 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.CWURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IDisplayUIMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockDisplayText; @@ -61,7 +60,7 @@ public void onStructureFormed() { this.objectHolder = iObjectHolder; } - part.self().holder.self() + part.self() .getCapability(GTCapability.CAPABILITY_COMPUTATION_PROVIDER) .ifPresent(provider -> this.computationProvider = provider); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java index 597c4853e8f..81027ac6523 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.IFancyTooltip; import com.gregtechceu.gtceu.api.gui.fancy.TooltipsPanel; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockDisplayText; @@ -66,7 +65,7 @@ private boolean isIntakesObstructed() { for (int j = -1; j < 2; j++) { // Skip the controller block itself if (i == 0 && j == 0) continue; - var blockPos = RelativeDirection.offsetPos(getPos(), getFrontFacing(), getUpwardsFacing(), isFlipped(), + var blockPos = RelativeDirection.offsetPos(getBlockPos(), getFrontFacing(), getUpwardsFacing(), isFlipped(), i, j, 1); var blockState = this.getLevel().getBlockState(blockPos); if (!blockState.isAir()) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java index eb323fa9f52..e41ca126b14 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.ITurbineMachine; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/AutoMaintenanceHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/AutoMaintenanceHatchPartMachine.java index 90caa486b9a..2d5d529437b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/AutoMaintenanceHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/AutoMaintenanceHatchPartMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CleaningMaintenanceHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CleaningMaintenanceHatchPartMachine.java index 9bacd931c75..e6afdd9eabd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CleaningMaintenanceHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CleaningMaintenanceHatchPartMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.ICleanroomReceiver; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.ICleanroomProvider; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.CleanroomType; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java index 72756107909..e10be480d25 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; @@ -119,8 +118,8 @@ public void onRotated(Direction oldFacing, Direction newFacing) { protected void updateAutoIOSubscription() { if ((!outputInventory.isEmpty() && - GTTransferUtils.hasAdjacentItemHandler(getLevel(), getPos(), getFrontFacing())) || - (!tank.isEmpty() && GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), getFrontFacing()))) { + GTTransferUtils.hasAdjacentItemHandler(getLevel(), getBlockPos(), getFrontFacing())) || + (!tank.isEmpty() && GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getBlockPos(), getFrontFacing()))) { autoIOSubs = subscribeServerTick(autoIOSubs, this::autoIO); } else if (autoIOSubs != null) { autoIOSubs.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java index 20eb576ce26..20a8bce9a08 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java @@ -9,7 +9,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java index 37694c06fec..f6431865e33 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java index 81c22317e57..ef996f72311 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.gui.widget.TankWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.common.data.GTMachines; @@ -84,8 +83,8 @@ protected void updateInventorySubscription() { boolean canOutput = io == IO.OUT && (!tank.isEmpty() || !getInventory().isEmpty()); var level = getLevel(); if (level != null) { - this.hasItemHandler = GTTransferUtils.hasAdjacentItemHandler(level, getPos(), getFrontFacing()); - this.hasFluidHandler = GTTransferUtils.hasAdjacentFluidHandler(level, getPos(), getFrontFacing()); + this.hasItemHandler = GTTransferUtils.hasAdjacentItemHandler(level, getBlockPos(), getFrontFacing()); + this.hasFluidHandler = GTTransferUtils.hasAdjacentFluidHandler(level, getBlockPos(), getFrontFacing()); } else { this.hasItemHandler = false; this.hasFluidHandler = false; @@ -125,7 +124,7 @@ protected void autoIO() { @Override public boolean swapIO() { - BlockPos blockPos = getHolder().pos(); + BlockPos blockPos = getBlockPos(); MachineDefinition newDefinition = null; if (io == IO.IN) { @@ -139,14 +138,12 @@ public boolean swapIO() { getLevel().setBlockAndUpdate(blockPos, newBlockState); - if (getLevel().getBlockEntity(blockPos) instanceof IMachineBlockEntity newHolder) { - if (newHolder.getMetaMachine() instanceof DualHatchPartMachine newMachine) { + if (getLevel().getBlockEntity(blockPos) instanceof DualHatchPartMachine newMachine) { newMachine.setFrontFacing(this.getFrontFacing()); newMachine.setUpwardsFacing(this.getUpwardsFacing()); for (int i = 0; i < this.tank.getTanks(); i++) { newMachine.tank.setFluidInTank(i, this.tank.getFluidInTank(i)); } - } } return true; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java index f093be1f87d..29ffd939eba 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IExplosionMachine; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index 40fd762c6d2..a8a35b9aea0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.gui.widget.PhantomFluidWidget; import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.fancyconfigurator.CircuitFancyConfigurator; @@ -190,7 +189,7 @@ protected void updateTankSubscription() { protected void updateTankSubscription(Direction newFacing) { if (isWorkingEnabled() && ((io.support(IO.OUT) && !tank.isEmpty()) || io.support(IO.IN)) && - GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), newFacing)) { + GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getBlockPos(), newFacing)) { autoIOSubs = subscribeServerTick(autoIOSubs, this::autoIO); } else if (autoIOSubs != null) { autoIOSubs.unsubscribe(); @@ -235,7 +234,7 @@ protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand } public boolean swapIO() { - BlockPos blockPos = getHolder().pos(); + BlockPos blockPos = getBlockPos(); MachineDefinition newDefinition = null; if (io == IO.IN) { @@ -253,14 +252,12 @@ public boolean swapIO() { getLevel().setBlockAndUpdate(blockPos, newBlockState); - if (getLevel().getBlockEntity(blockPos) instanceof IMachineBlockEntity newHolder) { - if (newHolder.getMetaMachine() instanceof FluidHatchPartMachine newMachine) { + if (getLevel().getBlockEntity(blockPos) instanceof FluidHatchPartMachine newMachine) { newMachine.setFrontFacing(this.getFrontFacing()); newMachine.setUpwardsFacing(this.getUpwardsFacing()); newMachine.setPaintingColor(this.getPaintingColor()); for (int i = 0; i < this.tank.getTanks(); i++) { newMachine.tank.setFluidInTank(i, this.tank.getFluidInTank(i)); - } } } return true; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index b2e9e86cd36..c1001284f12 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.fancyconfigurator.CircuitFancyConfigurator; @@ -216,7 +215,7 @@ protected void updateInventorySubscription() { protected void updateInventorySubscription(Direction newFacing) { if (isWorkingEnabled() && ((io.support(IO.OUT) && !getInventory().isEmpty()) || io.support(IO.IN)) && - GTTransferUtils.hasAdjacentItemHandler(getLevel(), getPos(), newFacing)) { + GTTransferUtils.hasAdjacentItemHandler(getLevel(), getBlockPos(), newFacing)) { autoIOSubs = subscribeServerTick(autoIOSubs, this::autoIO); } else if (autoIOSubs != null) { autoIOSubs.unsubscribe(); @@ -261,7 +260,7 @@ protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand } public boolean swapIO() { - BlockPos blockPos = getHolder().pos(); + BlockPos blockPos = getBlockPos(); MachineDefinition newDefinition = null; if (io == IO.IN) { newDefinition = GTMachines.ITEM_EXPORT_BUS[this.getTier()]; @@ -274,8 +273,7 @@ public boolean swapIO() { getLevel().setBlockAndUpdate(blockPos, newBlockState); - if (getLevel().getBlockEntity(blockPos) instanceof IMachineBlockEntity newHolder) { - if (newHolder.getMetaMachine() instanceof ItemBusPartMachine newMachine) { + if (getLevel().getBlockEntity(blockPos) instanceof ItemBusPartMachine newMachine) { // We don't set the circuit or distinct busses, since // that doesn't make sense on an output bus. // Furthermore, existing inventory items @@ -283,7 +281,6 @@ public boolean swapIO() { newMachine.setFrontFacing(this.getFrontFacing()); newMachine.setUpwardsFacing(this.getUpwardsFacing()); newMachine.setPaintingColor(this.getPaintingColor()); - } } return true; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/LaserHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/LaserHatchPartMachine.java index d5c204cca1c..3033d1d2f57 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/LaserHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/LaserHatchPartMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableLaserContainer; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java index c89558e5728..079a41e05c6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java index fab6cd41916..4b201fa41ad 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; @@ -106,7 +105,7 @@ private void tryBreakSnow() { for (IMultiController controller : getControllers()) { if (controller instanceof IRecipeLogicMachine recipeLogicMachine && recipeLogicMachine.getRecipeLogic().isWorking()) { - BlockPos mufflerPos = getPos().relative(getFrontFacing()); + BlockPos mufflerPos = getBlockPos().relative(getFrontFacing()); GTUtil.tryBreakSnow(getLevel(), mufflerPos, getLevel().getBlockState(mufflerPos), true); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java index 080cc4c1095..c5fa4fb21c6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.item.IComponentItem; import com.gregtechceu.gtceu.api.item.component.IDataItem; import com.gregtechceu.gtceu.api.item.component.IItemComponent; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalComputationHatchMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalComputationHatchMachine.java index e4da667dcc6..85dddc042c0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalComputationHatchMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalComputationHatchMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableComputationContainer; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalDataHatchMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalDataHatchMachine.java index 2e8c64a2873..a4ca898d5b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalDataHatchMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/OpticalDataHatchMachine.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.capability.IDataAccessHatch; import com.gregtechceu.gtceu.api.capability.IOpticalDataAccessHatch; import com.gregtechceu.gtceu.api.capability.forge.GTCapability; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IWorkableMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; @@ -68,7 +67,7 @@ public boolean isRecipeAvailable(@NotNull GTRecipe recipe, @NotNull Collection e.hurt(e.damageSources().lava(), 3.0f)); if (getOffsetTimer() % 10 == 0) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveFancyUIWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveFancyUIWorkableMachine.java index 76095bb8a8f..1dc01efe414 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveFancyUIWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveFancyUIWorkableMachine.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.primitive; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; public class PrimitiveFancyUIWorkableMachine extends PrimitiveWorkableMachine implements IFancyUIMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitivePumpMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitivePumpMachine.java index 872b51df5a6..5b953512d0d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitivePumpMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitivePumpMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; @@ -89,7 +88,7 @@ private void resetState() { private void produceWater() { if (getOffsetTimer() % 20 == 0 && isFormed() && !getMultiblockState().hasError()) { if (biomeModifier == 0) { - biomeModifier = GTUtil.getPumpBiomeModifier(getLevel().getBiome(getPos())); + biomeModifier = GTUtil.getPumpBiomeModifier(getLevel().getBiome(getBlockPos())); } else if (biomeModifier > 0) { if (fluidTank == null) initializeTank(); if (fluidTank != null) { @@ -106,7 +105,7 @@ private boolean isRainingInBiome() { } private Precipitation getBiomePrecipitation() { - return getLevel().getBiome(getPos()).value().getPrecipitationAt(getPos()); + return getLevel().getBiome(getBlockPos()).value().getPrecipitationAt(getBlockPos()); } public int getFluidProduction() { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java index f696917d932..66c1086ec72 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IEnvironmentalHazardEmitter; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java index 52339788437..83406826027 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.*; import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IExplosionMachine; @@ -157,7 +156,7 @@ protected void updateCurrentTemperature() { // check explosion if (drained < maxDrain) { doExplosion(2f); - var center = getPos().below().relative(getFrontFacing().getOpposite()); + var center = getBlockPos().below().relative(getFrontFacing().getOpposite()); if (GTValues.RNG.nextInt(100) > 80) { doExplosion(center, 2f); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java index af7b68fa564..41b5c56bc50 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IDisplayUIMachine; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; @@ -63,8 +62,8 @@ public SteamParallelMultiblockMachine(BlockEntityCreationInfo info, int maxParal this.maxParallels = maxParallels; } - public SteamParallelMultiblockMachine(IMachineBlockEntity holder) { - this(holder, ConfigHolder.INSTANCE.machines.steamMultiParallelAmount); + public SteamParallelMultiblockMachine(BlockEntityCreationInfo info) { + this(info, ConfigHolder.INSTANCE.machines.steamMultiParallelAmount); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java index bf3c92b2c4c..aacc33ffdaa 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.TankWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.steam.SteamBoilerMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.config.ConfigHolder; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java index e5912a916f6..e6c6a54e963 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.gui.UITemplate; import com.gregtechceu.gtceu.api.gui.widget.PredicatedImageWidget; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.*; import com.gregtechceu.gtceu.api.machine.steam.SteamWorkableMachine; @@ -127,7 +126,7 @@ public void onUnload() { ////////////////////////////////////// protected void updateAutoOutputSubscription() { var outputFacingItems = getFrontFacing(); - if (!exportItems.isEmpty() && GTTransferUtils.hasAdjacentItemHandler(getLevel(), getPos(), outputFacingItems)) { + if (!exportItems.isEmpty() && GTTransferUtils.hasAdjacentItemHandler(getLevel(), getBlockPos(), outputFacingItems)) { autoOutputSubs = subscribeServerTick(autoOutputSubs, this::autoOutput); } else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java index e11b90c981e..93546556072 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.steam.SteamBoilerMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -50,7 +49,7 @@ protected void updateSteamSubscription() { @Override protected void updateCurrentTemperature() { - if (GTUtil.canSeeSunClearly(Objects.requireNonNull(getLevel()), getPos())) { + if (GTUtil.canSeeSunClearly(Objects.requireNonNull(getLevel()), getBlockPos())) { recipeLogic.setStatus(RecipeLogic.Status.WORKING); } else { recipeLogic.setStatus(RecipeLogic.Status.IDLE); @@ -72,7 +71,7 @@ protected int getCoolDownRate() { public ModularUI createUI(Player entityPlayer) { return super.createUI(entityPlayer) .widget(new ProgressWidget( - () -> GTUtil.canSeeSunClearly(Objects.requireNonNull(getLevel()), getPos()) ? 1.0 : 0.0, 114, + () -> GTUtil.canSeeSunClearly(Objects.requireNonNull(getLevel()), getBlockPos()) ? 1.0 : 0.0, 114, 44, 20, 20) .setProgressTexture( diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java index 63dfcfb3206..58492063ae8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.steam.SteamBoilerMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java index 559a35196f7..f0f4fdc9eb9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.item.tool.GTToolType; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.TieredMachine; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputBoth; @@ -182,9 +181,9 @@ protected void updateAutoOutputSubscription() { var outputFacingItems = getOutputFacingItems(); var outputFacingFluids = getOutputFacingFluids(); if ((isAutoOutputItems() && !inventory.isEmpty() && outputFacingItems != null && - GTTransferUtils.hasAdjacentItemHandler(getLevel(), getPos(), outputFacingItems)) || + GTTransferUtils.hasAdjacentItemHandler(getLevel(), getBlockPos(), outputFacingItems)) || (isAutoOutputFluids() && !tank.isEmpty() && outputFacingFluids != null && - GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), outputFacingFluids))) { + GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getBlockPos(), outputFacingFluids))) { autoOutputSubs = subscribeServerTick(autoOutputSubs, this::autoOutput); } else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java index ae5e99e44fe..f5c49d6b925 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.PhantomSlotWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.syncsystem.annotations.SaveField; import com.gregtechceu.gtceu.utils.GTUtil; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java index 36bd8ce418b..41777d64fb1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.capability.IEnergyContainer; import com.gregtechceu.gtceu.api.capability.ILaserContainer; import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TieredMachine; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; import com.gregtechceu.gtceu.syncsystem.annotations.SaveField; @@ -73,7 +72,7 @@ protected void updateEnergyTick() { this.setIOSpeed(energyIOPerSec / 20); energyIOPerSec = 0; if (doExplosion) { - getLevel().explode(null, getPos().getX() + 0.5, getPos().getY() + 0.5, getPos().getZ() + 0.5, + getLevel().explode(null, getBlockPos().getX() + 0.5, getBlockPos().getY() + 0.5, getBlockPos().getZ() + 0.5, 1, Level.ExplosionInteraction.NONE); doExplosion = false; } @@ -83,11 +82,11 @@ protected void updateEnergyTick() { int ampsUsed = 0; for (var facing : GTUtil.DIRECTIONS) { var opposite = facing.getOpposite(); - IEnergyContainer container = GTCapabilityHelper.getEnergyContainer(getLevel(), getPos().relative(facing), + IEnergyContainer container = GTCapabilityHelper.getEnergyContainer(getLevel(), getBlockPos().relative(facing), opposite); // Try to get laser capability if (container == null) - container = GTCapabilityHelper.getLaser(getLevel(), getPos().relative(facing), opposite); + container = GTCapabilityHelper.getLaser(getLevel(), getBlockPos().relative(facing), opposite); if (container != null && container.inputsEnergy(opposite) && container.getEnergyCanBeInserted() > 0) { ampsUsed += container.acceptEnergyFromNetwork(opposite, voltage, amps - ampsUsed); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java index 21125861c87..ffdb91938a3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.PhantomFluidWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.transfer.fluid.CustomFluidTank; import com.gregtechceu.gtceu.syncsystem.annotations.SaveField; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java index 7438c37b897..a046eb76f9e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java @@ -184,7 +184,7 @@ public void onNeighborChanged(Block block, BlockPos fromPos, boolean isMoving) { protected void updateAutoOutputSubscription() { var outputFacing = getOutputFacingFluids(); if ((isAutoOutputFluids() && !cache.isEmpty()) && outputFacing != null && - GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), outputFacing)) { + GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getBlockPos(), outputFacing)) { autoOutputSubs = subscribeServerTick(autoOutputSubs, this::checkAutoOutput); } else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/LongDistanceEndpointMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/LongDistanceEndpointMachine.java index 372a297a6e9..fad35a48231 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/LongDistanceEndpointMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/LongDistanceEndpointMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; @@ -73,7 +72,7 @@ public void updateNetwork() { if (isRemote()) { return; } - LongDistanceNetwork network = LongDistanceNetwork.get(getLevel(), getPos()); + LongDistanceNetwork network = LongDistanceNetwork.get(getLevel(), getBlockPos()); if (network != null) { // manually remove this endpoint from the network network.onRemoveEndpoint(this); @@ -123,7 +122,7 @@ public void onUnload() { invalidateLink(); } setIoType(IO.NONE); - LongDistanceNetwork network = LongDistanceNetwork.get(getLevel(), getPos()); + LongDistanceNetwork network = LongDistanceNetwork.get(getLevel(), getBlockPos()); // remove endpoint from network if (network != null) network.onRemoveEndpoint(this); } @@ -134,7 +133,7 @@ public void onNeighborChanged(Block block, BlockPos fromPos, boolean isMoving) { List networks = findNetworks(); this.updateNetwork(); - LongDistanceNetwork network = LongDistanceNetwork.get(getLevel(), getPos()); + LongDistanceNetwork network = LongDistanceNetwork.get(getLevel(), getBlockPos()); if (network == null) { // shouldn't happen if (networks.isEmpty()) { @@ -166,13 +165,13 @@ private List findNetworks() { List networks = new ArrayList<>(); LongDistanceNetwork network; // only check input and output side - network = LongDistanceNetwork.get(getLevel(), getPos().relative(getFrontFacing())); + network = LongDistanceNetwork.get(getLevel(), getBlockPos().relative(getFrontFacing())); if (network != null && pipeType == network.getPipeType()) { // found a network on the input face, therefore this is an output of the network networks.add(network); setIoType(IO.OUT); } - network = LongDistanceNetwork.get(getLevel(), getPos().relative(getOutputFacing())); + network = LongDistanceNetwork.get(getLevel(), getBlockPos().relative(getOutputFacing())); if (network != null && pipeType == network.getPipeType()) { // found a network on the output face, therefore this is an input of the network networks.add(network); @@ -184,14 +183,14 @@ private List findNetworks() { @Override public ILDEndpoint getLink() { if (link == null) { - LongDistanceNetwork network = LongDistanceNetwork.get(getLevel(), getPos()); + LongDistanceNetwork network = LongDistanceNetwork.get(getLevel(), getBlockPos()); if (network != null && network.isValid()) { this.link = network.getOtherEndpoint(this); } } else if (this.link.isRemoved()) { this.link.invalidateLink(); this.link = null; - LongDistanceNetwork network = LongDistanceNetwork.get(getLevel(), getPos()); + LongDistanceNetwork network = LongDistanceNetwork.get(getLevel(), getBlockPos()); if (network != null) { network.invalidateEndpoints(); if (network.isValid()) { @@ -223,7 +222,7 @@ public List getDataInfo(PortableScannerBehavior.DisplayMode mode) { if (mode == PortableScannerBehavior.DisplayMode.SHOW_ALL || mode == PortableScannerBehavior.DisplayMode.SHOW_MACHINE_INFO) { - LongDistanceNetwork network = LongDistanceNetwork.get(getLevel(), getPos()); + LongDistanceNetwork network = LongDistanceNetwork.get(getLevel(), getBlockPos()); if (network == null) { textComponents.add(Component.translatable("block.gtceu.long_distance_item_pipeline_no_network")); } else { @@ -232,9 +231,9 @@ public List getDataInfo(PortableScannerBehavior.DisplayMode mode) { FormattingUtil.formatNumbers(network.getTotalSize()))); ILDEndpoint in = network.getActiveInputIndex(), out = network.getActiveOutputIndex(); textComponents.add(Component.translatable("block.gtceu.long_distance_item_pipeline_input_pos", - Component.literal(in == null ? "none" : in.getPos().toString()))); + Component.literal(in == null ? "none" : in.getBlockPos().toString()))); textComponents.add(Component.translatable("block.gtceu.long_distance_item_pipeline_output_pos", - Component.literal(out == null ? "none" : out.getPos().toString()))); + Component.literal(out == null ? "none" : out.getBlockPos().toString()))); } if (isInput()) { textComponents.add(Component.translatable("block.gtceu.long_distance_item_pipeline_input_endpoint")); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java index ae8a4980768..6c8169ce664 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; import com.gregtechceu.gtceu.api.item.tool.GTToolType; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.TieredMachine; @@ -224,7 +223,7 @@ public void setWorkingEnabled(boolean isWorkingAllowed) { protected void updateAutoOutputSubscription() { var outputFacing = getOutputFacingItems(); if ((isAutoOutputItems() && !stored.isEmpty()) && outputFacing != null && - GTTransferUtils.hasAdjacentItemHandler(getLevel(), getPos(), outputFacing)) { + GTTransferUtils.hasAdjacentItemHandler(getLevel(), getBlockPos(), outputFacing)) { autoOutputSubs = subscribeServerTick(autoOutputSubs, this::checkAutoOutput); } else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); @@ -290,7 +289,7 @@ public boolean onLeftClick(Player player, Level world, InteractionHand hand, Blo var drained = cache.extractItem(0, player.isShiftKeyDown() ? stored.getMaxStackSize() : 1, false); if (!drained.isEmpty()) { if (!player.addItem(drained)) { - Block.popResourceFromFace(world, getPos(), getFrontFacing(), drained); + Block.popResourceFromFace(world, getBlockPos(), getFrontFacing(), drained); } } } @@ -507,7 +506,7 @@ public boolean isItemValid(int slot, @NotNull ItemStack stack) { public void exportToNearby(@NotNull Direction... facings) { if (stored.isEmpty()) return; var level = getMachine().getLevel(); - var pos = getMachine().getPos(); + var pos = getMachine().getBlockPos(); for (Direction facing : facings) { var filter = getMachine().getItemCapFilter(facing, IO.OUT); GTTransferUtils.getAdjacentItemHandler(level, pos, facing) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java index 6e18339eb9d..db4825061ec 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java @@ -203,7 +203,7 @@ public void onNeighborChanged(Block block, BlockPos fromPos, boolean isMoving) { protected void updateAutoOutputSubscription() { var outputFacing = getOutputFacingFluids(); if ((isAutoOutputFluids() && !stored.isEmpty()) && outputFacing != null && - GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), outputFacing)) { + GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getBlockPos(), outputFacing)) { autoOutputSubs = subscribeServerTick(autoOutputSubs, this::checkAutoOutput); } else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); @@ -438,7 +438,7 @@ public boolean isFluidValid(int tank, @NotNull FluidStack stack) { public void exportToNearby(@NotNull Direction... facings) { if (stored.isEmpty()) return; var level = getMachine().getLevel(); - var pos = getMachine().getPos(); + var pos = getMachine().getBlockPos(); for (Direction facing : facings) { var filter = getMachine().getFluidCapFilter(facing, IO.OUT); GTTransferUtils.getAdjacentFluidHandler(level, pos, facing) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java index 48b9979aeb6..4deaedb2bae 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java @@ -178,10 +178,10 @@ protected boolean isOverclocked() { } private int getChunkX() { - return SectionPos.blockToSectionCoord(getMachine().getPos().getX()); + return SectionPos.blockToSectionCoord(getMachine().getBlockPos().getX()); } private int getChunkZ() { - return SectionPos.blockToSectionCoord(getMachine().getPos().getZ()); + return SectionPos.blockToSectionCoord(getMachine().getBlockPos().getZ()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CleanroomLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CleanroomLogic.java index 23264010093..65bd2a449e2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CleanroomLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CleanroomLogic.java @@ -53,7 +53,7 @@ public void serverTick() { if (duration > 0) { EnvironmentalHazardSavedData environmentalHazards = EnvironmentalHazardSavedData .getOrCreate((ServerLevel) this.getMachine().getLevel()); - var zone = environmentalHazards.getZoneByContainedPos(getMachine().getPos()); + var zone = environmentalHazards.getZoneByContainedPos(getMachine().getBlockPos()); // all maintenance problems not being fixed or there are environmental hazards in the area // means the machine does not run if (maintenanceMachine == null || maintenanceMachine.getNumMaintenanceProblems() < 6 || zone != null) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/ConverterTrait.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/ConverterTrait.java index 881efa11ef5..31bda70a7d8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/ConverterTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/ConverterTrait.java @@ -15,6 +15,7 @@ import net.minecraftforge.energy.IEnergyStorage; import lombok.Getter; +import org.jetbrains.annotations.NotNull; public class ConverterTrait extends NotifiableEnergyContainer { @@ -34,7 +35,7 @@ public class ConverterTrait extends NotifiableEnergyContainer { @Getter private final FEContainer feContainer; - public ConverterTrait(ConverterMachine machine, int amps) { + public ConverterTrait(@NotNull ConverterMachine machine, int amps) { super(machine, GTValues.V[machine.getTier()] * 16 * amps, GTValues.V[machine.getTier()], amps, GTValues.V[machine.getTier()], amps); this.amps = amps; @@ -69,7 +70,7 @@ public void serverTick() { } else { // output fe var fontFacing = machine.getFrontFacing(); var energyContainer = GTCapabilityHelper.getForgeEnergy(machine.getLevel(), - machine.getPos().relative(fontFacing), fontFacing.getOpposite()); + machine.getBlockPos().relative(fontFacing), fontFacing.getOpposite()); if (energyContainer != null && energyContainer.canReceive()) { var energyUsed = FeCompat.insertEu(energyContainer, Math.min(getEnergyStored(), voltage * amps), false); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java index 8d4f9a2634f..8e12a4b7ccc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java @@ -145,10 +145,10 @@ protected boolean isOverclocked() { } private int getChunkX() { - return SectionPos.blockToSectionCoord(getMachine().getPos().getX()); + return SectionPos.blockToSectionCoord(getMachine().getBlockPos().getX()); } private int getChunkZ() { - return SectionPos.blockToSectionCoord(getMachine().getPos().getZ()); + return SectionPos.blockToSectionCoord(getMachine().getBlockPos().getZ()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/LargeMinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/LargeMinerLogic.java index dc7b82a3650..9eae6d74bc6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/LargeMinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/LargeMinerLogic.java @@ -115,7 +115,7 @@ public void setSilkTouchMode(boolean isSilkTouchMode) { @Override public BlockPos getMiningPos() { - return getMachine().getPos().relative(getMachine().getFrontFacing().getOpposite()); + return getMachine().getBlockPos().relative(getMachine().getFrontFacing().getOpposite()); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java index 1a6027c7a21..21f2837d64e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java @@ -619,7 +619,7 @@ private void incrementPipeLength() { * @return the position to start mining from */ public BlockPos getMiningPos() { - return getMachine().getPos(); + return getMachine().getBlockPos(); } public void onRemove() { diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketMonitorGroupNBTChange.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketMonitorGroupNBTChange.java index 9b7aa42c088..dc46fce0428 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketMonitorGroupNBTChange.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketMonitorGroupNBTChange.java @@ -25,7 +25,7 @@ public class SCPacketMonitorGroupNBTChange implements GTNetwork.INetPacket { public SCPacketMonitorGroupNBTChange(ItemStack stack, MonitorGroup group, CentralMonitorMachine machine) { this.stack = stack; this.monitorGroupId = machine.getMonitorGroups().indexOf(group); - this.pos = machine.getPos(); + this.pos = machine.getBlockPos(); } public SCPacketMonitorGroupNBTChange(FriendlyByteBuf buf) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctNetHandler.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctNetHandler.java index 611446b5457..45acfd48835 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctNetHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctNetHandler.java @@ -66,8 +66,7 @@ public float changeHazard(MedicalCondition condition, float differenceAmount) { IHazardParticleContainer handler = path.getHandler(net.getLevel()); if (handler == null && path.getTargetPipe().isConnected(path.getTargetFacing())) { if (net.getLevel().getBlockEntity(path.getTargetPipePos() - .relative(path.getTargetFacing())) instanceof IMachineBlockEntity machineBE && - machineBE.getMetaMachine() instanceof IEnvironmentalHazardCleaner cleaner) { + .relative(path.getTargetFacing())) instanceof IEnvironmentalHazardCleaner cleaner) { cleaner.cleanHazard(condition, differenceAmount); break; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/longdistance/LDFluidEndpointMachine.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/longdistance/LDFluidEndpointMachine.java index 8ecac35d5a7..a420461b8ba 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/longdistance/LDFluidEndpointMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/longdistance/LDFluidEndpointMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.common.machine.storage.LongDistanceEndpointMachine; import com.gregtechceu.gtceu.utils.GTTransferUtils; @@ -29,7 +28,7 @@ public LDFluidEndpointMachine(BlockEntityCreationInfo info) { if (endpoint == null) { return null; } - return GTTransferUtils.getAdjacentFluidHandler(getLevel(), endpoint.getPos(), endpoint.getOutputFacing()) + return GTTransferUtils.getAdjacentFluidHandler(getLevel(), endpoint.getBlockPos(), endpoint.getOutputFacing()) .map(LDFluidEndpointMachine.FluidHandlerWrapper::new) .orElse(null); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/longdistance/LDItemEndpointMachine.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/longdistance/LDItemEndpointMachine.java index 19095c150b6..60eca5fee8c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/longdistance/LDItemEndpointMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/longdistance/LDItemEndpointMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.common.machine.storage.LongDistanceEndpointMachine; import com.gregtechceu.gtceu.utils.GTTransferUtils; @@ -29,7 +28,7 @@ public LDItemEndpointMachine(BlockEntityCreationInfo info) { if (endpoint == null) { return null; } - return GTTransferUtils.getAdjacentItemHandler(getLevel(), endpoint.getPos(), endpoint.getOutputFacing()) + return GTTransferUtils.getAdjacentItemHandler(getLevel(), endpoint.getBlockPos(), endpoint.getOutputFacing()) .map(ItemHandlerWrapper::new) .orElse(null); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentBlockCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentBlockCondition.java index 338314cf933..8502d903f57 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentBlockCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentBlockCondition.java @@ -106,7 +106,7 @@ public Component getTooltips() { @Override public boolean testCondition(@NotNull GTRecipe recipe, @NotNull RecipeLogic recipeLogic) { Level level = recipeLogic.getMachine().getLevel(); - BlockPos pos = recipeLogic.getMachine().getPos(); + BlockPos pos = recipeLogic.getMachine().getBlockPos(); if (level == null) { return false; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentFluidCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentFluidCondition.java index 447481e1be2..9c7e6ac0fa7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentFluidCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentFluidCondition.java @@ -106,7 +106,7 @@ public Component getTooltips() { @Override public boolean testCondition(@NotNull GTRecipe recipe, @NotNull RecipeLogic recipeLogic) { Level level = recipeLogic.getMachine().getLevel(); - BlockPos pos = recipeLogic.getMachine().getPos(); + BlockPos pos = recipeLogic.getMachine().getBlockPos(); if (level == null) { return false; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java index 829421c9286..fd128ef260b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java @@ -62,7 +62,7 @@ public Component getTooltips() { public boolean testCondition(@NotNull GTRecipe recipe, @NotNull RecipeLogic recipeLogic) { Level level = recipeLogic.machine.self().getLevel(); if (level == null) return false; - Holder biome = level.getBiome(recipeLogic.machine.self().getPos()); + Holder biome = level.getBiome(recipeLogic.machine.self().getBlockPos()); return biome.is(this.biome); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EnvironmentalHazardCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EnvironmentalHazardCondition.java index 3692627d98a..f71e74f47fe 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EnvironmentalHazardCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EnvironmentalHazardCondition.java @@ -59,7 +59,7 @@ public boolean testCondition(@NotNull GTRecipe recipe, @NotNull RecipeLogic reci return false; } EnvironmentalHazardSavedData savedData = EnvironmentalHazardSavedData.getOrCreate(serverLevel); - var zone = savedData.getZoneByContainedPos(recipeLogic.getMachine().getPos()); + var zone = savedData.getZoneByContainedPos(recipeLogic.getMachine().getBlockPos()); return zone != null && zone.strength() > 0; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/PositionYCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/PositionYCondition.java index 0f9cd15fcb9..a9f6ada2868 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/PositionYCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/PositionYCondition.java @@ -58,7 +58,7 @@ public int getMax() { @Override public boolean testCondition(@NotNull GTRecipe recipe, @NotNull RecipeLogic recipeLogic) { - int y = recipeLogic.machine.self().getPos().getY(); + int y = recipeLogic.machine.self().getBlockPos().getY(); return y >= this.min && y <= this.max; } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java index 06f24b56d02..358f0281dca 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.machine.steam.SteamMachine; import com.gregtechceu.gtceu.api.pipenet.IPipeNode; @@ -185,12 +186,12 @@ private static void renderShape(PoseStack poseStack, VertexConsumer consumer, Vo if (!materialEntry.isEmpty()) { doRenderColoredOutline = true; rgb = materialEntry.material().getMaterialRGB(); - } else if (level.getBlockEntity(pos) instanceof IMachineBlockEntity mbe) { + } else if (level.getBlockEntity(pos) instanceof MetaMachine mbe) { if (rendererCfg.coloredTieredMachineOutline) { - if (mbe.getMetaMachine() instanceof SteamMachine steam) { + if (mbe instanceof SteamMachine steam) { doRenderColoredOutline = true; rgb = steam.isHighPressure() ? GTValues.VC_HP_STEAM : GTValues.VC_LP_STEAM; - } else if (mbe.getMetaMachine() instanceof ITieredMachine tiered) { + } else if (mbe instanceof ITieredMachine tiered) { doRenderColoredOutline = true; rgb = GTValues.VCM[tiered.getTier()]; } diff --git a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java index beeb8ad9a40..bfd10ab3234 100644 --- a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java @@ -226,7 +226,7 @@ public static void onMobEffectEvent(MobEffectEvent.Applicable event) { public static void onLeftClickBlock(PlayerInteractEvent.LeftClickBlock event) { var blockState = event.getLevel().getBlockState(event.getPos()); if (blockState.hasBlockEntity() && blockState.getBlock() instanceof MetaMachineBlock block && - block.getMachine(event.getLevel(), event.getPos()) instanceof IInteractedMachine machine) { + MetaMachine.getMachine(event.getLevel(), event.getPos()) instanceof IInteractedMachine machine) { if (machine.onLeftClick(event.getEntity(), event.getLevel(), event.getHand(), event.getPos(), event.getFace())) { event.setCanceled(true); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java index fc5d0466e2e..a72871fede2 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java @@ -50,16 +50,10 @@ private static IGrid getGrid(PlaceholderContext ctx) throws PlaceholderException if (node != null) return node.getGrid(); } ; BlockEntity blockEntity = ctx.level().getBlockEntity(ctx.pos()); - if (blockEntity instanceof IMachineBlockEntity machineBlockEntity) { - if (machineBlockEntity.getMetaMachine() instanceof IGridConnectedBlockEntity gridMachine) { + if (blockEntity instanceof IGridConnectedBlockEntity gridMachine) { IGrid nullable = gridMachine.getMainNode().getGrid(); if (nullable == null) throw new NoMENetworkException(); return nullable; - } - } - if (blockEntity instanceof IGridConnectedBlockEntity gridBlockEntity) { - IGridNode node = gridBlockEntity.getGridNode(); - if (node != null) return gridBlockEntity.getGridNode().getGrid(); } throw new NoMENetworkException(); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java index 4d0c3dc2d32..56da6c774ca 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.common.machine.multiblock.part.ItemBusPartMachine; import com.gregtechceu.gtceu.integration.ae2.machine.feature.IGridConnectedMachine; import com.gregtechceu.gtceu.integration.ae2.machine.trait.GridNodeHolder; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java index a7f3614561a..a9ed031e51e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.common.machine.multiblock.part.FluidHatchPartMachine; import com.gregtechceu.gtceu.integration.ae2.machine.feature.IGridConnectedMachine; import com.gregtechceu.gtceu.integration.ae2.machine.trait.GridNodeHolder; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java index 3343ec4622b..c2a08654ab1 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IDataStickInteractable; import com.gregtechceu.gtceu.api.machine.feature.IHasCircuitSlot; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java index 17e1145ed99..747b6e45d3a 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IDataStickInteractable; import com.gregtechceu.gtceu.api.machine.feature.IHasCircuitSlot; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java index bd273947c90..81c764eb977 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java index e62715c609a..c19c95fa8e2 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java index bedc4ec4731..b03f3b32d1d 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.TickableSubscription; @@ -224,12 +223,12 @@ protected void update() { } public void addProxy(MEPatternBufferProxyPartMachine proxy) { - proxies.add(proxy.getPos()); + proxies.add(proxy.getBlockPos()); proxyMachines.add(proxy); } public void removeProxy(MEPatternBufferProxyPartMachine proxy) { - proxies.remove(proxy.getPos()); + proxies.remove(proxy.getBlockPos()); proxyMachines.remove(proxy); } @@ -427,7 +426,7 @@ public void onMachineRemoved() { @Override public InteractionResult onDataStickShiftUse(Player player, ItemStack dataStick) { - dataStick.getOrCreateTag().putIntArray("pos", new int[] { getPos().getX(), getPos().getY(), getPos().getZ() }); + dataStick.getOrCreateTag().putIntArray("pos", new int[] { getBlockPos().getX(), getBlockPos().getY(), getBlockPos().getZ() }); return InteractionResult.SUCCESS; } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferProxyPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferProxyPartMachine.java index 9517572a6ab..564f04a1dad 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferProxyPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferProxyPartMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IDataStickInteractable; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java index 3723d8307c3..2d79e13525e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; import com.gregtechceu.gtceu.api.gui.fancy.TabsWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.fancyconfigurator.AutoStockingFancyConfigurator; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java index 035859b1d25..510d1bcb14b 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; import com.gregtechceu.gtceu.api.gui.fancy.TabsWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.fancyconfigurator.AutoStockingFancyConfigurator; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/GridNodeHolder.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/GridNodeHolder.java index 3c1f6bf2ed5..dba156b9d10 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/GridNodeHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/GridNodeHolder.java @@ -47,7 +47,7 @@ protected SerializableManagedGridNode createManagedNode() { } protected void createMainNode() { - this.mainNode.create(machine.getLevel(), machine.getPos()); + this.mainNode.create(machine.getLevel(), machine.getBlockPos()); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/GridNodeHostTrait.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/GridNodeHostTrait.java index 4cbb22dc63f..7d643bbf81d 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/GridNodeHostTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/GridNodeHostTrait.java @@ -23,7 +23,7 @@ public GridNodeHostTrait(MetaMachine machine) { } public void init() { - this.proxy.create(machine.getLevel(), machine.getPos()); + this.proxy.create(machine.getLevel(), machine.getBlockPos()); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/DataBankBlockProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/DataBankBlockProvider.java index 3e57198f181..410165a70a2 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/DataBankBlockProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/DataBankBlockProvider.java @@ -27,9 +27,7 @@ public ResourceLocation getUid() { @Override public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { - if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { - MetaMachine machine = blockEntity.getMetaMachine(); - if (machine instanceof DataBankMachine) { + if (blockAccessor.getBlockEntity() instanceof DataBankMachine) { long energyUsage = blockAccessor.getServerData().getLong("energyUsage"); String energyFormatted = FormattingUtil.formatNumbers(energyUsage); // wrap in text component to keep it from being formatted @@ -41,16 +39,12 @@ public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPlugi iTooltip.add(text); } - } } @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { - if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { - MetaMachine machine = blockEntity.getMetaMachine(); - if (machine instanceof DataBankMachine dataBank) { + if (blockAccessor.getBlockEntity() instanceof DataBankMachine dataBank) { compoundTag.putLong("energyUsage", dataBank.getEnergyUsage()); } - } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/EnergyConverterModeProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/EnergyConverterModeProvider.java index addba1d4bd5..16998d96460 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/EnergyConverterModeProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/EnergyConverterModeProvider.java @@ -29,8 +29,7 @@ public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPlugi @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { - if (blockAccessor.getBlockEntity() instanceof MetaMachineBlockEntity blockEntity && - blockEntity.getMetaMachine() instanceof ConverterMachine converter) { + if (blockAccessor.getBlockEntity() instanceof ConverterMachine converter) { compoundTag.putBoolean("converterMode", converter.isFeToEu()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/GTFluidStorageProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/GTFluidStorageProvider.java index bebf882cf50..c586e9062c4 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/GTFluidStorageProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/GTFluidStorageProvider.java @@ -75,10 +75,10 @@ public List> getClientGroups(Accessor accessor, Li } else if (GTCEu.Mods.isAE2Loaded() && machine instanceof MEPatternBufferProxyPartMachine proxy) { var buffer = proxy.getBuffer(); if (buffer == null) return Collections.emptyList(); - return FluidStorageProvider.INSTANCE.getGroups(serverPlayer, serverLevel, buffer.holder, b); + return FluidStorageProvider.INSTANCE.getGroups(serverPlayer, serverLevel, proxy, b); } - return FluidStorageProvider.INSTANCE.getGroups(serverPlayer, serverLevel, mmbe, b); + return FluidStorageProvider.INSTANCE.getGroups(serverPlayer, serverLevel, machine, b); } // FluidView#readDefault can't handle amount > INT_MAX diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/GTItemStorageProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/GTItemStorageProvider.java index 7126c70604d..32c9a275697 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/GTItemStorageProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/GTItemStorageProvider.java @@ -62,9 +62,9 @@ public List> getClientGroups(Accessor accessor, Lis } else if (machine instanceof MEPatternBufferProxyPartMachine proxy) { var buffer = proxy.getBuffer(); if (buffer == null) return Collections.emptyList(); - return ItemStorageProvider.INSTANCE.getGroups(serverPlayer, serverLevel, buffer.holder, b); + return ItemStorageProvider.INSTANCE.getGroups(serverPlayer, serverLevel, machine, b); } - return ItemStorageProvider.INSTANCE.getGroups(serverPlayer, serverLevel, mmbe, b); + return ItemStorageProvider.INSTANCE.getGroups(serverPlayer, serverLevel, machine, b); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/HazardCleanerBlockProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/HazardCleanerBlockProvider.java index 8bc480e2c1a..d0d02160ae4 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/HazardCleanerBlockProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/HazardCleanerBlockProvider.java @@ -24,8 +24,7 @@ public HazardCleanerBlockProvider() { @Override protected @Nullable IEnvironmentalHazardCleaner getCapability(Level level, BlockPos pos, @Nullable Direction side) { - return level.getBlockEntity(pos) instanceof MetaMachineBlockEntity mte && - mte.getMetaMachine() instanceof IEnvironmentalHazardCleaner cleaner ? cleaner : null; + return level.getBlockEntity(pos) instanceof IEnvironmentalHazardCleaner cleaner ? cleaner : null; } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MEPatternBufferProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MEPatternBufferProvider.java index 762e9d67f65..cc218ea4ce9 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MEPatternBufferProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MEPatternBufferProvider.java @@ -28,22 +28,19 @@ public class MEPatternBufferProvider implements IBlockComponentProvider, IServer @Override public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { - if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { - if (blockEntity.getMetaMachine() instanceof MEPatternBufferPartMachine) { + if (blockAccessor.getBlockEntity() instanceof MEPatternBufferPartMachine) { CompoundTag serverData = blockAccessor.getServerData(); if (!serverData.getBoolean("formed")) return; iTooltip.add(Component.translatable("gtceu.top.proxies_bound", serverData.getInt("proxies")) .withStyle(TooltipHelper.RAINBOW_HSL_SLOW)); readBufferTag(iTooltip, serverData); - } } } @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { - if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { - if (blockEntity.getMetaMachine() instanceof MEPatternBufferPartMachine buffer) { + if (blockAccessor.getBlockEntity() instanceof MEPatternBufferPartMachine buffer) { if (!buffer.isFormed()) { compoundTag.putBoolean("formed", false); return; @@ -51,7 +48,6 @@ public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccesso compoundTag.putBoolean("formed", true); compoundTag.putInt("proxies", buffer.getProxies().size()); writeBufferTag(compoundTag, buffer); - } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MEPatternBufferProxyProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MEPatternBufferProxyProvider.java index 562b3af3d11..e12fe907658 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MEPatternBufferProxyProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MEPatternBufferProxyProvider.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.jade.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.integration.ae2.machine.MEPatternBufferProxyPartMachine; @@ -20,8 +19,7 @@ public class MEPatternBufferProxyProvider implements IBlockComponentProvider, IS @Override public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { - if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { - if (blockEntity.getMetaMachine() instanceof MEPatternBufferProxyPartMachine) { + if (blockAccessor.getBlockEntity() instanceof MEPatternBufferProxyPartMachine) { CompoundTag serverData = blockAccessor.getServerData(); if (!serverData.getBoolean("formed")) return; if (!serverData.getBoolean("bound")) { @@ -34,14 +32,12 @@ public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPlugi .withStyle(TooltipHelper.RAINBOW_HSL_SLOW)); MEPatternBufferProvider.readBufferTag(iTooltip, serverData); - } } } @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { - if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { - if (blockEntity.getMetaMachine() instanceof MEPatternBufferProxyPartMachine proxy) { + if (blockAccessor.getBlockEntity() instanceof MEPatternBufferProxyPartMachine proxy) { if (!proxy.isFormed()) { compoundTag.putBoolean("formed", false); return; @@ -54,11 +50,10 @@ public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccesso } compoundTag.putBoolean("bound", true); - var pos = buffer.getPos(); + var pos = buffer.getBlockPos(); compoundTag.putIntArray("pos", new int[] { pos.getX(), pos.getY(), pos.getZ() }); MEPatternBufferProvider.writeBufferTag(compoundTag, buffer); } - } } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MachineModeProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MachineModeProvider.java index 0abb419724e..44c43ba3274 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MachineModeProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MachineModeProvider.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.integration.jade.provider; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; @@ -52,11 +53,11 @@ public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPlugi @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { - if (blockAccessor.getBlockEntity() instanceof MetaMachineBlockEntity blockEntity) { + if (blockAccessor.getBlockEntity() instanceof MetaMachine blockEntity) { @Nullable - GTRecipeType[] recipeTypes = blockEntity.getMetaMachine().getDefinition().getRecipeTypes(); - if (recipeTypes != null && recipeTypes.length > 1) { - if (blockEntity.getMetaMachine() instanceof IRecipeLogicMachine recipeLogicMachine) { + GTRecipeType[] recipeTypes = blockEntity.getDefinition().getRecipeTypes(); + if (recipeTypes.length > 1) { + if (blockEntity instanceof IRecipeLogicMachine recipeLogicMachine) { ListTag recipeTypesTagList = new ListTag(); GTRecipeType currentRecipeType = recipeLogicMachine.getRecipeType(); int currentRecipeTypeIndex = -1; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java index 526b0399689..ddc0602122f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java @@ -30,10 +30,8 @@ public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPlugi @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { - if (blockAccessor.getBlockEntity() instanceof MetaMachineBlockEntity blockEntity) { - if (blockEntity.getMetaMachine() instanceof IMultiController controller) { - compoundTag.putBoolean("hasError", !controller.isFormed()); - } + if (blockAccessor.getBlockEntity() instanceof IMultiController controller) { + compoundTag.putBoolean("hasError", !controller.isFormed()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ParallelProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ParallelProvider.java index fc9bbaf90e3..601778931fc 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ParallelProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ParallelProvider.java @@ -62,22 +62,20 @@ public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPlugi @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { - if (blockAccessor.getBlockEntity() instanceof MetaMachineBlockEntity blockEntity) { - if (blockEntity.getMetaMachine() instanceof IParallelHatch parallelHatch) { - compoundTag.putInt("parallel", parallelHatch.getCurrentParallel()); - } else if (blockEntity.getMetaMachine() instanceof IMultiController controller) { - if (controller instanceof IRecipeLogicMachine rlm && - rlm.getRecipeLogic().isActive() && - rlm.getRecipeLogic().getLastRecipe() != null) { - compoundTag.putInt("parallel", rlm.getRecipeLogic().getLastRecipe().parallels); - compoundTag.putInt("batch", rlm.getRecipeLogic().getLastRecipe().batchParallels); - compoundTag.putInt("subtickParallel", rlm.getRecipeLogic().getLastRecipe().subtickParallels); - compoundTag.putBoolean("exact", true); - } else { - controller.getParallelHatch() - .ifPresent(parallelHatch -> compoundTag.putInt("parallel", - parallelHatch.getCurrentParallel())); - } + if (blockAccessor.getBlockEntity() instanceof IParallelHatch parallelHatch) { + compoundTag.putInt("parallel", parallelHatch.getCurrentParallel()); + } else if (blockAccessor.getBlockEntity() instanceof IMultiController controller) { + if (controller instanceof IRecipeLogicMachine rlm && + rlm.getRecipeLogic().isActive() && + rlm.getRecipeLogic().getLastRecipe() != null) { + compoundTag.putInt("parallel", rlm.getRecipeLogic().getLastRecipe().parallels); + compoundTag.putInt("batch", rlm.getRecipeLogic().getLastRecipe().batchParallels); + compoundTag.putInt("subtickParallel", rlm.getRecipeLogic().getLastRecipe().subtickParallels); + compoundTag.putBoolean("exact", true); + } else { + controller.getParallelHatch() + .ifPresent(parallelHatch -> compoundTag.putInt("parallel", + parallelHatch.getCurrentParallel())); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/PrimitivePumpBlockProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/PrimitivePumpBlockProvider.java index 7d5fa38c0d9..c24feda1525 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/PrimitivePumpBlockProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/PrimitivePumpBlockProvider.java @@ -20,23 +20,17 @@ public class PrimitivePumpBlockProvider implements IBlockComponentProvider, ISer @Override public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { - if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { - MetaMachine machine = blockEntity.getMetaMachine(); - if (machine instanceof PrimitivePumpMachine pump) { + if (blockAccessor.getBlockEntity() instanceof PrimitivePumpMachine pump) { long water = blockAccessor.getServerData().getLong("waterProduced"); iTooltip.add(Component.translatable("gtceu.top.primitive_pump_production", FormattingUtil.formatNumbers(water))); - } } } @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { - if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { - MetaMachine machine = blockEntity.getMetaMachine(); - if (machine instanceof PrimitivePumpMachine pump) { + if (blockAccessor.getBlockEntity() instanceof PrimitivePumpMachine pump) { compoundTag.putLong("waterProduced", pump.getFluidProduction()); - } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java index 789c02fc2b1..0dd1183ea13 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java @@ -91,15 +91,12 @@ protected void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, boolean isSteam = false; if (EUt > 0) { - if (blockEntity instanceof MetaMachineBlockEntity mbe) { - var machine = mbe.getMetaMachine(); - if (machine instanceof SimpleSteamMachine ssm) { - EUt = (long) Math.ceil(EUt * ssm.getConversionRate()); - isSteam = true; - } else if (machine instanceof SteamParallelMultiblockMachine smb) { - EUt = (long) Math.ceil(EUt * smb.getConversionRate()); - isSteam = true; - } + if (blockEntity instanceof SimpleSteamMachine ssm) { + EUt = (long) Math.ceil(EUt * ssm.getConversionRate()); + isSteam = true; + } else if (blockEntity instanceof SteamParallelMultiblockMachine smb) { + EUt = (long) Math.ceil(EUt * smb.getConversionRate()); + isSteam = true; } MutableComponent text; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/TransformerBlockProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/TransformerBlockProvider.java index 188aaec3e49..c525a457412 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/TransformerBlockProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/TransformerBlockProvider.java @@ -26,22 +26,17 @@ public ResourceLocation getUid() { @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { - if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { - MetaMachine machine = blockEntity.getMetaMachine(); - if (machine instanceof TransformerMachine transformer) { + if (blockAccessor.getBlockEntity() instanceof TransformerMachine transformer) { compoundTag.putInt("side", transformer.getFrontFacing().get3DDataValue()); compoundTag.putBoolean("transformUp", transformer.isTransformUp()); compoundTag.putInt("baseAmp", transformer.getBaseAmp()); compoundTag.putInt("baseVoltage", transformer.getTier()); - } } } @Override public void appendTooltip(ITooltip tooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { - if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { - MetaMachine machine = blockEntity.getMetaMachine(); - if (machine instanceof TransformerMachine transformer) { + if (blockAccessor.getBlockEntity() instanceof TransformerMachine transformer) { boolean transformUp = blockAccessor.getServerData().getBoolean("transformUp"); int voltage = blockAccessor.getServerData().getInt("baseVoltage"); int amp = blockAccessor.getServerData().getInt("baseAmp"); @@ -71,5 +66,4 @@ public void appendTooltip(ITooltip tooltip, BlockAccessor blockAccessor, IPlugin } } } - } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java index 9ae91e279bc..3c3592437a4 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.integration.kjs.builders.machine; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; @@ -98,7 +99,7 @@ public MachineDefinition get() { @FunctionalInterface public interface SteamCreationFunction { - MetaMachine create(IMachineBlockEntity holder, boolean isHighPressure); + MetaMachine create(BlockEntityCreationInfo info, boolean isHighPressure); } @FunctionalInterface diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java index 148aa32b922..4ab557c7c9f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.integration.kjs.builders.machine; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; @@ -130,13 +131,13 @@ public void generateLang(@NotNull LangEventJS lang) { @FunctionalInterface public interface TieredCreationFunction { - MetaMachine create(IMachineBlockEntity holder, int tier, Int2IntFunction tankScaling); + MetaMachine create(BlockEntityCreationInfo info, int tier, Int2IntFunction tankScaling); } @FunctionalInterface public interface CreationFunction { - T create(IMachineBlockEntity holder); + T create(BlockEntityCreationInfo info); } @FunctionalInterface diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java index f2b4dc7aa65..0ab8be82fae 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.integration.kjs.builders.machine; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; @@ -93,7 +94,7 @@ public void generateLang(LangEventJS lang) { @FunctionalInterface public interface TieredCreationFunction { - MultiblockControllerMachine create(IMachineBlockEntity holder, int tier); + MultiblockControllerMachine create(BlockEntityCreationInfo info, int tier); } @FunctionalInterface diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java index 1931a6a88f3..eda421b3120 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java @@ -77,18 +77,16 @@ public MultiblockMachineDefinition register() { public static MultiblockMachineBuilder createKJSMulti(ResourceLocation id) { return new MultiblockMachineBuilder(GTRegistration.REGISTRATE, id.getPath(), - WorkableElectricMultiblockMachine::new, MetaMachineBlock::new, MetaMachineItem::new, - MetaMachine::new); + WorkableElectricMultiblockMachine::new); } public static MultiblockMachineBuilder createKJSMulti(ResourceLocation id, KJSTieredMachineBuilder.CreationFunction machine) { return new MultiblockMachineBuilder(GTRegistration.REGISTRATE, id.getPath(), - machine::create, MetaMachineBlock::new, MetaMachineItem::new, - MetaMachine::new); + machine::create); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/MachineConstructors.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/MachineConstructors.java index 3316944aa06..40f638d7101 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/MachineConstructors.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/MachineConstructors.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.integration.kjs.helpers; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.common.machine.multiblock.electric.FusionReactorMachine; @@ -16,19 +17,19 @@ public final class MachineConstructors { // This one in particular stops a crash when trying to define a new LCE // The crash is caused by the static FluidStack members in LargeCombustionEngine.class - public static MultiblockControllerMachine createLargeCombustionEngine(IMachineBlockEntity holder, int tier) { - return new LargeCombustionEngineMachine(holder, tier); + public static MultiblockControllerMachine createLargeCombustionEngine(BlockEntityCreationInfo info, int tier) { + return new LargeCombustionEngineMachine(info, tier); } - public static MultiblockControllerMachine createLargeTurbine(IMachineBlockEntity holder, int tier) { - return new LargeTurbineMachine(holder, tier); + public static MultiblockControllerMachine createLargeTurbine(BlockEntityCreationInfo info, int tier) { + return new LargeTurbineMachine(info, tier); } - public static MultiblockControllerMachine createFusionReactor(IMachineBlockEntity holder, int tier) { - return new FusionReactorMachine(holder, tier); + public static MultiblockControllerMachine createFusionReactor(BlockEntityCreationInfo info, int tier) { + return new FusionReactorMachine(info, tier); } - public static MultiblockControllerMachine createSteamMultiblock(IMachineBlockEntity holder, int parallels) { - return new SteamParallelMultiblockMachine(holder, parallels); + public static MultiblockControllerMachine createSteamMultiblock(BlockEntityCreationInfo info, int parallels) { + return new SteamParallelMultiblockMachine(info, parallels); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/EnergyConverterModeProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/EnergyConverterModeProvider.java index 10e0a954a07..835f4b0617b 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/EnergyConverterModeProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/EnergyConverterModeProvider.java @@ -24,8 +24,7 @@ public ResourceLocation getID() { @Override public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, BlockState blockState, IProbeHitData iProbeHitData) { - if (level.getBlockEntity(iProbeHitData.getPos()) instanceof MetaMachineBlockEntity blockEntity && - blockEntity.getMetaMachine() instanceof ConverterMachine converter) { + if (level.getBlockEntity(iProbeHitData.getPos()) instanceof ConverterMachine converter) { if (converter.isFeToEu()) { iProbeInfo.text(Component.translatable("gtceu.top.convert_fe")); } else { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/HazardCleanerInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/HazardCleanerInfoProvider.java index edef831d895..c9ebdd4dfbd 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/HazardCleanerInfoProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/HazardCleanerInfoProvider.java @@ -26,8 +26,7 @@ public ResourceLocation getID() { @Nullable @Override protected IEnvironmentalHazardCleaner getCapability(Level level, BlockPos pos, @Nullable Direction side) { - return level.getBlockEntity(pos) instanceof MetaMachineBlockEntity mte && - mte.getMetaMachine() instanceof IEnvironmentalHazardCleaner cleaner ? cleaner : null; + return level.getBlockEntity(pos) instanceof IEnvironmentalHazardCleaner mte ? mte : null; } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java index a7b3b128258..9318b39946d 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java @@ -28,32 +28,30 @@ public ResourceLocation getID() { @Override public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, BlockState blockState, IProbeHitData iProbeHitData) { - if (level.getBlockEntity(iProbeHitData.getPos()) instanceof MetaMachineBlockEntity blockEntity) { - GTRecipeType[] recipeTypes = blockEntity.getMetaMachine().getDefinition().getRecipeTypes(); + if (level.getBlockEntity(iProbeHitData.getPos()) instanceof IRecipeLogicMachine recipeLogicMachine) { + GTRecipeType[] recipeTypes = recipeLogicMachine.self().getDefinition().getRecipeTypes(); if (recipeTypes.length > 1) { - if (blockEntity.getMetaMachine() instanceof IRecipeLogicMachine recipeLogicMachine) { - GTRecipeType currentRecipeType = recipeLogicMachine.getRecipeType(); - if (player.isShiftKeyDown()) { - iProbeInfo.text(Component.translatable("gtceu.top.machine_mode")); - - for (GTRecipeType recipeType : recipeTypes) { - IProbeInfo horizontalPane = iProbeInfo.horizontal( - iProbeInfo.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); - - if (recipeType == currentRecipeType) { - horizontalPane.text(ChatFormatting.BLUE + " > "); - horizontalPane.text(CompoundText.create().important("%s.%s".formatted( - recipeType.registryName.getNamespace(), recipeType.registryName.getPath()))); - } else { - horizontalPane.text(" "); - horizontalPane.text(CompoundText.create().label("%s.%s".formatted( - recipeType.registryName.getNamespace(), recipeType.registryName.getPath()))); - } + GTRecipeType currentRecipeType = recipeLogicMachine.getRecipeType(); + if (player.isShiftKeyDown()) { + iProbeInfo.text(Component.translatable("gtceu.top.machine_mode")); + + for (GTRecipeType recipeType : recipeTypes) { + IProbeInfo horizontalPane = iProbeInfo.horizontal( + iProbeInfo.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); + + if (recipeType == currentRecipeType) { + horizontalPane.text(ChatFormatting.BLUE + " > "); + horizontalPane.text(CompoundText.create().important("%s.%s".formatted( + recipeType.registryName.getNamespace(), recipeType.registryName.getPath()))); + } else { + horizontalPane.text(" "); + horizontalPane.text(CompoundText.create().label("%s.%s".formatted( + recipeType.registryName.getNamespace(), recipeType.registryName.getPath()))); } - } else { - iProbeInfo.text(Component.translatable("gtceu.top.machine_mode") - .append(Component.translatable(currentRecipeType.registryName.toLanguageKey()))); } + } else { + iProbeInfo.text(Component.translatable("gtceu.top.machine_mode") + .append(Component.translatable(currentRecipeType.registryName.toLanguageKey()))); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MultiblockStructureProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MultiblockStructureProvider.java index 12c9e44ac9f..718898df5da 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MultiblockStructureProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MultiblockStructureProvider.java @@ -24,13 +24,11 @@ public ResourceLocation getID() { @Override public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, BlockState blockState, IProbeHitData iProbeHitData) { - if (level.getBlockEntity(iProbeHitData.getPos()) instanceof MetaMachineBlockEntity blockEntity) { - if (blockEntity.getMetaMachine() instanceof IMultiController controller) { - if (!controller.isFormed()) { - iProbeInfo.text(CompoundText.create().error("gtceu.top.invalid_structure")); - } else { - iProbeInfo.text(CompoundText.create().ok("gtceu.top.valid_structure")); - } + if (level.getBlockEntity(iProbeHitData.getPos()) instanceof IMultiController controller) { + if (!controller.isFormed()) { + iProbeInfo.text(CompoundText.create().error("gtceu.top.invalid_structure")); + } else { + iProbeInfo.text(CompoundText.create().ok("gtceu.top.valid_structure")); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/ParallelProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/ParallelProvider.java index 4f803376671..6978390b61c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/ParallelProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/ParallelProvider.java @@ -30,59 +30,57 @@ public ResourceLocation getID() { public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, BlockState blockState, IProbeHitData iProbeHitData) { BlockEntity blockEntity = level.getBlockEntity(iProbeHitData.getPos()); - if (blockEntity instanceof MetaMachineBlockEntity machineBlockEntity) { - int parallel = 0; - int batch = 0; - int subtickParallel = 0; - int totalRuns = 0; - boolean exact = false; - if (machineBlockEntity.getMetaMachine() instanceof IParallelHatch parallelHatch) { - parallel = parallelHatch.getCurrentParallel(); - } else if (machineBlockEntity.getMetaMachine() instanceof IMultiController controller) { - if (controller instanceof IRecipeLogicMachine rlm && - rlm.getRecipeLogic().isActive() && - rlm.getRecipeLogic().getLastRecipe() != null) { - parallel = rlm.getRecipeLogic().getLastRecipe().parallels; - batch = rlm.getRecipeLogic().getLastRecipe().batchParallels; - subtickParallel = rlm.getRecipeLogic().getLastRecipe().subtickParallels; - totalRuns = rlm.getRecipeLogic().getLastRecipe().getTotalRuns(); - exact = true; - } else { - parallel = controller.getParallelHatch() - .map(IParallelHatch::getCurrentParallel) - .orElse(0); - } + int parallel = 0; + int batch = 0; + int subtickParallel = 0; + int totalRuns = 0; + boolean exact = false; + if (blockEntity instanceof IParallelHatch parallelHatch) { + parallel = parallelHatch.getCurrentParallel(); + } else if (blockEntity instanceof IMultiController controller) { + if (controller instanceof IRecipeLogicMachine rlm && + rlm.getRecipeLogic().isActive() && + rlm.getRecipeLogic().getLastRecipe() != null) { + parallel = rlm.getRecipeLogic().getLastRecipe().parallels; + batch = rlm.getRecipeLogic().getLastRecipe().batchParallels; + subtickParallel = rlm.getRecipeLogic().getLastRecipe().subtickParallels; + totalRuns = rlm.getRecipeLogic().getLastRecipe().getTotalRuns(); + exact = true; + } else { + parallel = controller.getParallelHatch() + .map(IParallelHatch::getCurrentParallel) + .orElse(0); } + } + + if (!exact && parallel > 1) { + Component parallels = Component.literal(FormattingUtil.formatNumbers(parallel)) + .withStyle(ChatFormatting.DARK_PURPLE); + String key = "gtceu.multiblock.parallel"; + iProbeInfo.text(Component.translatable(key, parallels)); + } else if (totalRuns > 1) { + Component runs = Component.literal(FormattingUtil.formatNumbers(totalRuns)) + .withStyle(ChatFormatting.DARK_PURPLE); + String key = "gtceu.multiblock.total_runs"; + iProbeInfo.text(Component.translatable(key, runs)); - if (!exact && parallel > 1) { + if (parallel > 1) { Component parallels = Component.literal(FormattingUtil.formatNumbers(parallel)) .withStyle(ChatFormatting.DARK_PURPLE); - String key = "gtceu.multiblock.parallel"; - iProbeInfo.text(Component.translatable(key, parallels)); - } else if (totalRuns > 1) { - Component runs = Component.literal(FormattingUtil.formatNumbers(totalRuns)) + String keyParallel = "gtceu.multiblock.parallel.exact"; + iProbeInfo.text(Component.translatable(keyParallel, parallels)); + } + if (batch > 1) { + Component batches = Component.literal(FormattingUtil.formatNumbers(batch)) + .withStyle(ChatFormatting.DARK_PURPLE); + String keyBatch = "gtceu.multiblock.batch_enabled"; + iProbeInfo.text(Component.translatable(keyBatch, batches)); + } + if (subtickParallel > 1) { + Component subticks = Component.literal(FormattingUtil.formatNumbers(subtickParallel)) .withStyle(ChatFormatting.DARK_PURPLE); - String key = "gtceu.multiblock.total_runs"; - iProbeInfo.text(Component.translatable(key, runs)); - - if (parallel > 1) { - Component parallels = Component.literal(FormattingUtil.formatNumbers(parallel)) - .withStyle(ChatFormatting.DARK_PURPLE); - String keyParallel = "gtceu.multiblock.parallel.exact"; - iProbeInfo.text(Component.translatable(keyParallel, parallels)); - } - if (batch > 1) { - Component batches = Component.literal(FormattingUtil.formatNumbers(batch)) - .withStyle(ChatFormatting.DARK_PURPLE); - String keyBatch = "gtceu.multiblock.batch_enabled"; - iProbeInfo.text(Component.translatable(keyBatch, batches)); - } - if (subtickParallel > 1) { - Component subticks = Component.literal(FormattingUtil.formatNumbers(subtickParallel)) - .withStyle(ChatFormatting.DARK_PURPLE); - String keySubtick = "gtceu.multiblock.subtick_parallels"; - iProbeInfo.text(Component.translatable(keySubtick, subticks)); - } + String keySubtick = "gtceu.multiblock.subtick_parallels"; + iProbeInfo.text(Component.translatable(keySubtick, subticks)); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java index 7ff00ff3db1..a1df325e738 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.steam.SimpleSteamMachine; import com.gregtechceu.gtceu.api.machine.steam.SteamMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; @@ -54,8 +55,7 @@ protected void addProbeInfo(RecipeLogic capability, IProbeInfo probeInfo, Player } Component text = null; - if (blockEntity instanceof IMachineBlockEntity machineBlockEntity) { - var machine = machineBlockEntity.getMetaMachine(); + if (blockEntity instanceof MetaMachine machine) { long MBt = 0; if (machine instanceof SimpleSteamMachine ssm) { MBt = (long) Math.ceil(EUt.getTotalEU() * ssm.getConversionRate()); diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/MultipleEnergyHatchTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/MultipleEnergyHatchTest.java index 197fb86d19c..e54feac84bd 100644 --- a/src/test/java/com/gregtechceu/gtceu/api/recipe/MultipleEnergyHatchTest.java +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/MultipleEnergyHatchTest.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; @@ -93,9 +94,9 @@ private static BusHolder getBussesAndForm(GameTestHelper helper) { helper.getBlockEntity(new BlockPos(1, 3, 0))); // Some instances don't have a second energy hatch var hatch2BE = helper.getBlockEntity(new BlockPos(1, 3, 0)); - if (hatch2BE instanceof MetaMachineBlockEntity hatch2MMBE) { + if (hatch2BE instanceof EnergyHatchPartMachine hatch2MMBE) { return new BusHolder(inputBus, outputBus, controller, energyHatch, - Optional.of((EnergyHatchPartMachine) hatch2MMBE.getMetaMachine())); + Optional.of(hatch2MMBE)); } return new BusHolder(inputBus, outputBus, controller, energyHatch, Optional.empty()); diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredientTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredientTest.java index cf59c2a7e9b..9b062ab42e7 100644 --- a/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredientTest.java +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredientTest.java @@ -130,7 +130,7 @@ public static void prepare(ServerLevel level) { } private static MetaMachine getMetaMachine(BlockEntity entity) { - return ((MetaMachineBlockEntity) entity).getMetaMachine(); + return (MetaMachine)entity; } private record BusHolder(ItemBusPartMachine inputBus1, FluidHatchPartMachine inputHatch1, diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredientTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredientTest.java index ace9bdf78b8..7ac0101b2bd 100644 --- a/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredientTest.java +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredientTest.java @@ -124,7 +124,7 @@ public static void prepare(ServerLevel level) { } private static MetaMachine getMetaMachine(BlockEntity entity) { - return ((MetaMachineBlockEntity) entity).getMetaMachine(); + return (MetaMachine)entity; } private record BusHolder(ItemBusPartMachine inputBus1, FluidHatchPartMachine inputHatch1, diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/AdvancedDetectorCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/AdvancedDetectorCoverTest.java index 7ba107e0120..f7f6403c7ff 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/AdvancedDetectorCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/AdvancedDetectorCoverTest.java @@ -33,7 +33,7 @@ public class AdvancedDetectorCoverTest { @GameTest(template = "electrolyzer", batch = "coverTests") public static void testAdvancedActivityDetectorCoverWithActivity(GameTestHelper helper) { helper.pullLever(new BlockPos(2, 2, 2)); - MetaMachine machine = ((IMachineBlockEntity) helper.getBlockEntity(new BlockPos(1, 2, 1))).getMetaMachine(); + MetaMachine machine = ((MetaMachine) helper.getBlockEntity(new BlockPos(1, 2, 1))); TestUtils.placeCover(helper, machine, GTItems.COVER_ACTIVITY_DETECTOR_ADVANCED.asStack(), Direction.WEST); MutableInt expected = new MutableInt(); helper.runAtTickTime(40 - machine.getOffsetTimer() % 20, () -> { @@ -53,7 +53,7 @@ public static void testAdvancedActivityDetectorCoverWithActivity(GameTestHelper @GameTest(template = "electrolyzer", batch = "coverTests") public static void testAdvancedActivityDetectorCoverWithoutActivity(GameTestHelper helper) { helper.pullLever(new BlockPos(2, 2, 2)); - MetaMachine machine = ((IMachineBlockEntity) helper.getBlockEntity(new BlockPos(1, 2, 1))).getMetaMachine(); + MetaMachine machine = ((MetaMachine) helper.getBlockEntity(new BlockPos(1, 2, 1))); TestUtils.placeCover(helper, machine, GTItems.COVER_ACTIVITY_DETECTOR_ADVANCED.asStack(), Direction.WEST); helper.runAtTickTime(20 - machine.getOffsetTimer() % 20, () -> helper.pullLever(2, 2, 2)); helper.runAtTickTime(45 - machine.getOffsetTimer() % 20, () -> { @@ -65,7 +65,7 @@ public static void testAdvancedActivityDetectorCoverWithoutActivity(GameTestHelp @GameTest(template = "electrolyzer", batch = "coverTests") public static void testAdvancedFluidDetectorCover(GameTestHelper helper) { helper.pullLever(new BlockPos(2, 2, 2)); - MetaMachine machine = ((IMachineBlockEntity) helper.getBlockEntity(new BlockPos(1, 2, 1))).getMetaMachine(); + MetaMachine machine = ((MetaMachine) helper.getBlockEntity(new BlockPos(1, 2, 1))); AdvancedFluidDetectorCover cover = (AdvancedFluidDetectorCover) TestUtils.placeCover(helper, machine, GTItems.COVER_FLUID_DETECTOR_ADVANCED.asStack(), Direction.WEST); cover.setMaxValue(100000); @@ -82,7 +82,7 @@ public static void testAdvancedFluidDetectorCover(GameTestHelper helper) { @GameTest(template = "electrolyzer", batch = "coverTests") public static void testAdvancedItemDetectorCover(GameTestHelper helper) { helper.pullLever(new BlockPos(2, 2, 2)); - MetaMachine machine = ((IMachineBlockEntity) helper.getBlockEntity(new BlockPos(1, 2, 1))).getMetaMachine(); + MetaMachine machine = ((MetaMachine) helper.getBlockEntity(new BlockPos(1, 2, 1))); AdvancedItemDetectorCover cover = (AdvancedItemDetectorCover) TestUtils.placeCover(helper, machine, GTItems.COVER_ITEM_DETECTOR_ADVANCED.asStack(), Direction.WEST); cover.setLatched(true); @@ -95,7 +95,7 @@ public static void testAdvancedItemDetectorCover(GameTestHelper helper) { @GameTest(template = "electrolyzer", batch = "coverTests") public static void testAdvancedItemDetectorCoverBelowThreshold(GameTestHelper helper) { helper.pullLever(new BlockPos(2, 2, 2)); - MetaMachine machine = ((IMachineBlockEntity) helper.getBlockEntity(new BlockPos(1, 2, 1))).getMetaMachine(); + MetaMachine machine = ((MetaMachine) helper.getBlockEntity(new BlockPos(1, 2, 1))); AdvancedItemDetectorCover cover = (AdvancedItemDetectorCover) TestUtils.placeCover(helper, machine, GTItems.COVER_ITEM_DETECTOR_ADVANCED.asStack(), Direction.WEST); cover.setMinValue(1); @@ -109,7 +109,7 @@ public static void testAdvancedItemDetectorCoverBelowThreshold(GameTestHelper he @GameTest(template = "electrolyzer", batch = "coverTests") public static void testAdvancedItemDetectorCoverAboveThreshold(GameTestHelper helper) { helper.pullLever(new BlockPos(2, 2, 2)); - MetaMachine machine = ((IMachineBlockEntity) helper.getBlockEntity(new BlockPos(1, 2, 1))).getMetaMachine(); + MetaMachine machine = ((MetaMachine) helper.getBlockEntity(new BlockPos(1, 2, 1))); machine.getItemHandlerCap(null, false).setStackInSlot(0, new ItemStack(Items.DIRT, 5)); AdvancedItemDetectorCover cover = (AdvancedItemDetectorCover) TestUtils.placeCover(helper, machine, GTItems.COVER_ITEM_DETECTOR_ADVANCED.asStack(), Direction.WEST); diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/ConveyorCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/ConveyorCoverTest.java index eca869a096f..192df16f114 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/ConveyorCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/ConveyorCoverTest.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.common.machine.storage.BufferMachine; @@ -30,10 +31,8 @@ public static void setupCrates(GameTestHelper helper) { @GameTest(template = "empty_5x5", batch = "coverTests") public static void conveyorTransfersItemsTest(GameTestHelper helper) { setupCrates(helper); - BufferMachine crate1 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - BufferMachine crate2 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); + BufferMachine crate1 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + BufferMachine crate2 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.getInventory().setStackInSlot(0, new ItemStack(Items.FLINT, 16)); // LV Cover ConveyorCover cover = (ConveyorCover) TestUtils.placeCover(helper, crate2, GTItems.CONVEYOR_MODULE_LV.asStack(), @@ -52,10 +51,8 @@ public static void conveyorTransfersItemsTest(GameTestHelper helper) { @GameTest(template = "empty_5x5", batch = "coverTests") public static void conveyorTransfersItemsWrongDirectionTest(GameTestHelper helper) { setupCrates(helper); - BufferMachine crate1 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - BufferMachine crate2 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); + BufferMachine crate1 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 1, 0)); + BufferMachine crate2 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.getInventory().setStackInSlot(0, new ItemStack(Items.FLINT, 16)); // LV Cover ConveyorCover cover = (ConveyorCover) TestUtils.placeCover(helper, crate2, GTItems.CONVEYOR_MODULE_LV.asStack(), @@ -76,10 +73,8 @@ public static void conveyorTransfersItemsWrongDirectionTest(GameTestHelper helpe @GameTest(template = "empty_5x5", batch = "coverTests") public static void conveyorPumpDoesntTransferItemsTest(GameTestHelper helper) { setupCrates(helper); - BufferMachine crate1 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - BufferMachine crate2 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); + BufferMachine crate1 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + BufferMachine crate2 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.getInventory().setStackInSlot(0, new ItemStack(Items.FLINT, 16)); // LV Cover PumpCover cover = (PumpCover) TestUtils.placeCover(helper, crate2, GTItems.ELECTRIC_PUMP_LV.asStack(), diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/DetectorCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/DetectorCoverTest.java index e4f5fd2d487..e2cd50eefd1 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/DetectorCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/DetectorCoverTest.java @@ -20,7 +20,7 @@ public class DetectorCoverTest { @GameTest(template = "electrolyzer", batch = "coverTests") public static void testActivityDetectorCover(GameTestHelper helper) { helper.pullLever(new BlockPos(2, 2, 2)); - MetaMachine machine = ((IMachineBlockEntity) helper.getBlockEntity(new BlockPos(1, 2, 1))).getMetaMachine(); + MetaMachine machine = ((MetaMachine) helper.getBlockEntity(new BlockPos(1, 2, 1))); TestUtils.placeCover(helper, machine, GTItems.COVER_ACTIVITY_DETECTOR.asStack(), Direction.WEST); helper.runAtTickTime(40, () -> { TestUtils.assertLampOn(helper, new BlockPos(0, 2, 1)); @@ -31,7 +31,7 @@ public static void testActivityDetectorCover(GameTestHelper helper) { @GameTest(template = "electrolyzer", batch = "coverTests") public static void testFluidDetectorCover(GameTestHelper helper) { helper.pullLever(new BlockPos(2, 2, 2)); - MetaMachine machine = ((IMachineBlockEntity) helper.getBlockEntity(new BlockPos(1, 2, 1))).getMetaMachine(); + MetaMachine machine = ((MetaMachine) helper.getBlockEntity(new BlockPos(1, 2, 1))); TestUtils.placeCover(helper, machine, GTItems.COVER_FLUID_DETECTOR.asStack(), Direction.WEST); helper.runAtTickTime(40, () -> { TestUtils.assertLampOn(helper, new BlockPos(0, 2, 1)); @@ -42,7 +42,7 @@ public static void testFluidDetectorCover(GameTestHelper helper) { @GameTest(template = "electrolyzer", batch = "coverTests") public static void testItemDetectorCover(GameTestHelper helper) { helper.pullLever(new BlockPos(2, 2, 2)); - MetaMachine machine = ((IMachineBlockEntity) helper.getBlockEntity(new BlockPos(1, 2, 1))).getMetaMachine(); + MetaMachine machine = ((MetaMachine) helper.getBlockEntity(new BlockPos(1, 2, 1))); TestUtils.placeCover(helper, machine, GTItems.COVER_ITEM_DETECTOR.asStack(), Direction.WEST); helper.runAtTickTime(40, () -> { TestUtils.assertLampOff(helper, new BlockPos(0, 2, 1)); diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/ItemFilterCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/ItemFilterCoverTest.java index e4418236d6d..443a57fe959 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/ItemFilterCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/ItemFilterCoverTest.java @@ -40,10 +40,8 @@ public static void setupCrates(GameTestHelper helper) { @GameTest(template = "empty_5x5", batch = "coverTests") public static void conveyorTransfersFilteredItemsTest(GameTestHelper helper) { setupCrates(helper); - BufferMachine crate1 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - BufferMachine crate2 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); + BufferMachine crate1 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + BufferMachine crate2 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.getInventory().setStackInSlot(0, new ItemStack(Items.FLINT, 8)); crate1.getInventory().setStackInSlot(1, new ItemStack(Items.DIAMOND, 16)); // LV Cover @@ -67,10 +65,8 @@ public static void conveyorTransfersFilteredItemsTest(GameTestHelper helper) { @GameTest(template = "empty_5x5", batch = "coverTests") public static void conveyorDoesntTransferFilteredItemsTest(GameTestHelper helper) { setupCrates(helper); - BufferMachine crate1 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - BufferMachine crate2 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); + BufferMachine crate1 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 1, 0)); + BufferMachine crate2 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.getInventory().setStackInSlot(0, new ItemStack(Items.FLINT, 16)); crate1.getInventory().setStackInSlot(1, new ItemStack(Items.DIAMOND, 16)); // LV Cover diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/PumpCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/PumpCoverTest.java index 327d5ef3461..b91bfa18a98 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/PumpCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/PumpCoverTest.java @@ -33,10 +33,8 @@ public static void setupCrates(GameTestHelper helper) { @GameTest(template = "empty_5x5", batch = "coverTests") public static void pumpTransfersFluidsTest(GameTestHelper helper) { setupCrates(helper); - BufferMachine crate1 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - BufferMachine crate2 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); + BufferMachine crate1 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + BufferMachine crate2 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.getFluidHandlerCap(Direction.NORTH, false).setFluidInTank(0, new FluidStack(Fluids.WATER, 1000)); // LV Cover PumpCover cover = (PumpCover) TestUtils.placeCover(helper, crate2, GTItems.ELECTRIC_PUMP_LV.asStack(), @@ -55,10 +53,8 @@ public static void pumpTransfersFluidsTest(GameTestHelper helper) { @GameTest(template = "empty_5x5", batch = "coverTests") public static void pumpTransfersFluidsWrongDirectionTest(GameTestHelper helper) { setupCrates(helper); - BufferMachine crate1 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - BufferMachine crate2 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); + BufferMachine crate1 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 1, 0)); + BufferMachine crate2 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.getFluidHandlerCap(Direction.NORTH, false).setFluidInTank(0, new FluidStack(Fluids.WATER, 1000)); // LV Cover PumpCover cover = (PumpCover) TestUtils.placeCover(helper, crate2, GTItems.ELECTRIC_PUMP_LV.asStack(), @@ -79,10 +75,8 @@ public static void pumpTransfersFluidsWrongDirectionTest(GameTestHelper helper) @GameTest(template = "empty_5x5", batch = "coverTests") public static void pumpDoesntTransferItemsTest(GameTestHelper helper) { setupCrates(helper); - BufferMachine crate1 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - BufferMachine crate2 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); + BufferMachine crate1 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 1, 0)); + BufferMachine crate2 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.getInventory().setStackInSlot(0, new ItemStack(Items.FLINT, 16)); // LV Cover PumpCover cover = (PumpCover) TestUtils.placeCover(helper, crate2, GTItems.ELECTRIC_PUMP_LV.asStack(), diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/RobotArmTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/RobotArmTest.java index f23316eaaed..c0fb66ab6be 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/RobotArmTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/RobotArmTest.java @@ -30,10 +30,8 @@ public static void setupCrates(GameTestHelper helper) { @GameTest(template = "empty_5x5", batch = "coverTests") public static void robotArmKeepExactTest(GameTestHelper helper) { setupCrates(helper); - CrateMachine crate1 = (CrateMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - CrateMachine crate2 = (CrateMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); + CrateMachine crate1 = (CrateMachine)helper.getBlockEntity(new BlockPos(0, 1, 0)); + CrateMachine crate2 = (CrateMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.inventory.setStackInSlot(0, new ItemStack(Items.FLINT, 16)); // LV Cover RobotArmCover cover = (RobotArmCover) TestUtils.placeCover(helper, crate2, GTItems.ROBOT_ARM_LV.asStack(), @@ -55,10 +53,8 @@ public static void robotArmKeepExactTest(GameTestHelper helper) { @GameTest(template = "empty_5x5", batch = "coverTests") public static void robotArmTransferExactTest(GameTestHelper helper) { setupCrates(helper); - CrateMachine crate1 = (CrateMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - CrateMachine crate2 = (CrateMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); + CrateMachine crate1 = (CrateMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + CrateMachine crate2 = (CrateMachine)helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.inventory.setStackInSlot(0, new ItemStack(Items.FLINT, 16)); // LV Cover RobotArmCover cover = (RobotArmCover) TestUtils.placeCover(helper, crate2, GTItems.ROBOT_ARM_LV.asStack(), @@ -80,10 +76,8 @@ public static void robotArmTransferExactTest(GameTestHelper helper) { @GameTest(template = "empty_5x5", batch = "coverTests") public static void robotArmTransferAnyTest(GameTestHelper helper) { setupCrates(helper); - CrateMachine crate1 = (CrateMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - CrateMachine crate2 = (CrateMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); + CrateMachine crate1 = (CrateMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + CrateMachine crate2 = (CrateMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.inventory.setStackInSlot(0, new ItemStack(Items.FLINT, 16)); // LV Cover RobotArmCover cover = (RobotArmCover) TestUtils.placeCover(helper, crate2, GTItems.ROBOT_ARM_LV.asStack(), diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/ShutterCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/ShutterCoverTest.java index 5bd6f45d27e..b1a5bce90b8 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/ShutterCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/ShutterCoverTest.java @@ -29,10 +29,8 @@ public static void setupCrates(GameTestHelper helper) { @GameTest(template = "empty_5x5", batch = "coverTests") public static void shutterCoverBlocksTransferTest(GameTestHelper helper) { setupCrates(helper); - BufferMachine crate1 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - BufferMachine crate2 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); + BufferMachine crate1 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 1, 0)); + BufferMachine crate2 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.getInventory().setStackInSlot(0, new ItemStack(Items.FLINT, 16)); crate1.getInventory().setStackInSlot(1, new ItemStack(Items.DIAMOND, 16)); // LV Cover diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/SolarPanelTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/SolarPanelTest.java index 0e69866abfa..1d8f241ff86 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/SolarPanelTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/SolarPanelTest.java @@ -20,9 +20,7 @@ public class SolarPanelTest { private static BatteryBufferMachine getBatteryBuffer(GameTestHelper helper) { - // noinspection DataFlowIssue - return (BatteryBufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); + return (BatteryBufferMachine)helper.getBlockEntity(new BlockPos(0, 1, 0)); } @GameTest(template = "solar", batch = "coverTests") diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCoverTest.java index 33f64bc7683..01615608f10 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCoverTest.java @@ -34,7 +34,7 @@ public static void wirelessTransmitterCoverTest(GameTestHelper helper) { WirelessTransmitterCover cover = (WirelessTransmitterCover) batteryBuffer.getCoverContainer() .getCoverAtSide(Direction.UP); MonitorGroup group = machine.getMonitorGroups().get(0); - group.setTarget(dataHatch.getPos()); + group.setTarget(dataHatch.getBlockPos()); Supplier module = () -> group.getItemStackHandler().getStackInSlot(0); ItemStack stack = dataHatch.getDataItems().getStackInSlot(3); // noinspection DataFlowIssue diff --git a/src/test/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachineTest.java b/src/test/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachineTest.java index e4e27ac51aa..629c07d4b2a 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachineTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachineTest.java @@ -28,11 +28,9 @@ public static void prepare(ServerLevel level) {} public static void ItemBusPartMachineAutoImportTest(GameTestHelper helper) { helper.setBlock(new BlockPos(0, 1, 0), GTMachines.BRONZE_CRATE.getBlock()); helper.setBlock(new BlockPos(0, 2, 0), GTMachines.ITEM_IMPORT_BUS[1].getBlock()); - CrateMachine crate = (CrateMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - ItemBusPartMachine itemBus = (ItemBusPartMachine) ((MetaMachineBlockEntity) helper - .getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); + CrateMachine crate = (CrateMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + ItemBusPartMachine itemBus = (ItemBusPartMachine) helper + .getBlockEntity(new BlockPos(0, 2, 0)); itemBus.setFrontFacing(Direction.DOWN); crate.inventory.setStackInSlot(0, new ItemStack(Blocks.STONE, 16)); helper.succeedWhen(() -> { @@ -47,11 +45,9 @@ public static void ItemBusPartMachineAutoImportTest(GameTestHelper helper) { public static void ItemBusPartMachineAutoImportFalseWhenOffTest(GameTestHelper helper) { helper.setBlock(new BlockPos(0, 1, 0), GTMachines.BRONZE_CRATE.getBlock()); helper.setBlock(new BlockPos(0, 2, 0), GTMachines.ITEM_IMPORT_BUS[1].getBlock()); - CrateMachine crate = (CrateMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - ItemBusPartMachine itemBus = (ItemBusPartMachine) ((MetaMachineBlockEntity) helper - .getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); + CrateMachine crate = (CrateMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + ItemBusPartMachine itemBus = (ItemBusPartMachine) helper + .getBlockEntity(new BlockPos(0, 2, 0)); itemBus.setFrontFacing(Direction.DOWN); itemBus.setWorkingEnabled(false); crate.inventory.setStackInSlot(0, new ItemStack(Blocks.STONE, 16)); @@ -68,11 +64,9 @@ public static void ItemBusPartMachineAutoImportFalseWhenOffTest(GameTestHelper h public static void ItemBusPartMachineAutoExportTest(GameTestHelper helper) { helper.setBlock(new BlockPos(0, 1, 0), GTMachines.BRONZE_CRATE.getBlock()); helper.setBlock(new BlockPos(0, 2, 0), GTMachines.ITEM_EXPORT_BUS[1].getBlock()); - CrateMachine crate = (CrateMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - ItemBusPartMachine itemBus = (ItemBusPartMachine) ((MetaMachineBlockEntity) helper - .getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); + CrateMachine crate = (CrateMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + ItemBusPartMachine itemBus = (ItemBusPartMachine) helper + .getBlockEntity(new BlockPos(0, 2, 0)); itemBus.setFrontFacing(Direction.DOWN); itemBus.getInventory().setStackInSlot(0, new ItemStack(Blocks.STONE, 16)); helper.succeedWhen(() -> { @@ -87,11 +81,9 @@ public static void ItemBusPartMachineAutoExportTest(GameTestHelper helper) { public static void ItemBusPartMachineAutoExportFalseWhenOffTest(GameTestHelper helper) { helper.setBlock(new BlockPos(0, 1, 0), GTMachines.BRONZE_CRATE.getBlock()); helper.setBlock(new BlockPos(0, 2, 0), GTMachines.ITEM_EXPORT_BUS[1].getBlock()); - CrateMachine crate = (CrateMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - ItemBusPartMachine itemBus = (ItemBusPartMachine) ((MetaMachineBlockEntity) helper - .getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); + CrateMachine crate = (CrateMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + ItemBusPartMachine itemBus = (ItemBusPartMachine) helper + .getBlockEntity(new BlockPos(0, 2, 0)); itemBus.setFrontFacing(Direction.DOWN); itemBus.setWorkingEnabled(false); itemBus.getInventory().setStackInSlot(0, new ItemStack(Blocks.STONE, 16)); @@ -109,13 +101,10 @@ public static void ItemBusPartMachineAutoPassthroughTest(GameTestHelper helper) helper.setBlock(new BlockPos(0, 1, 0), GTMachines.BRONZE_CRATE.getBlock()); helper.setBlock(new BlockPos(0, 2, 0), GTMachines.ITEM_PASSTHROUGH_HATCH[1].getBlock()); helper.setBlock(new BlockPos(0, 3, 0), GTMachines.BRONZE_CRATE.getBlock()); - CrateMachine crate = (CrateMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - ItemBusPartMachine itemBus = (ItemBusPartMachine) ((MetaMachineBlockEntity) helper - .getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); - CrateMachine crate2 = (CrateMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 3, 0))) - .getMetaMachine(); + CrateMachine crate = (CrateMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + ItemBusPartMachine itemBus = (ItemBusPartMachine) helper + .getBlockEntity(new BlockPos(0, 2, 0)); + CrateMachine crate2 = (CrateMachine) helper.getBlockEntity(new BlockPos(0, 3, 0)); itemBus.setFrontFacing(Direction.DOWN); crate.inventory.setStackInSlot(0, new ItemStack(Blocks.STONE, 16)); helper.succeedWhen(() -> { @@ -131,13 +120,10 @@ public static void ItemBusPartMachineAutoPassthroughFalseWhenOffTest(GameTestHel helper.setBlock(new BlockPos(0, 1, 0), GTMachines.BRONZE_CRATE.getBlock()); helper.setBlock(new BlockPos(0, 2, 0), GTMachines.ITEM_PASSTHROUGH_HATCH[1].getBlock()); helper.setBlock(new BlockPos(0, 3, 0), GTMachines.BRONZE_CRATE.getBlock()); - CrateMachine crate = (CrateMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0))) - .getMetaMachine(); - ItemBusPartMachine itemBus = (ItemBusPartMachine) ((MetaMachineBlockEntity) helper - .getBlockEntity(new BlockPos(0, 2, 0))) - .getMetaMachine(); - CrateMachine crate2 = (CrateMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 3, 0))) - .getMetaMachine(); + CrateMachine crate = (CrateMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + ItemBusPartMachine itemBus = (ItemBusPartMachine) helper + .getBlockEntity(new BlockPos(0, 2, 0)); + CrateMachine crate2 = (CrateMachine) helper.getBlockEntity(new BlockPos(0, 3, 0)); itemBus.setFrontFacing(Direction.DOWN); itemBus.setWorkingEnabled(false); crate.inventory.setStackInSlot(0, new ItemStack(Blocks.STONE, 16)); diff --git a/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java b/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java index bf4f9ca239b..acdb913464f 100644 --- a/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java +++ b/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java @@ -236,7 +236,7 @@ public static CoverBehavior placeCover(GameTestHelper helper, MetaMachine machin public static MetaMachine setMachine(GameTestHelper helper, BlockPos pos, MachineDefinition machineDefinition) { helper.setBlock(pos, machineDefinition.getBlock()); - return ((IMachineBlockEntity) Objects.requireNonNull(helper.getBlockEntity(pos))).getMetaMachine(); + return ((MetaMachine)Objects.requireNonNull(helper.getBlockEntity(pos))); } public static void assertEqual(GameTestHelper helper, List text, String s) { @@ -272,7 +272,7 @@ public static void assertLampOff(GameTestHelper helper, BlockPos pos) { * @return the machine held, if any */ public static MetaMachine getMetaMachine(BlockEntity entity) { - return ((MetaMachineBlockEntity) entity).getMetaMachine(); + return (MetaMachine)entity; } /** From 82aa4b956f005482bc8ad08df1a8638c18ef4a01 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 12 Dec 2025 10:56:14 +1100 Subject: [PATCH 13/41] fix some small sync errors --- .../api/blockentity/PipeBlockEntity.java | 6 - .../gtceu/api/machine/MetaMachine.java | 123 ++++++++---------- .../multiblock/part/DiodePartMachine.java | 19 +-- .../syncsystem/ManagedSyncBlockEntity.java | 15 +-- 4 files changed, 65 insertions(+), 98 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java index 32913faacbc..85a2edddaa4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java @@ -437,10 +437,4 @@ public static boolean isFaceBlocked(int blockedConnections, Direction side) { public static boolean isConnected(int connections, Direction side) { return (connections & (1 << side.ordinal())) > 0; } - - @Override - public void load(CompoundTag tag) { - TagFixer.fixFluidTags(tag); - super.load(tag); - } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index a230cee4dfb..d620374c762 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -31,11 +31,9 @@ import com.gregtechceu.gtceu.common.cover.FluidFilterCover; import com.gregtechceu.gtceu.common.cover.ItemFilterCover; import com.gregtechceu.gtceu.common.cover.data.ManualIOMode; -import com.gregtechceu.gtceu.common.datafixers.TagFixer; import com.gregtechceu.gtceu.common.item.tool.behavior.ToolModeSwitchBehavior; import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; import com.gregtechceu.gtceu.common.machine.owner.PlayerOwner; -import com.gregtechceu.gtceu.syncsystem.ISyncManaged; import com.gregtechceu.gtceu.syncsystem.ManagedSyncBlockEntity; import com.gregtechceu.gtceu.syncsystem.SyncDataHolder; import com.gregtechceu.gtceu.syncsystem.annotations.RerenderOnChanged; @@ -54,7 +52,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.locale.Language; -import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; @@ -104,9 +101,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class MetaMachine extends ManagedSyncBlockEntity - implements ISyncManaged, IToolable, ITickSubscription, IToolGridHighlight, - IFancyTooltip, IPaintable, IRedstoneSignalMachine { +public class MetaMachine extends ManagedSyncBlockEntity implements IToolable, ITickSubscription, IToolGridHighlight, IFancyTooltip, IPaintable, IRedstoneSignalMachine { ModelProperty MODEL_DATA_LEVEL = new ModelProperty<>(); ModelProperty MODEL_DATA_POS = new ModelProperty<>(); @@ -148,7 +143,6 @@ public class MetaMachine extends ManagedSyncBlockEntity public MetaMachine(BlockEntityCreationInfo info) { super(info.type(), info.pos(), info.state()); - this.renderState = getDefinition().defaultRenderState(); this.coverContainer = new MachineCoverContainer(this); this.traits = new ArrayList<>(); @@ -166,12 +160,6 @@ public final void setRemoved() { onUnload(); } - @Override - public final void load(@NotNull CompoundTag tag) { - TagFixer.fixFluidTags(tag); - super.load(tag); - } - public @UnknownNullability Level getLevel() { return super.getLevel(); } @@ -197,7 +185,7 @@ public boolean triggerEvent(int id, int para) { } @Override - public void scheduleRenderUpdate() { + public final void scheduleRenderUpdate() { var pos = getBlockPos(); var level = getLevel(); if (level != null) { @@ -329,6 +317,7 @@ private void executeTick() { ////////////////////////////////////// // ******* Interaction *******// ////////////////////////////////////// + /** * Called when a player clicks this meta tile entity with a tool * @@ -761,7 +750,57 @@ public long getOffsetTimer() { } ////////////////////////////////////// - // ****** Capability ********// + // ******** GUI *********// + ////////////////////////////////////// + @Override + public IGuiTexture getFancyTooltipIcon() { + return GuiTextures.INFO_ICON; + } + + @Override + public final List getFancyTooltip() { + var tooltips = new ArrayList(); + onAddFancyInformationTooltip(tooltips); + return tooltips; + } + + @Override + public boolean showFancyTooltip() { + return !getFancyTooltip().isEmpty(); + } + + public void onAddFancyInformationTooltip(List tooltips) { + getDefinition().getTooltipBuilder().accept(getDefinition().asStack(), tooltips); + String mainKey = String.format("%s.machine.%s.tooltip", getDefinition().getId().getNamespace(), + getDefinition().getId().getPath()); + if (Language.getInstance().has(mainKey)) { + tooltips.add(0, Component.translatable(mainKey)); + } + } + + @Override + public int getDefaultPaintingColor() { + return getDefinition().getDefaultPaintingColor(); + } + + @SuppressWarnings("unchecked") + @OnlyIn(Dist.CLIENT) + @Override + public AABB getRenderBoundingBox() { + BlockRenderDispatcher blockRenderDispatcher = Minecraft.getInstance().getBlockRenderer(); + BakedModel model = blockRenderDispatcher.getBlockModel(this.getBlockState()); + + if (model instanceof IBlockEntityRendererBakedModel modelWithBER) { + if (modelWithBER.getBlockEntityType() == this.getType()) { + return ((IBlockEntityRendererBakedModel) modelWithBER) + .getRenderBoundingBox(this); + } + } + return new AABB(worldPosition.offset(-1, 0, -1), worldPosition.offset(2, 2, 2)); + } + + ////////////////////////////////////// + // ******** Capabilities *********// ////////////////////////////////////// public Predicate getItemCapFilter(@Nullable Direction side, IO io) { @@ -848,60 +887,6 @@ public IFluidHandlerModifiable getFluidHandlerCap(@Nullable Direction side, bool return cover != null ? cover.getFluidHandlerCap(handlerList) : handlerList; } - ////////////////////////////////////// - // ******** GUI *********// - ////////////////////////////////////// - @Override - public IGuiTexture getFancyTooltipIcon() { - return GuiTextures.INFO_ICON; - } - - @Override - public final List getFancyTooltip() { - var tooltips = new ArrayList(); - onAddFancyInformationTooltip(tooltips); - return tooltips; - } - - @Override - public boolean showFancyTooltip() { - return !getFancyTooltip().isEmpty(); - } - - public void onAddFancyInformationTooltip(List tooltips) { - getDefinition().getTooltipBuilder().accept(getDefinition().asStack(), tooltips); - String mainKey = String.format("%s.machine.%s.tooltip", getDefinition().getId().getNamespace(), - getDefinition().getId().getPath()); - if (Language.getInstance().has(mainKey)) { - tooltips.add(0, Component.translatable(mainKey)); - } - } - - @Override - public int getDefaultPaintingColor() { - return getDefinition().getDefaultPaintingColor(); - } - - @SuppressWarnings("unchecked") - @OnlyIn(Dist.CLIENT) - @Override - public AABB getRenderBoundingBox() { - BlockRenderDispatcher blockRenderDispatcher = Minecraft.getInstance().getBlockRenderer(); - BakedModel model = blockRenderDispatcher.getBlockModel(this.getBlockState()); - - if (model instanceof IBlockEntityRendererBakedModel modelWithBER) { - if (modelWithBER.getBlockEntityType() == this.getType()) { - return ((IBlockEntityRendererBakedModel) modelWithBER) - .getRenderBoundingBox(this); - } - } - return new AABB(worldPosition.offset(-1, 0, -1), worldPosition.offset(2, 2, 2)); - } - - ////////////////////////////////////// - // ******** Capabilities *********// - ////////////////////////////////////// - @Override public @NotNull LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { var result = getCapability(this, cap, side); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java index f6431865e33..0fef4525b33 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java @@ -6,6 +6,8 @@ import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; +import com.gregtechceu.gtceu.syncsystem.annotations.ClientFieldChangeListener; +import com.gregtechceu.gtceu.syncsystem.annotations.RerenderOnChanged; import com.gregtechceu.gtceu.syncsystem.annotations.SaveField; import com.gregtechceu.gtceu.syncsystem.annotations.SyncToClient; @@ -90,6 +92,7 @@ private void cycleAmpMode() { amps = amps == getMaxAmperage() ? 1 : amps << 1; if (!isRemote()) { syncDataHolder.markClientSyncFieldDirty("amps"); + reinitializeEnergyContainer(); notifyBlockUpdate(); } @@ -139,17 +142,9 @@ protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand h return InteractionResult.CONSUME; } - @SuppressWarnings("unused") - public void onAmpUpdated(int newValue, int oldValue) { - this.scheduleRenderUpdate(); - } - - @Override - public void scheduleRenderUpdate() { - if (!isRemote()) { - setRenderState(getRenderState() - .setValue(GTMachineModelProperties.DIODE_AMP_MODE, AmpMode.getByValue(this.amps))); - super.scheduleRenderUpdate(); - } + @ClientFieldChangeListener(fieldName = "amps") + public void onAmpUpdated() { + setRenderState(getRenderState().setValue(GTMachineModelProperties.DIODE_AMP_MODE, AmpMode.getByValue(this.amps))); + scheduleRenderUpdate(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java index c7d817a21ff..0debd108336 100644 --- a/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.syncsystem; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.common.network.GTNetwork; import com.gregtechceu.gtceu.syncsystem.network.SPacketUpdateBESyncValue; @@ -43,13 +44,11 @@ protected final void saveAdditional(CompoundTag tag) { } @Override - public void load(CompoundTag tag) { + public final void load(CompoundTag tag) { super.load(tag); - getSyncDataHolder().deserializeNBT(tag, false); + getSyncDataHolder().deserializeNBT(tag, (getLevel() == null ? GTCEu.isClientThread() : getLevel().isClientSide)); } - // Called when a client loads this BlockEntity - @Override public CompoundTag getUpdateTag() { CompoundTag tag = new CompoundTag(); @@ -58,11 +57,6 @@ public CompoundTag getUpdateTag() { return tag; } - @Override - public void handleUpdateTag(CompoundTag tag) { - getSyncDataHolder().deserializeNBT(tag, true); - } - @Override public final void markAsChanged() { isDirty = true; @@ -73,8 +67,7 @@ public final void updateTick() { if (isDirty) { var level = getLevel(); if (level == null) return; - GTNetwork.sendToAllPlayersTrackingChunk(level.getChunkAt(getBlockPos()), - new SPacketUpdateBESyncValue(this)); + GTNetwork.sendToAllPlayersTrackingChunk(level.getChunkAt(getBlockPos()), new SPacketUpdateBESyncValue(this)); isDirty = false; } } From ce1fcf758190e06948079baad67a06caa1fb7d4e Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 12 Dec 2025 11:59:02 +1100 Subject: [PATCH 14/41] spotless stuff, create IGregtechBlockEntity --- .../gtceu/api/block/PipeBlock.java | 4 +- .../api/blockentity/IGregtechBlockEntity.java | 53 ++++++++++++++++ .../api/blockentity/PipeBlockEntity.java | 19 +++--- .../gtceu/api/capability/ICoverable.java | 56 ++++++++++++++--- .../gtceu/api/cover/CoverBehavior.java | 2 +- .../gregtechceu/gtceu/api/cover/IUICover.java | 2 +- .../gtceu/api/cover/filter/FilterHandler.java | 2 +- .../gtceu/api/gui/factory/CoverUIFactory.java | 2 +- .../api/gui/widget/PatternPreviewWidget.java | 1 - .../api/machine/IMachineBlockEntity.java | 56 ----------------- .../api/machine/MachineCoverContainer.java | 59 +---------------- .../gtceu/api/machine/MetaMachine.java | 39 ++++-------- .../gtceu/api/machine/feature/IUIMachine.java | 4 +- .../gtceu/api/machine/trait/RecipeLogic.java | 3 +- .../gtceu/api/pattern/MultiblockState.java | 1 - .../gtceu/api/pipenet/IPipeNode.java | 53 +++------------- .../gtceu/api/pipenet/PipeCoverContainer.java | 63 +------------------ .../gtceu/api/pipenet/PipeNetWalker.java | 2 +- .../client/model/machine/MachineModel.java | 3 +- .../multipart/MultiPartBakedModel.java | 2 +- .../MultiblockInWorldPreviewRenderer.java | 1 - .../blockentity/DuctPipeBlockEntity.java | 7 +-- .../blockentity/FluidPipeBlockEntity.java | 22 +++---- .../blockentity/LaserPipeBlockEntity.java | 6 +- .../blockentity/OpticalPipeBlockEntity.java | 8 +-- .../common/cover/ComputerMonitorCover.java | 3 +- .../gtceu/common/cover/ConveyorCover.java | 6 +- .../gtceu/common/cover/CoverSolarPanel.java | 4 +- .../common/cover/InfiniteWaterCover.java | 4 +- .../gtceu/common/cover/ItemFilterCover.java | 2 +- .../common/cover/MachineControllerCover.java | 4 +- .../gtceu/common/cover/PumpCover.java | 2 +- .../cover/WirelessTransmitterCover.java | 6 +- .../cover/detector/ActivityDetectorCover.java | 4 +- .../AdvancedActivityDetectorCover.java | 2 +- .../cover/detector/EnergyDetectorCover.java | 3 +- .../cover/detector/FluidDetectorCover.java | 2 +- .../cover/detector/ItemDetectorCover.java | 2 +- .../detector/MaintenanceDetectorCover.java | 5 +- .../cover/ender/EnderFluidLinkCover.java | 2 +- .../cover/ender/EnderRedstoneLinkCover.java | 2 +- .../gtceu/common/data/GTPlaceholders.java | 5 +- .../data/machines/GTResearchMachines.java | 1 - .../common/item/ColorSprayBehaviour.java | 2 +- .../common/item/PortableScannerBehavior.java | 1 - .../MetaMachineConfigCopyBehaviour.java | 1 - .../item/tool/behavior/PlungerBehavior.java | 1 - .../machine/electric/BlockBreakerMachine.java | 3 +- .../machine/electric/FisherMachine.java | 3 +- .../gcym/LargeMacerationTowerMachine.java | 6 +- .../LargeCombustionEngineMachine.java | 3 +- .../multiblock/part/CokeOvenHatch.java | 3 +- .../multiblock/part/DiodePartMachine.java | 4 +- .../multiblock/part/DualHatchPartMachine.java | 10 +-- .../part/FluidHatchPartMachine.java | 10 +-- .../multiblock/part/ItemBusPartMachine.java | 14 ++--- .../part/SteamItemBusPartMachine.java | 13 ++-- .../multiblock/part/TankValvePartMachine.java | 3 +- .../machine/steam/SteamMinerMachine.java | 3 +- .../machine/steam/SteamSolarBoiler.java | 3 +- .../CreativeEnergyContainerMachine.java | 6 +- .../pipelike/cable/EnergyNetHandler.java | 8 +-- .../common/pipelike/duct/DuctNetHandler.java | 5 +- .../common/pipelike/duct/DuctRoutePath.java | 2 +- .../common/pipelike/item/ItemNetHandler.java | 12 ++-- .../common/pipelike/item/ItemRoutePath.java | 2 +- .../pipelike/laser/LaserNetHandler.java | 4 +- .../pipelike/optical/OpticalNetHandler.java | 6 +- .../pipelike/optical/OpticalRoutePath.java | 6 +- .../mixins/client/LevelRendererMixin.java | 1 - .../integration/ae2/GTAEPlaceholders.java | 7 +-- .../machine/MEPatternBufferPartMachine.java | 3 +- .../peripherals/CoverHolderPeripheral.java | 2 +- .../jade/provider/DataBankBlockProvider.java | 28 ++++----- .../provider/MEPatternBufferProvider.java | 25 ++++---- .../MEPatternBufferProxyProvider.java | 54 ++++++++-------- .../provider/PrimitivePumpBlockProvider.java | 12 ++-- .../provider/TransformerBlockProvider.java | 62 +++++++++--------- .../machine/KJSSteamMachineBuilder.java | 1 - .../machine/KJSTieredMachineBuilder.java | 1 - .../machine/KJSTieredMultiblockBuilder.java | 1 - .../machine/KJSWrappingMultiblockBuilder.java | 1 - .../kjs/helpers/MachineConstructors.java | 1 - .../top/provider/RecipeLogicInfoProvider.java | 1 - .../syncsystem/ManagedSyncBlockEntity.java | 6 +- .../api/recipe/MultipleEnergyHatchTest.java | 1 - .../IntProviderFluidIngredientTest.java | 2 +- .../ingredient/IntProviderIngredientTest.java | 2 +- .../gtceu/common/cover/ConveyorCoverTest.java | 5 +- .../gtceu/common/cover/DetectorCoverTest.java | 1 - .../common/cover/ItemFilterCoverTest.java | 4 +- .../gtceu/common/cover/PumpCoverTest.java | 6 +- .../gtceu/common/cover/RobotArmTest.java | 4 +- .../gtceu/common/cover/ShutterCoverTest.java | 4 +- .../gtceu/gametest/util/TestUtils.java | 9 ++- 95 files changed, 378 insertions(+), 529 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/blockentity/IGregtechBlockEntity.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java index 91b4258f295..fccd8a8bc3d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java @@ -168,7 +168,7 @@ public void onNeighborChange(BlockState state, LevelReader level, BlockPos pos, pipeTile.setConnection(facing, true, false); if (open && !canConnect) pipeTile.setConnection(facing, false, false); - updateActiveNodeStatus(pipeTile.getPipeLevel(), pos, pipeTile); + updateActiveNodeStatus(pipeTile.getLevel(), pos, pipeTile); } PipeNet net = pipeTile.getPipeNet(); if (net != null) { @@ -198,7 +198,7 @@ public IPipeNode getPipeTile(BlockGetter level, BlockPos protected void onActiveModeChange(Level world, BlockPos pos, boolean isActiveNow, boolean isInitialChange) {} public boolean canConnect(IPipeNode selfTile, Direction facing) { - if (selfTile.getPipeLevel().getBlockState(selfTile.getPipePos().relative(facing)).getBlock() == Blocks.AIR) + if (selfTile.getLevel().getBlockState(selfTile.getBlockPos().relative(facing)).getBlock() == Blocks.AIR) return false; CoverBehavior cover = selfTile.getCoverContainer().getCoverAtSide(facing); if (cover != null && !cover.canPipePassThrough()) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/IGregtechBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/IGregtechBlockEntity.java new file mode 100644 index 00000000000..4acd507b7bd --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/IGregtechBlockEntity.java @@ -0,0 +1,53 @@ +package com.gregtechceu.gtceu.api.blockentity; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.syncsystem.ISyncManaged; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.common.extensions.IForgeBlockEntity; + +public interface IGregtechBlockEntity extends ISyncManaged, ITickSubscription, IForgeBlockEntity { + + Level getLevel(); + + BlockPos getBlockPos(); + + BlockState getBlockState(); + + long getOffsetTimer(); + + boolean isRemoved(); + + void notifyBlockUpdate(); + + void scheduleNeighborShapeUpdate(); + + void markAsChanged(); + + default boolean isRemote() { + return getLevel() == null ? GTCEu.isClientThread() : getLevel().isClientSide; + } + + default void scheduleRenderUpdate() { + var pos = getBlockPos(); + var level = getLevel(); + if (level != null) { + var state = getLevel().getBlockState(pos); + if (level.isClientSide) { + level.sendBlockUpdated(pos, state, state, Block.UPDATE_IMMEDIATE); + requestModelDataUpdate(); + } else { + level.blockEvent(pos, state.getBlock(), 1, 0); + } + } + } + + default BlockEntity getNeighbor(Direction direction) { + return getLevel().getBlockEntity(getBlockPos().relative(direction)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java index 85a2edddaa4..2059672d0c4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java @@ -14,7 +14,6 @@ import com.gregtechceu.gtceu.api.pipenet.*; import com.gregtechceu.gtceu.common.data.GTMaterialBlocks; import com.gregtechceu.gtceu.common.data.GTMaterials; -import com.gregtechceu.gtceu.common.datafixers.TagFixer; import com.gregtechceu.gtceu.syncsystem.ManagedSyncBlockEntity; import com.gregtechceu.gtceu.syncsystem.annotations.RerenderOnChanged; import com.gregtechceu.gtceu.syncsystem.annotations.SaveField; @@ -27,7 +26,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; @@ -99,10 +97,6 @@ public PipeBlockEntity(BlockEntityType type, BlockPos pos, BlockState blockSt ////////////////////////////////////// // ***** Initialization ******// ////////////////////////////////////// - public void scheduleRenderUpdate() { - IPipeNode.super.scheduleRenderUpdate(); - } - @Override public long getOffsetTimer() { return level == null ? offset : (level.getServer().getTickCount() + offset); @@ -283,7 +277,7 @@ private void syncPipeConnections(Direction side, IPipeNode pipe) { private void updateNetworkConnection(Direction side, boolean connected) { LevelPipeNet worldPipeNet = getPipeBlock().getWorldPipeNet((ServerLevel) getLevel()); - worldPipeNet.updateBlockedConnections(getPipePos(), side, !connected); + worldPipeNet.updateBlockedConnections(this.getBlockPos(), side, !connected); } protected int withSideConnection(int blockedConnections, Direction side, boolean connected) { @@ -398,7 +392,7 @@ public Pair onToolClick(Set toolTypes } } else { if (!frameMaterial.isNull()) { - Block.popResource(getLevel(), getPipePos(), + Block.popResource(getLevel(), this.getBlockPos(), GTMaterialBlocks.MATERIAL_BLOCKS.get(TagPrefix.frameGt, frameMaterial).asStack()); frameMaterial = GTMaterials.NULL; return Pair.of(GTToolType.CROWBAR, InteractionResult.sidedSuccess(playerIn.level().isClientSide)); @@ -420,13 +414,14 @@ public int getDefaultPaintingColor() { } public void doExplosion(float explosionPower) { - getLevel().removeBlock(getPipePos(), false); + getLevel().removeBlock(this.getBlockPos(), false); if (!getLevel().isClientSide) { - ((ServerLevel) getLevel()).sendParticles(ParticleTypes.LARGE_SMOKE, getPipePos().getX() + 0.5, - getPipePos().getY() + 0.5, getPipePos().getZ() + 0.5, + ((ServerLevel) getLevel()).sendParticles(ParticleTypes.LARGE_SMOKE, this.getBlockPos().getX() + 0.5, + this.getBlockPos().getY() + 0.5, this.getBlockPos().getZ() + 0.5, 10, 0.2, 0.2, 0.2, 0.0); } - getLevel().explode(null, getPipePos().getX() + 0.5, getPipePos().getY() + 0.5, getPipePos().getZ() + 0.5, + getLevel().explode(null, this.getBlockPos().getX() + 0.5, this.getBlockPos().getY() + 0.5, + this.getBlockPos().getZ() + 0.5, explosionPower, Level.ExplosionInteraction.NONE); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/ICoverable.java b/src/main/java/com/gregtechceu/gtceu/api/capability/ICoverable.java index 51a3d94af9e..7bb09879271 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/ICoverable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/ICoverable.java @@ -1,10 +1,13 @@ package com.gregtechceu.gtceu.api.capability; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.IGregtechBlockEntity; import com.gregtechceu.gtceu.api.blockentity.ITickSubscription; import com.gregtechceu.gtceu.api.cover.CoverBehavior; import com.gregtechceu.gtceu.api.cover.CoverDefinition; +import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; +import com.gregtechceu.gtceu.syncsystem.ISyncManaged; import com.gregtechceu.gtceu.utils.GTUtil; import net.minecraft.core.BlockPos; @@ -31,23 +34,56 @@ import java.util.Objects; import java.util.stream.Collectors; -public interface ICoverable extends ITickSubscription { +public interface ICoverable extends ITickSubscription, ISyncManaged { - Level getLevel(); + IGregtechBlockEntity getHolder(); - BlockPos getPos(); + default Level getLevel() { + return getHolder().getLevel(); + } + + default BlockPos getBlockPos() { + return getHolder().getBlockPos(); + } + + default BlockState getState() { + return getHolder().getBlockState(); + } + + default long getOffsetTimer() { + return getHolder().getOffsetTimer(); + } + + default boolean isRemoved() { + return getHolder().isRemoved(); + } - BlockState getState(); + default void notifyBlockUpdate() { + getHolder().notifyBlockUpdate(); + } - long getOffsetTimer(); + default void scheduleRenderUpdate() { + getHolder().notifyBlockUpdate(); + } - boolean isInValid(); + default void scheduleNeighborShapeUpdate() { + getHolder().scheduleNeighborShapeUpdate(); + } - void notifyBlockUpdate(); + default void markAsChanged() { + getHolder().markAsChanged(); + } - void scheduleRenderUpdate(); + @Nullable + @Override + default TickableSubscription subscribeServerTick(Runnable runnable) { + return getHolder().subscribeServerTick(runnable); + } - void scheduleNeighborShapeUpdate(); + @Override + default void unsubscribe(@Nullable TickableSubscription current) { + getHolder().unsubscribe(current); + } boolean canPlaceCoverOnSide(CoverDefinition definition, Direction side); @@ -109,7 +145,7 @@ default boolean removeCover(boolean dropItself, Direction side, @Nullable Player if (player != null && player.getInventory().add(dropStack)) continue; - Block.popResource(getLevel(), getPos(), dropStack); + Block.popResource(getLevel(), getBlockPos(), dropStack); } notifyBlockUpdate(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java index 779fde8da84..8e08918f169 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java @@ -92,7 +92,7 @@ public void markAsChanged() { */ @MustBeInvokedByOverriders public boolean canAttach() { - var machine = MetaMachine.getMachine(coverHolder.getLevel(), coverHolder.getPos()); + var machine = MetaMachine.getMachine(coverHolder.getLevel(), coverHolder.getBlockPos()); return machine == null || (machine.getDefinition().isAllowCoverOnFront() || !machine.hasFrontFacing() || coverHolder.getFrontFacing() != attachedSide); diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/IUICover.java b/src/main/java/com/gregtechceu/gtceu/api/cover/IUICover.java index 4161092b8cd..93d85bd74f5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/IUICover.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/IUICover.java @@ -18,7 +18,7 @@ default CoverBehavior self() { @Override default boolean isInvalid() { - return self().coverHolder.isInValid() || self().coverHolder.getCoverAtSide(self().attachedSide) != self(); + return self().coverHolder.isRemoved() || self().coverHolder.getCoverAtSide(self().attachedSide) != self(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/FilterHandler.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/FilterHandler.java index 6932bf36a67..23ffbbf132d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/FilterHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/FilterHandler.java @@ -160,7 +160,7 @@ private void loadFilterFromItem() { if (filter instanceof SmartItemFilter smart && container instanceof CoverBehavior cover && cover.coverHolder instanceof MachineCoverContainer mcc) { - var machine = MetaMachine.getMachine(mcc.getLevel(), mcc.getPos()); + var machine = MetaMachine.getMachine(mcc.getLevel(), mcc.getBlockPos()); if (machine != null) { smart.setModeFromMachine(machine.getDefinition().getName()); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/factory/CoverUIFactory.java b/src/main/java/com/gregtechceu/gtceu/api/gui/factory/CoverUIFactory.java index 45b15bb3335..62bdd2601ad 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/factory/CoverUIFactory.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/factory/CoverUIFactory.java @@ -48,7 +48,7 @@ protected CoverBehavior readHolderFromSyncData(FriendlyByteBuf syncData) { @Override protected void writeHolderToSyncData(FriendlyByteBuf syncData, CoverBehavior holder) { - syncData.writeBlockPos(holder.coverHolder.getPos()); + syncData.writeBlockPos(holder.coverHolder.getBlockPos()); syncData.writeEnum(holder.attachedSide); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java index 8923ee5734c..2dff532615f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.pattern.BlockPattern; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java deleted file mode 100644 index e356a7311fd..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.gregtechceu.gtceu.api.machine; - -import com.gregtechceu.gtceu.api.blockentity.IPaintable; -import com.gregtechceu.gtceu.api.item.tool.IToolGridHighlight; -import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; - -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.client.model.data.ModelProperty; -import net.minecraftforge.common.extensions.IForgeBlockEntity; - -public interface IMachineBlockEntity extends IToolGridHighlight, IPaintable, IForgeBlockEntity { - - ModelProperty MODEL_DATA_LEVEL = new ModelProperty<>(); - ModelProperty MODEL_DATA_POS = new ModelProperty<>(); - - default BlockEntity self() { - return (BlockEntity) this; - } - - default Level level() { - return self().getLevel(); - } - - default BlockPos pos() { - return self().getBlockPos(); - } - - default void scheduleRenderUpdate() { - var pos = pos(); - if (level() != null) { - var state = level().getBlockState(pos); - if (level().isClientSide) { - level().sendBlockUpdated(pos, state, state, Block.UPDATE_IMMEDIATE); - self().requestModelDataUpdate(); - } else { - level().blockEvent(pos, state.getBlock(), 1, 0); - } - } - } - - MachineRenderState getRenderState(); - - void setRenderState(MachineRenderState state); - - long getOffset(); - - int getPaintingColor(); - - void setPaintingColor(int color); - - int getDefaultPaintingColor(); -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java index 00527c4763e..1e7981d0672 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.machine; +import com.gregtechceu.gtceu.api.blockentity.IGregtechBlockEntity; import com.gregtechceu.gtceu.api.capability.ICoverable; import com.gregtechceu.gtceu.api.cover.CoverBehavior; import com.gregtechceu.gtceu.api.cover.CoverDefinition; @@ -8,10 +9,7 @@ import com.gregtechceu.gtceu.syncsystem.SyncDataHolder; import com.gregtechceu.gtceu.syncsystem.annotations.*; -import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.items.IItemHandlerModifiable; @@ -36,48 +34,8 @@ public MachineCoverContainer(MetaMachine machine) { } @Override - public void markAsChanged() { - machine.markAsChanged(); - } - - @Override - public BlockState getState() { - return machine.getBlockState(); - } - - @Override - public Level getLevel() { - return machine.getLevel(); - } - - @Override - public BlockPos getPos() { - return machine.getBlockPos(); - } - - @Override - public long getOffsetTimer() { - return machine.getOffsetTimer(); - } - - @Override - public void notifyBlockUpdate() { - machine.notifyBlockUpdate(); - } - - @Override - public void scheduleRenderUpdate() { - machine.scheduleRenderUpdate(); - } - - @Override - public void scheduleNeighborShapeUpdate() { - machine.scheduleNeighborShapeUpdate(); - } - - @Override - public boolean isInValid() { - return machine.isRemoved(); + public IGregtechBlockEntity getHolder() { + return machine; } @Override @@ -108,17 +66,6 @@ public boolean shouldRenderBackSide() { return !machine.getBlockState().canOcclude(); } - @Nullable - @Override - public TickableSubscription subscribeServerTick(Runnable runnable) { - return machine.subscribeServerTick(runnable); - } - - @Override - public void unsubscribe(@Nullable TickableSubscription current) { - machine.unsubscribe(current); - } - @Override public CoverBehavior getCoverAtSide(Direction side) { return switch (side) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index d620374c762..6176a59b94b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -5,8 +5,8 @@ import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; +import com.gregtechceu.gtceu.api.blockentity.IGregtechBlockEntity; import com.gregtechceu.gtceu.api.blockentity.IPaintable; -import com.gregtechceu.gtceu.api.blockentity.ITickSubscription; import com.gregtechceu.gtceu.api.capability.*; import com.gregtechceu.gtceu.api.capability.forge.GTCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; @@ -101,10 +101,11 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class MetaMachine extends ManagedSyncBlockEntity implements IToolable, ITickSubscription, IToolGridHighlight, IFancyTooltip, IPaintable, IRedstoneSignalMachine { +public class MetaMachine extends ManagedSyncBlockEntity implements IGregtechBlockEntity, IToolable, IToolGridHighlight, + IFancyTooltip, IPaintable, IRedstoneSignalMachine { - ModelProperty MODEL_DATA_LEVEL = new ModelProperty<>(); - ModelProperty MODEL_DATA_POS = new ModelProperty<>(); + public static final ModelProperty MODEL_DATA_LEVEL = new ModelProperty<>(); + public static final ModelProperty MODEL_DATA_POS = new ModelProperty<>(); @Getter protected final SyncDataHolder syncDataHolder = new SyncDataHolder(this); @@ -169,10 +170,6 @@ public void setOwnerUUID(UUID uuid) { syncDataHolder.markClientSyncFieldDirty("ownerUUID"); } - public boolean isRemote() { - return getLevel() == null ? GTCEu.isClientThread() : getLevel().isClientSide; - } - @Override public boolean triggerEvent(int id, int para) { if (id == 1) { // chunk re render @@ -184,20 +181,6 @@ public boolean triggerEvent(int id, int para) { return false; } - @Override - public final void scheduleRenderUpdate() { - var pos = getBlockPos(); - var level = getLevel(); - if (level != null) { - var state = level.getBlockState(pos); - if (level.isClientSide) { - level.sendBlockUpdated(pos, state, state, Block.UPDATE_IMMEDIATE); - } else { - level.blockEvent(pos, state.getBlock(), 1, 0); - } - } - } - public void scheduleNeighborShapeUpdate() { Level level = getLevel(); BlockPos pos = getBlockPos(); @@ -317,7 +300,7 @@ private void executeTick() { ////////////////////////////////////// // ******* Interaction *******// ////////////////////////////////////// - + /** * Called when a player clicks this meta tile entity with a tool * @@ -640,11 +623,6 @@ public void setFrontFacing(Direction facing) { return data.build(); } - public static Direction getUpwardFacing(@Nullable MetaMachine machine) { - return machine == null || !machine.allowExtendedFacing() ? Direction.NORTH : - machine.getBlockState().getValue(GTBlockStateProperties.UPWARDS_FACING); - } - public Direction getUpwardsFacing() { return this.allowExtendedFacing() ? this.getBlockState().getValue(GTBlockStateProperties.UPWARDS_FACING) : Direction.NORTH; @@ -737,6 +715,11 @@ public long getOffsetTimer() { return getOffset(); } + @Override + public boolean isRemote() { + return IGregtechBlockEntity.super.isRemote(); + } + ////////////////////////////////////// // ****** Ownership ********// ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IUIMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IUIMachine.java index 2e5ef050929..074723db931 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IUIMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IUIMachine.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.machine.feature; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.gui.factory.MachineUIFactory; import com.lowdragmc.lowdraglib.gui.modular.IUIHolder; @@ -38,8 +37,7 @@ default boolean isInvalid() { @Override default boolean isRemote() { - var level = self().getLevel(); - return level == null ? GTCEu.isClientThread() : level.isClientSide; + return self().isRemote(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index c953e0141cb..bd16dbfd7f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -569,7 +569,8 @@ public void updateSound() { workingSound = sound.playAutoReleasedSound( () -> machine.shouldWorkingPlaySound() && isWorking() && !getMachine().isRemoved() && getMachine().getLevel().isLoaded(getMachine().getBlockPos()) && - MetaMachine.getMachine(getMachine().getLevel(), getMachine().getBlockPos()) == getMachine(), + MetaMachine.getMachine(getMachine().getLevel(), getMachine().getBlockPos()) == + getMachine(), getMachine().getBlockPos(), true, 0, 1, 1); } } else if (workingSound instanceof AutoReleasedSound soundEntry) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java index 926b00faea4..099b359c236 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.block.ActiveBlock; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.pattern.error.PatternError; import com.gregtechceu.gtceu.api.pattern.error.PatternStringError; diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/IPipeNode.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/IPipeNode.java index 2dee23358ea..6d1264780c4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/IPipeNode.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/IPipeNode.java @@ -1,7 +1,7 @@ package com.gregtechceu.gtceu.api.pipenet; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.block.PipeBlock; +import com.gregtechceu.gtceu.api.blockentity.IGregtechBlockEntity; import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.blockentity.ITickSubscription; import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; @@ -20,9 +20,7 @@ import org.jetbrains.annotations.Nullable; public interface IPipeNode & IPipeType, NodeDataType> - extends ITickSubscription, IPaintable { - - long getOffsetTimer(); + extends ITickSubscription, IPaintable, IGregtechBlockEntity { /** * Get Cover Container. @@ -93,26 +91,6 @@ default BlockEntity self() { return (BlockEntity) this; } - default Level getPipeLevel() { - return self().getLevel(); - } - - default BlockPos getPipePos() { - return self().getBlockPos(); - } - - default boolean isInValid() { - return self().isRemoved(); - } - - default boolean isRemote() { - var level = getPipeLevel(); - if (level == null) { - return GTCEu.isClientThread(); - } - return level.isClientSide; - } - @SuppressWarnings("unchecked") default PipeBlock getPipeBlock() { return (PipeBlock) self().getBlockState().getBlock(); @@ -120,8 +98,8 @@ default boolean isRemote() { @Nullable default PipeNet getPipeNet() { - if (getPipeLevel() instanceof ServerLevel serverLevel) { - return getPipeBlock().getWorldPipeNet(serverLevel).getNetFromPos(getPipePos()); + if (getLevel() instanceof ServerLevel serverLevel) { + return getPipeBlock().getWorldPipeNet(serverLevel).getNetFromPos(getBlockPos()); } return null; } @@ -134,31 +112,16 @@ default PipeType getPipeType() { default NodeDataType getNodeData() { var net = getPipeNet(); if (net != null) { - return net.getNodeAt(getPipePos()).data; + return net.getNodeAt(getBlockPos()).data; } return null; } - void notifyBlockUpdate(); - - default void scheduleRenderUpdate() { - var pos = getPipePos(); - var level = getPipeLevel(); - if (level != null) { - var state = level.getBlockState(pos); - if (level.isClientSide) { - level.sendBlockUpdated(pos, state, state, Block.UPDATE_IMMEDIATE); - } else { - level.blockEvent(pos, state.getBlock(), 1, 0); - } - } - } - default void serverTick() {} default void scheduleNeighborShapeUpdate() { - Level level = getPipeLevel(); - BlockPos pos = getPipePos(); + Level level = getLevel(); + BlockPos pos = getBlockPos(); if (level == null || pos == null) return; @@ -167,7 +130,7 @@ default void scheduleNeighborShapeUpdate() { } default BlockEntity getNeighbor(Direction direction) { - return getPipeLevel().getBlockEntity(getPipePos().relative(direction)); + return getLevel().getBlockEntity(getBlockPos().relative(direction)); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java index 7212066aa4f..2fb313b8d50 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java @@ -1,22 +1,18 @@ package com.gregtechceu.gtceu.api.pipenet; +import com.gregtechceu.gtceu.api.blockentity.IGregtechBlockEntity; import com.gregtechceu.gtceu.api.capability.ICoverable; import com.gregtechceu.gtceu.api.cover.CoverBehavior; import com.gregtechceu.gtceu.api.cover.CoverDefinition; -import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.common.blockentity.FluidPipeBlockEntity; import com.gregtechceu.gtceu.common.blockentity.ItemPipeBlockEntity; import com.gregtechceu.gtceu.syncsystem.ISyncManaged; -import com.gregtechceu.gtceu.syncsystem.ManagedSyncBlockEntity; import com.gregtechceu.gtceu.syncsystem.SyncDataHolder; import com.gregtechceu.gtceu.syncsystem.annotations.*; -import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.wrapper.EmptyHandler; @@ -40,50 +36,8 @@ public PipeCoverContainer(IPipeNode pipeTile) { } @Override - public void markAsChanged() { - if (pipeTile instanceof ManagedSyncBlockEntity syncBlockEntity) { - syncBlockEntity.markAsChanged(); - } - } - - @Override - public Level getLevel() { - return pipeTile.getPipeLevel(); - } - - @Override - public BlockPos getPos() { - return pipeTile.getPipePos(); - } - - @Override - public BlockState getState() { - return pipeTile.getState(); - } - - @Override - public long getOffsetTimer() { - return pipeTile.getOffsetTimer(); - } - - @Override - public void notifyBlockUpdate() { - pipeTile.notifyBlockUpdate(); - } - - @Override - public void scheduleRenderUpdate() { - pipeTile.scheduleRenderUpdate(); - } - - @Override - public void scheduleNeighborShapeUpdate() { - pipeTile.scheduleNeighborShapeUpdate(); - } - - @Override - public boolean isInValid() { - return pipeTile.isInValid(); + public IGregtechBlockEntity getHolder() { + return pipeTile; } @Override @@ -113,17 +67,6 @@ public boolean shouldRenderBackSide() { return true; } - @Nullable - @Override - public TickableSubscription subscribeServerTick(Runnable runnable) { - return pipeTile.subscribeServerTick(runnable); - } - - @Override - public void unsubscribe(@Nullable TickableSubscription current) { - pipeTile.unsubscribe(current); - } - @Override public IItemHandlerModifiable getItemHandlerCap(Direction side, boolean useCoverCapability) { if (pipeTile instanceof ItemPipeBlockEntity itemPipe) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeNetWalker.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeNetWalker.java index 25bb61229c3..9d38ef072aa 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeNetWalker.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeNetWalker.java @@ -151,7 +151,7 @@ private boolean walk() { if (nextPipeFacings.isEmpty()) return true; if (nextPipeFacings.size() == 1) { - currentPos.set(nextPipes.get(0).getPipePos()); + currentPos.set(nextPipes.get(0).getBlockPos()); currentPipe = nextPipes.get(0); from = nextPipeFacings.get(0).getOpposite(); walkedBlocks++; diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java index 73ad55e4549..e2a0c4b3c0d 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.client.model.machine; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid; @@ -59,7 +58,7 @@ import java.util.function.Function; import java.util.stream.Collectors; -import static com.gregtechceu.gtceu.api.machine.IMachineBlockEntity.*; +import static com.gregtechceu.gtceu.api.machine.MetaMachine.*; public final class MachineModel extends BaseBakedModel implements ICoverableRenderer, IBlockEntityRendererBakedModel { diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java index 2835f96414f..07d643cfa62 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java @@ -33,7 +33,7 @@ import java.util.*; import java.util.function.Predicate; -import static com.gregtechceu.gtceu.api.machine.IMachineBlockEntity.*; +import static com.gregtechceu.gtceu.api.machine.MetaMachine.*; public class MultiPartBakedModel implements IDynamicBakedModel { diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java index 24043fe27e2..09efb849bb7 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.data.RotationState; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; diff --git a/src/main/java/com/gregtechceu/gtceu/common/blockentity/DuctPipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/common/blockentity/DuctPipeBlockEntity.java index da196a22908..1136349e1bb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/blockentity/DuctPipeBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/common/blockentity/DuctPipeBlockEntity.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.capability.IHazardParticleContainer; import com.gregtechceu.gtceu.api.capability.forge.GTCapability; import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IEnvironmentalHazardCleaner; import com.gregtechceu.gtceu.api.machine.feature.IEnvironmentalHazardEmitter; import com.gregtechceu.gtceu.common.pipelike.duct.*; @@ -97,11 +96,11 @@ public DuctPipeNet getDuctPipeNet() { return null; } DuctPipeNet currentPipeNet = this.currentPipeNet.get(); - if (currentPipeNet != null && currentPipeNet.isValid() && currentPipeNet.containsNode(getPipePos())) { + if (currentPipeNet != null && currentPipeNet.isValid() && currentPipeNet.containsNode(this.getBlockPos())) { return currentPipeNet; } - LevelDuctPipeNet worldNet = (LevelDuctPipeNet) getPipeBlock().getWorldPipeNet((ServerLevel) getPipeLevel()); - currentPipeNet = worldNet.getNetFromPos(getPipePos()); + LevelDuctPipeNet worldNet = (LevelDuctPipeNet) getPipeBlock().getWorldPipeNet((ServerLevel) this.getLevel()); + currentPipeNet = worldNet.getNetFromPos(this.getBlockPos()); if (currentPipeNet != null) { this.currentPipeNet = new WeakReference<>(currentPipeNet); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/blockentity/FluidPipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/common/blockentity/FluidPipeBlockEntity.java index f681ffbb576..1dd3e437560 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/blockentity/FluidPipeBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/common/blockentity/FluidPipeBlockEntity.java @@ -318,7 +318,7 @@ public void destroyPipe(FluidStack stack, boolean isBurning, boolean isLeaking, boolean isShattering, boolean isMelting) { // prevent the sound from spamming when filled from anything not a pipe if (getOffsetTimer() % 10 == 0) { - level.playSound(null, this.getPipePos(), SoundEvents.LAVA_EXTINGUISH, SoundSource.BLOCKS, 1.0F, 1.0F); + level.playSound(null, this.getBlockPos(), SoundEvents.LAVA_EXTINGUISH, SoundSource.BLOCKS, 1.0F, 1.0F); } if (isLeaking) { @@ -330,8 +330,8 @@ public void destroyPipe(FluidStack stack, boolean isBurning, boolean isLeaking, // apply heat damage in area surrounding the pipe if (getOffsetTimer() % 20 == 0) { - List entities = getPipeLevel().getEntitiesOfClass(LivingEntity.class, - new AABB(getPipePos()).inflate(2)); + List entities = this.getLevel().getEntitiesOfClass(LivingEntity.class, + new AABB(this.getBlockPos()).inflate(2)); for (LivingEntity entityLivingBase : entities) { EntityDamageUtil.applyTemperatureDamage(entityLivingBase, stack.getFluid().getFluidType().getTemperature(stack), @@ -346,7 +346,7 @@ public void destroyPipe(FluidStack stack, boolean isBurning, boolean isLeaking, } if (isCorroding) { - FluidPipeBlockEntity.spawnParticles(getPipeLevel(), getPipePos(), Direction.UP, ParticleTypes.CRIT, + FluidPipeBlockEntity.spawnParticles(this.getLevel(), this.getBlockPos(), Direction.UP, ParticleTypes.CRIT, 3 + GTValues.RNG.nextInt(2)); // voids 25% @@ -354,8 +354,8 @@ public void destroyPipe(FluidStack stack, boolean isBurning, boolean isLeaking, // apply chemical damage in area surrounding the pipe if (getOffsetTimer() % 20 == 0) { - List entities = getPipeLevel().getEntitiesOfClass(LivingEntity.class, - new AABB(getPipePos()).inflate(1)); + List entities = this.getLevel().getEntitiesOfClass(LivingEntity.class, + new AABB(this.getBlockPos()).inflate(1)); for (LivingEntity entityLivingBase : entities) { EntityDamageUtil.applyChemicalDamage(entityLivingBase, 2); } @@ -364,7 +364,7 @@ public void destroyPipe(FluidStack stack, boolean isBurning, boolean isLeaking, // 1/10 chance to void everything and destroy the pipe if (GTValues.RNG.nextInt(10) == 0) { stack.setAmount(0); - level.removeBlock(getPipePos(), false); + level.removeBlock(this.getBlockPos(), false); } } @@ -382,8 +382,8 @@ public void destroyPipe(FluidStack stack, boolean isBurning, boolean isLeaking, // apply heat damage in area surrounding the pipe if (isMelting && getOffsetTimer() % 20 == 0) { - List entities = getPipeLevel().getEntitiesOfClass(LivingEntity.class, - new AABB(getPipePos()).inflate(2)); + List entities = this.getLevel().getEntitiesOfClass(LivingEntity.class, + new AABB(this.getBlockPos()).inflate(2)); for (LivingEntity entityLivingBase : entities) { EntityDamageUtil.applyTemperatureDamage(entityLivingBase, stack.getFluid().getFluidType().getTemperature(stack), @@ -407,8 +407,8 @@ public void destroyPipe(FluidStack stack, boolean isBurning, boolean isLeaking, // apply frost damage in area surrounding the pipe if (getOffsetTimer() % 20 == 0) { - List entities = getPipeLevel().getEntitiesOfClass(LivingEntity.class, - new AABB(getPipePos()).inflate(2)); + List entities = this.getLevel().getEntitiesOfClass(LivingEntity.class, + new AABB(this.getBlockPos()).inflate(2)); for (LivingEntity entityLivingBase : entities) { EntityDamageUtil.applyTemperatureDamage(entityLivingBase, stack.getFluid().getFluidType().getTemperature(stack), diff --git a/src/main/java/com/gregtechceu/gtceu/common/blockentity/LaserPipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/common/blockentity/LaserPipeBlockEntity.java index a3e4c906c9c..7d3c7dd192e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/blockentity/LaserPipeBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/common/blockentity/LaserPipeBlockEntity.java @@ -106,11 +106,11 @@ public LaserPipeNet getLaserPipeNet() { return null; } LaserPipeNet currentPipeNet = this.currentPipeNet.get(); - if (currentPipeNet != null && currentPipeNet.isValid() && currentPipeNet.containsNode(getPipePos())) { + if (currentPipeNet != null && currentPipeNet.isValid() && currentPipeNet.containsNode(this.getBlockPos())) { return currentPipeNet; } - LevelLaserPipeNet worldNet = (LevelLaserPipeNet) getPipeBlock().getWorldPipeNet((ServerLevel) getPipeLevel()); - currentPipeNet = worldNet.getNetFromPos(getPipePos()); + LevelLaserPipeNet worldNet = (LevelLaserPipeNet) getPipeBlock().getWorldPipeNet((ServerLevel) this.getLevel()); + currentPipeNet = worldNet.getNetFromPos(this.getBlockPos()); if (currentPipeNet != null) { this.currentPipeNet = new WeakReference<>(currentPipeNet); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/blockentity/OpticalPipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/common/blockentity/OpticalPipeBlockEntity.java index 3dce0b7ed3a..90454b687bc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/blockentity/OpticalPipeBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/common/blockentity/OpticalPipeBlockEntity.java @@ -115,11 +115,11 @@ public OpticalPipeNet getOpticalPipeNet() { if (level == null || level.isClientSide) return null; OpticalPipeNet currentPipeNet = this.currentPipeNet.get(); - if (currentPipeNet != null && currentPipeNet.isValid() && currentPipeNet.containsNode(getPipePos())) + if (currentPipeNet != null && currentPipeNet.isValid() && currentPipeNet.containsNode(this.getBlockPos())) return currentPipeNet; // if current net is valid and does contain position, return it LevelOpticalPipeNet worldNet = (LevelOpticalPipeNet) getPipeBlock() - .getWorldPipeNet((ServerLevel) getPipeLevel()); - currentPipeNet = worldNet.getNetFromPos(getPipePos()); + .getWorldPipeNet((ServerLevel) this.getLevel()); + currentPipeNet = worldNet.getNetFromPos(this.getBlockPos()); if (currentPipeNet != null) { this.currentPipeNet = new WeakReference<>(currentPipeNet); } @@ -138,7 +138,7 @@ public void setConnection(Direction side, boolean connected, boolean fromNeighbo if (getNumConnections() >= 2) return; // also check the other pipe - BlockEntity tile = getLevel().getBlockEntity(getPipePos().relative(side)); + BlockEntity tile = getLevel().getBlockEntity(this.getBlockPos().relative(side)); if (tile instanceof IPipeNode pipeTile && pipeTile.getPipeType().getClass() == this.getPipeType().getClass()) { if (pipeTile.getNumConnections() >= 2) return; diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java index 4bc0ae05ff9..856996b1f92 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java @@ -100,7 +100,8 @@ public List getRenderedText() { tmp = tmp.stream().map(str -> '{' + str + '}').toList(); return PlaceholderHandler.processPlaceholders( GTStringUtils.replace(s, "\\{}", tmp), - new PlaceholderContext(coverHolder.getLevel(), coverHolder.getPos(), attachedSide, itemStackHandler, + new PlaceholderContext(coverHolder.getLevel(), coverHolder.getBlockPos(), attachedSide, + itemStackHandler, this, new MultiLineComponent(text), placeholderUUID)); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ConveyorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ConveyorCover.java index 4b03b9021cc..343d146ed96 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ConveyorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ConveyorCover.java @@ -125,7 +125,7 @@ protected boolean isSubscriptionActive() { } protected @Nullable IItemHandler getAdjacentItemHandler() { - return GTTransferUtils.getAdjacentItemHandler(coverHolder.getLevel(), coverHolder.getPos(), attachedSide) + return GTTransferUtils.getAdjacentItemHandler(coverHolder.getLevel(), coverHolder.getBlockPos(), attachedSide) .resolve().orElse(null); } @@ -413,8 +413,8 @@ protected static class GroupItemInfo { public boolean shouldRespectDistributionMode() { return ((io == IO.IN) ? - (coverHolder.getLevel().getBlockEntity(coverHolder.getPos()) instanceof ItemPipeBlockEntity) : - (coverHolder.getLevel().getBlockEntity(coverHolder.getPos() + (coverHolder.getLevel().getBlockEntity(coverHolder.getBlockPos()) instanceof ItemPipeBlockEntity) : + (coverHolder.getLevel().getBlockEntity(coverHolder.getBlockPos() .relative(attachedSide)) instanceof ItemPipeBlockEntity)); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/CoverSolarPanel.java b/src/main/java/com/gregtechceu/gtceu/common/cover/CoverSolarPanel.java index ea90970ad9a..db2beea796c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/CoverSolarPanel.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/CoverSolarPanel.java @@ -51,7 +51,7 @@ public boolean canAttach() { protected void update() { Level level = coverHolder.getLevel(); - BlockPos blockPos = coverHolder.getPos(); + BlockPos blockPos = coverHolder.getBlockPos(); if (GTUtil.canSeeSunClearly(level, blockPos)) { IEnergyContainer energyContainer = getEnergyContainer(); if (energyContainer != null) { @@ -62,6 +62,6 @@ protected void update() { @Nullable protected IEnergyContainer getEnergyContainer() { - return GTCapabilityHelper.getEnergyContainer(coverHolder.getLevel(), coverHolder.getPos(), attachedSide); + return GTCapabilityHelper.getEnergyContainer(coverHolder.getLevel(), coverHolder.getBlockPos(), attachedSide); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/InfiniteWaterCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/InfiniteWaterCover.java index 6c8db9886cf..443b030701e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/InfiniteWaterCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/InfiniteWaterCover.java @@ -28,7 +28,7 @@ public InfiniteWaterCover(CoverDefinition definition, ICoverable coverHolder, Di @Override public boolean canAttach() { return super.canAttach() && - FluidUtil.getFluidHandler(coverHolder.getLevel(), coverHolder.getPos(), attachedSide).isPresent(); + FluidUtil.getFluidHandler(coverHolder.getLevel(), coverHolder.getBlockPos(), attachedSide).isPresent(); } @Override @@ -47,7 +47,7 @@ public void onRemoved() { public void update() { if (coverHolder.getOffsetTimer() % 20 == 0) { - FluidUtil.getFluidHandler(coverHolder.getLevel(), coverHolder.getPos(), attachedSide) + FluidUtil.getFluidHandler(coverHolder.getLevel(), coverHolder.getBlockPos(), attachedSide) .ifPresent(h -> h.fill(new FluidStack(Fluids.WATER, 16 * FluidType.BUCKET_VOLUME), IFluidHandler.FluidAction.EXECUTE)); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java index 48b68b5eda1..05a46aa7542 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java @@ -55,7 +55,7 @@ public ItemFilter getItemFilter() { if (itemFilter == null) { itemFilter = ItemFilter.loadFilter(attachItem); if (itemFilter instanceof SmartItemFilter smart && coverHolder instanceof MachineCoverContainer mcc) { - var machine = MetaMachine.getMachine(mcc.getLevel(), mcc.getPos()); + var machine = MetaMachine.getMachine(mcc.getLevel(), mcc.getBlockPos()); if (machine != null) smart.setModeFromMachine(machine.getDefinition().getName()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/MachineControllerCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/MachineControllerCover.java index bc6164bbd95..d8e76b3a1bb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/MachineControllerCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/MachineControllerCover.java @@ -136,7 +136,7 @@ private void updateAll() { @Nullable private IControllable getControllable(@Nullable Direction side) { if (side == null) { - return GTCapabilityHelper.getControllable(coverHolder.getLevel(), coverHolder.getPos(), null); + return GTCapabilityHelper.getControllable(coverHolder.getLevel(), coverHolder.getBlockPos(), null); } if (coverHolder.getCoverAtSide(side) instanceof IControllable cover) { @@ -189,7 +189,7 @@ public List getAllowedModes() { private int getInputSignal() { Level level = coverHolder.getLevel(); - BlockPos sourcePos = coverHolder.getPos().relative(attachedSide); + BlockPos sourcePos = coverHolder.getBlockPos().relative(attachedSide); return level.getSignal(sourcePos, attachedSide); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java index 4015bfa82c1..91e9a1d7d52 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java @@ -118,7 +118,7 @@ protected boolean isSubscriptionActive() { } protected @Nullable IFluidHandler getAdjacentFluidHandler() { - return GTTransferUtils.getAdjacentFluidHandler(coverHolder.getLevel(), coverHolder.getPos(), attachedSide) + return GTTransferUtils.getAdjacentFluidHandler(coverHolder.getLevel(), coverHolder.getBlockPos(), attachedSide) .resolve() .orElse(null); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCover.java index 56f40a83402..7ac9f8eb4f8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCover.java @@ -41,9 +41,9 @@ public WirelessTransmitterCover(CoverDefinition definition, ICoverable coverHold @Override public InteractionResult onDataStickUse(Player player, ItemStack dataStick) { - dataStick.getOrCreateTag().putInt("targetX", coverHolder.getPos().getX()); - dataStick.getOrCreateTag().putInt("targetY", coverHolder.getPos().getY()); - dataStick.getOrCreateTag().putInt("targetZ", coverHolder.getPos().getZ()); + dataStick.getOrCreateTag().putInt("targetX", coverHolder.getBlockPos().getX()); + dataStick.getOrCreateTag().putInt("targetY", coverHolder.getBlockPos().getY()); + dataStick.getOrCreateTag().putInt("targetZ", coverHolder.getBlockPos().getZ()); dataStick.getOrCreateTag().putString("face", attachedSide.getName()); dataStick.getOrCreateTag().putString("dim", coverHolder.getLevel().dimension().location().toString()); return InteractionResult.SUCCESS; diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/ActivityDetectorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/ActivityDetectorCover.java index 3c214d7b6cb..f37d3b8353a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/ActivityDetectorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/ActivityDetectorCover.java @@ -20,7 +20,7 @@ public ActivityDetectorCover(CoverDefinition definition, ICoverable coverHolder, @Override public boolean canAttach() { return super.canAttach() && - GTCapabilityHelper.getWorkable(coverHolder.getLevel(), coverHolder.getPos(), attachedSide) != null; + GTCapabilityHelper.getWorkable(coverHolder.getLevel(), coverHolder.getBlockPos(), attachedSide) != null; } @Override @@ -29,7 +29,7 @@ protected void update() { return; } - var workable = GTCapabilityHelper.getWorkable(coverHolder.getLevel(), coverHolder.getPos(), attachedSide); + var workable = GTCapabilityHelper.getWorkable(coverHolder.getLevel(), coverHolder.getBlockPos(), attachedSide); boolean isCurrentlyWorking = workable.isActive() && workable.isWorkingEnabled(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/AdvancedActivityDetectorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/AdvancedActivityDetectorCover.java index a260e35b6f4..a007105ae4d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/AdvancedActivityDetectorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/AdvancedActivityDetectorCover.java @@ -23,7 +23,7 @@ protected void update() { if (this.coverHolder.getOffsetTimer() % 20 != 0) return; - var workable = GTCapabilityHelper.getWorkable(coverHolder.getLevel(), coverHolder.getPos(), attachedSide); + var workable = GTCapabilityHelper.getWorkable(coverHolder.getLevel(), coverHolder.getBlockPos(), attachedSide); if (workable == null || workable.getMaxProgress() == 0) { setRedstoneSignalOutput(0); return; diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/EnergyDetectorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/EnergyDetectorCover.java index 99b25f520f4..91548ddbc25 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/EnergyDetectorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/EnergyDetectorCover.java @@ -50,6 +50,7 @@ protected void update() { @Nullable protected IEnergyInfoProvider getEnergyInfoProvider() { - return GTCapabilityHelper.getEnergyInfoProvider(coverHolder.getLevel(), coverHolder.getPos(), attachedSide); + return GTCapabilityHelper.getEnergyInfoProvider(coverHolder.getLevel(), coverHolder.getBlockPos(), + attachedSide); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/FluidDetectorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/FluidDetectorCover.java index b94de19b4f7..944079b03d5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/FluidDetectorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/FluidDetectorCover.java @@ -47,7 +47,7 @@ protected void update() { } protected IFluidHandler getFluidHandler() { - return FluidUtil.getFluidHandler(coverHolder.getLevel(), coverHolder.getPos(), attachedSide).resolve() + return FluidUtil.getFluidHandler(coverHolder.getLevel(), coverHolder.getBlockPos(), attachedSide).resolve() .orElse(null); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/ItemDetectorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/ItemDetectorCover.java index fbf82946fae..65900bc03e6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/ItemDetectorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/ItemDetectorCover.java @@ -44,7 +44,7 @@ protected void update() { } protected IItemHandler getItemHandler() { - return GTTransferUtils.getItemHandler(coverHolder.getLevel(), coverHolder.getPos(), attachedSide).resolve() + return GTTransferUtils.getItemHandler(coverHolder.getLevel(), coverHolder.getBlockPos(), attachedSide).resolve() .orElse(null); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/MaintenanceDetectorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/MaintenanceDetectorCover.java index 55fe8e91cb0..01335f2ac3f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/MaintenanceDetectorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/MaintenanceDetectorCover.java @@ -21,7 +21,8 @@ public boolean canAttach() { } return super.canAttach() && - GTCapabilityHelper.getMaintenanceMachine(coverHolder.getLevel(), coverHolder.getPos(), attachedSide) != + GTCapabilityHelper.getMaintenanceMachine(coverHolder.getLevel(), coverHolder.getBlockPos(), + attachedSide) != null; } @@ -32,7 +33,7 @@ protected void update() { } IMaintenanceMachine maintenance = GTCapabilityHelper.getMaintenanceMachine(coverHolder.getLevel(), - coverHolder.getPos(), attachedSide); + coverHolder.getBlockPos(), attachedSide); int signal = getRedstoneSignalOutput(); boolean shouldSignal = isInverted() != maintenance.hasMaintenanceProblems(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderFluidLinkCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderFluidLinkCover.java index 297fcb95395..48e6d2cb7ed 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderFluidLinkCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderFluidLinkCover.java @@ -64,7 +64,7 @@ protected void setEntry(VirtualEntry entry) { @Override public boolean canAttach() { - return FluidUtil.getFluidHandler(coverHolder.getLevel(), coverHolder.getPos(), attachedSide).isPresent(); + return FluidUtil.getFluidHandler(coverHolder.getLevel(), coverHolder.getBlockPos(), attachedSide).isPresent(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderRedstoneLinkCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderRedstoneLinkCover.java index 99f15bf0967..ad447928344 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderRedstoneLinkCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderRedstoneLinkCover.java @@ -96,7 +96,7 @@ public void onRemoved() { } protected int getSignalInput() { - return coverHolder.getLevel().getSignal(coverHolder.getPos().relative(attachedSide), + return coverHolder.getLevel().getSignal(coverHolder.getBlockPos().relative(attachedSide), attachedSide.getOpposite()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java index 2468c96de3e..b27505a4854 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java @@ -9,7 +9,6 @@ import com.gregtechceu.gtceu.api.item.ComponentItem; import com.gregtechceu.gtceu.api.item.component.IDataItem; import com.gregtechceu.gtceu.api.item.component.IItemComponent; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; import com.gregtechceu.gtceu.api.misc.virtualregistry.EntryTypes; @@ -92,7 +91,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, List args) throws PlaceholderException { PlaceholderUtils.checkArgs(args, 0); if (ctx.level().getBlockEntity(ctx.pos()) instanceof IEnergyInfoProvider energyInfoProvider) { - return MultiLineComponent.literal(energyInfoProvider.getEnergyInfo().stored().longValue()); + return MultiLineComponent.literal(energyInfoProvider.getEnergyInfo().stored().longValue()); } IEnergyContainer energy = GTCapabilityHelper.getEnergyContainer(ctx.level(), ctx.pos(), ctx.side()); return MultiLineComponent.literal(energy != null ? energy.getEnergyStored() : 0); @@ -105,7 +104,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, List args) throws PlaceholderException { PlaceholderUtils.checkArgs(args, 0); if (ctx.level().getBlockEntity(ctx.pos()) instanceof IEnergyInfoProvider energyInfoProvider) { - return MultiLineComponent.literal(energyInfoProvider.getEnergyInfo().capacity().longValue()); + return MultiLineComponent.literal(energyInfoProvider.getEnergyInfo().capacity().longValue()); } IEnergyContainer energy = GTCapabilityHelper.getEnergyContainer(ctx.level(), ctx.pos(), ctx.side()); return MultiLineComponent.literal(energy != null ? energy.getEnergyCapacity() : 0); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java index dcb3d2f4fa7..79653a23233 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.data.RotationState; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java index a65523e1a8b..d961124791f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java @@ -218,7 +218,7 @@ private boolean handleSpecialBlockEntities(BlockEntity first, int limit, UseOnCo } } else if (first instanceof IPipeNode pipe) { var collected = BreadthFirstBlockSearch.conditionalSearch(IPipeNode.class, pipe, - first.getLevel(), IPipeNode::getPipePos, + first.getLevel(), IPipeNode::getBlockPos, gtPipePredicate, limit, limit * 6); paintPaintables(collected, context); } else if (first instanceof IPaintable paintable) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java index 8e3e44f0691..06c1bc26710 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java @@ -10,7 +10,6 @@ import com.gregtechceu.gtceu.api.gui.misc.ProspectorMode; import com.gregtechceu.gtceu.api.item.component.IAddInformation; import com.gregtechceu.gtceu.api.item.component.IInteractionItem; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; import com.gregtechceu.gtceu.api.machine.feature.IMufflableMachine; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/MetaMachineConfigCopyBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/MetaMachineConfigCopyBehaviour.java index 32b52b376f1..e60fc0b90e4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/MetaMachineConfigCopyBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/MetaMachineConfigCopyBehaviour.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.item.component.IAddInformation; import com.gregtechceu.gtceu.api.item.component.IInteractionItem; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java index 527eb4538e5..3380aadc391 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.item.component.forge.IComponentCapability; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.item.tool.behavior.IToolBehavior; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.misc.forge.VoidFluidHandlerItemStack; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java index 01fce22daa2..9acde03fe6f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java @@ -206,7 +206,8 @@ public void breakerUpdate() { if (getOutputFacingItems() == null) { Block.popResource(getLevel(), getBlockPos(), remainder); } else { - Block.popResource(getLevel(), getBlockPos().relative(getOutputFacingItems()), remainder); + Block.popResource(getLevel(), getBlockPos().relative(getOutputFacingItems()), + remainder); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java index 0aec24ba5c3..02537d249b8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java @@ -226,7 +226,8 @@ public void updateFishingUpdateSubscription() { private void updateHasWater() { for (int x = 0; x < WATER_CHECK_SIZE; x++) for (int z = 0; z < WATER_CHECK_SIZE; z++) { - BlockPos waterCheckPos = getBlockPos().below().offset(x - WATER_CHECK_SIZE / 2, 0, z - WATER_CHECK_SIZE / 2); + BlockPos waterCheckPos = getBlockPos().below().offset(x - WATER_CHECK_SIZE / 2, 0, + z - WATER_CHECK_SIZE / 2); if (!getLevel().getBlockState(waterCheckPos).getFluidState().is(Fluids.WATER)) { hasWater = false; return; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java index 0951561d061..f6405f59b40 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java @@ -61,8 +61,10 @@ public void onUnload() { } private void updateBounds() { - var fl = RelativeDirection.offsetPos(getBlockPos(), getFrontFacing(), getUpwardsFacing(), isFlipped(), 1, 1, -1); - var br = RelativeDirection.offsetPos(getBlockPos(), getFrontFacing(), getUpwardsFacing(), isFlipped(), 1, -2, -4); + var fl = RelativeDirection.offsetPos(getBlockPos(), getFrontFacing(), getUpwardsFacing(), isFlipped(), 1, 1, + -1); + var br = RelativeDirection.offsetPos(getBlockPos(), getFrontFacing(), getUpwardsFacing(), isFlipped(), 1, -2, + -4); grindBound = AABB.of(BoundingBox.fromCorners(fl, br)); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java index 81027ac6523..4895b47a172 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java @@ -65,7 +65,8 @@ private boolean isIntakesObstructed() { for (int j = -1; j < 2; j++) { // Skip the controller block itself if (i == 0 && j == 0) continue; - var blockPos = RelativeDirection.offsetPos(getBlockPos(), getFrontFacing(), getUpwardsFacing(), isFlipped(), + var blockPos = RelativeDirection.offsetPos(getBlockPos(), getFrontFacing(), getUpwardsFacing(), + isFlipped(), i, j, 1); var blockState = this.getLevel().getBlockState(blockPos); if (!blockState.isAir()) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java index e10be480d25..935064c453d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java @@ -119,7 +119,8 @@ public void onRotated(Direction oldFacing, Direction newFacing) { protected void updateAutoIOSubscription() { if ((!outputInventory.isEmpty() && GTTransferUtils.hasAdjacentItemHandler(getLevel(), getBlockPos(), getFrontFacing())) || - (!tank.isEmpty() && GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getBlockPos(), getFrontFacing()))) { + (!tank.isEmpty() && + GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getBlockPos(), getFrontFacing()))) { autoIOSubs = subscribeServerTick(autoIOSubs, this::autoIO); } else if (autoIOSubs != null) { autoIOSubs.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java index 0fef4525b33..53762598325 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.syncsystem.annotations.ClientFieldChangeListener; -import com.gregtechceu.gtceu.syncsystem.annotations.RerenderOnChanged; import com.gregtechceu.gtceu.syncsystem.annotations.SaveField; import com.gregtechceu.gtceu.syncsystem.annotations.SyncToClient; @@ -144,7 +143,8 @@ protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand h @ClientFieldChangeListener(fieldName = "amps") public void onAmpUpdated() { - setRenderState(getRenderState().setValue(GTMachineModelProperties.DIODE_AMP_MODE, AmpMode.getByValue(this.amps))); + setRenderState( + getRenderState().setValue(GTMachineModelProperties.DIODE_AMP_MODE, AmpMode.getByValue(this.amps))); scheduleRenderUpdate(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java index ef996f72311..909b4a9a656 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java @@ -139,11 +139,11 @@ public boolean swapIO() { getLevel().setBlockAndUpdate(blockPos, newBlockState); if (getLevel().getBlockEntity(blockPos) instanceof DualHatchPartMachine newMachine) { - newMachine.setFrontFacing(this.getFrontFacing()); - newMachine.setUpwardsFacing(this.getUpwardsFacing()); - for (int i = 0; i < this.tank.getTanks(); i++) { - newMachine.tank.setFluidInTank(i, this.tank.getFluidInTank(i)); - } + newMachine.setFrontFacing(this.getFrontFacing()); + newMachine.setUpwardsFacing(this.getUpwardsFacing()); + for (int i = 0; i < this.tank.getTanks(); i++) { + newMachine.tank.setFluidInTank(i, this.tank.getFluidInTank(i)); + } } return true; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index a8a35b9aea0..3aca8446e80 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -253,11 +253,11 @@ public boolean swapIO() { getLevel().setBlockAndUpdate(blockPos, newBlockState); if (getLevel().getBlockEntity(blockPos) instanceof FluidHatchPartMachine newMachine) { - newMachine.setFrontFacing(this.getFrontFacing()); - newMachine.setUpwardsFacing(this.getUpwardsFacing()); - newMachine.setPaintingColor(this.getPaintingColor()); - for (int i = 0; i < this.tank.getTanks(); i++) { - newMachine.tank.setFluidInTank(i, this.tank.getFluidInTank(i)); + newMachine.setFrontFacing(this.getFrontFacing()); + newMachine.setUpwardsFacing(this.getUpwardsFacing()); + newMachine.setPaintingColor(this.getPaintingColor()); + for (int i = 0; i < this.tank.getTanks(); i++) { + newMachine.tank.setFluidInTank(i, this.tank.getFluidInTank(i)); } } return true; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index c1001284f12..eec3a639adb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -274,13 +274,13 @@ public boolean swapIO() { getLevel().setBlockAndUpdate(blockPos, newBlockState); if (getLevel().getBlockEntity(blockPos) instanceof ItemBusPartMachine newMachine) { - // We don't set the circuit or distinct busses, since - // that doesn't make sense on an output bus. - // Furthermore, existing inventory items - // and conveyors will drop to the floor on block override. - newMachine.setFrontFacing(this.getFrontFacing()); - newMachine.setUpwardsFacing(this.getUpwardsFacing()); - newMachine.setPaintingColor(this.getPaintingColor()); + // We don't set the circuit or distinct busses, since + // that doesn't make sense on an output bus. + // Furthermore, existing inventory items + // and conveyors will drop to the floor on block override. + newMachine.setFrontFacing(this.getFrontFacing()); + newMachine.setUpwardsFacing(this.getUpwardsFacing()); + newMachine.setPaintingColor(this.getPaintingColor()); } return true; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java index 8b4cbcccb55..cd7cb1695a2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.gui.UITemplate; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -75,12 +74,12 @@ public boolean swapIO() { getLevel().setBlockAndUpdate(blockPos, newBlockState); if (getLevel().getBlockEntity(blockPos) instanceof SteamItemBusPartMachine newMachine) { - // We don't set the circuit or distinct busses, since - // that doesn't make sense on an output bus. - // Furthermore, existing inventory items - // and conveyors will drop to the floor on block override. - newMachine.setFrontFacing(this.getFrontFacing()); - newMachine.setUpwardsFacing(this.getUpwardsFacing()); + // We don't set the circuit or distinct busses, since + // that doesn't make sense on an output bus. + // Furthermore, existing inventory items + // and conveyors will drop to the floor on block override. + newMachine.setFrontFacing(this.getFrontFacing()); + newMachine.setUpwardsFacing(this.getUpwardsFacing()); } return true; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java index d603aac50d3..cf09021823c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java @@ -86,7 +86,8 @@ public void onNeighborChanged(Block block, BlockPos fromPos, boolean isMoving) { @Nullable private IFluidHandler getTargetTank() { - return GTTransferUtils.getAdjacentFluidHandler(getLevel(), getBlockPos(), getFrontFacing()).resolve().orElse(null); + return GTTransferUtils.getAdjacentFluidHandler(getLevel(), getBlockPos(), getFrontFacing()).resolve() + .orElse(null); } private void autoIO() { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java index e6c6a54e963..a0938438df9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java @@ -126,7 +126,8 @@ public void onUnload() { ////////////////////////////////////// protected void updateAutoOutputSubscription() { var outputFacingItems = getFrontFacing(); - if (!exportItems.isEmpty() && GTTransferUtils.hasAdjacentItemHandler(getLevel(), getBlockPos(), outputFacingItems)) { + if (!exportItems.isEmpty() && + GTTransferUtils.hasAdjacentItemHandler(getLevel(), getBlockPos(), outputFacingItems)) { autoOutputSubs = subscribeServerTick(autoOutputSubs, this::autoOutput); } else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java index 93546556072..ccd6bb5309e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java @@ -71,7 +71,8 @@ protected int getCoolDownRate() { public ModularUI createUI(Player entityPlayer) { return super.createUI(entityPlayer) .widget(new ProgressWidget( - () -> GTUtil.canSeeSunClearly(Objects.requireNonNull(getLevel()), getBlockPos()) ? 1.0 : 0.0, 114, + () -> GTUtil.canSeeSunClearly(Objects.requireNonNull(getLevel()), getBlockPos()) ? 1.0 : 0.0, + 114, 44, 20, 20) .setProgressTexture( diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java index 41777d64fb1..016cc63bf87 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java @@ -72,7 +72,8 @@ protected void updateEnergyTick() { this.setIOSpeed(energyIOPerSec / 20); energyIOPerSec = 0; if (doExplosion) { - getLevel().explode(null, getBlockPos().getX() + 0.5, getBlockPos().getY() + 0.5, getBlockPos().getZ() + 0.5, + getLevel().explode(null, getBlockPos().getX() + 0.5, getBlockPos().getY() + 0.5, + getBlockPos().getZ() + 0.5, 1, Level.ExplosionInteraction.NONE); doExplosion = false; } @@ -82,7 +83,8 @@ protected void updateEnergyTick() { int ampsUsed = 0; for (var facing : GTUtil.DIRECTIONS) { var opposite = facing.getOpposite(); - IEnergyContainer container = GTCapabilityHelper.getEnergyContainer(getLevel(), getBlockPos().relative(facing), + IEnergyContainer container = GTCapabilityHelper.getEnergyContainer(getLevel(), + getBlockPos().relative(facing), opposite); // Try to get laser capability if (container == null) diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/EnergyNetHandler.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/EnergyNetHandler.java index 5501d806104..2fd37891306 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/EnergyNetHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/EnergyNetHandler.java @@ -48,13 +48,13 @@ public long acceptEnergyFromNetwork(Direction side, long voltage, long amperage) } long amperesUsed = 0L; - for (EnergyRoutePath path : net.getNetData(cable.getPipePos())) { + for (EnergyRoutePath path : net.getNetData(cable.getBlockPos())) { if (path.getMaxLoss() >= voltage) { // Will lose all the energy with this path, so don't use it continue; } - if (cable.getPipePos().equals(path.getTargetPipePos()) && side == path.getTargetFacing()) { + if (cable.getBlockPos().equals(path.getTargetPipePos()) && side == path.getTargetFacing()) { // Do not insert into source handler continue; } @@ -74,7 +74,7 @@ public long acceptEnergyFromNetwork(Direction side, long voltage, long amperage) 45 + 36.5); cable.applyHeat(heat); - cableBroken = cable.isInValid(); + cableBroken = cable.isRemoved(); if (cableBroken) { // a cable burned away (or insulation melted) break; @@ -98,7 +98,7 @@ public long acceptEnergyFromNetwork(Direction side, long voltage, long amperage) voltageTraveled -= cable.getNodeData().getLossPerBlock(); if (voltageTraveled <= 0) break; - if (!cable.isInValid()) { + if (!cable.isRemoved()) { cable.incrementAmperage(amps, voltageTraveled); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctNetHandler.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctNetHandler.java index 45acfd48835..913860aab60 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctNetHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctNetHandler.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.capability.IHazardParticleContainer; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IEnvironmentalHazardCleaner; import com.gregtechceu.gtceu.common.blockentity.DuctPipeBlockEntity; import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; @@ -40,11 +39,11 @@ public void updateNetwork(DuctPipeNet net) { @Nullable private IHazardParticleContainer getInnerContainer() { - if (net == null || pipe.isInValid() || facing == null || pipe.isBlocked(facing)) { + if (net == null || pipe.isRemoved() || facing == null || pipe.isBlocked(facing)) { return null; } - final List data = net.getNetData(pipe.getPipePos(), facing); + final List data = net.getNetData(pipe.getBlockPos(), facing); if (data == null) { return null; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctRoutePath.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctRoutePath.java index 8488e7e589a..747491e2099 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctRoutePath.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctRoutePath.java @@ -36,7 +36,7 @@ public DuctRoutePath(DuctPipeBlockEntity targetPipe, @NotNull Direction facing, @Override public @NotNull BlockPos getTargetPipePos() { - return targetPipe.getPipePos(); + return targetPipe.getBlockPos(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemNetHandler.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemNetHandler.java index f6f047509d0..7e16934cd12 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemNetHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemNetHandler.java @@ -56,7 +56,7 @@ public ItemNetHandler(ItemPipeNet net, ItemPipeBlockEntity pipe, Direction facin public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate) { if (stack.isEmpty()) return stack; - if (network == null || pipe == null || pipe.isInValid() || pipe.isBlocked(facing)) { + if (network == null || pipe == null || pipe.isRemoved() || pipe.isBlocked(facing)) { return stack; } @@ -65,7 +65,7 @@ public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate simulatedTransfersGlobalRoundRobin.putAll(pipe.getTransferred()); CoverBehavior pipeCover = pipe.getCoverContainer().getCoverAtSide(facing); - CoverBehavior tileCover = getCoverOnNeighbour(pipe.getPipePos(), facing); + CoverBehavior tileCover = getCoverOnNeighbour(pipe.getBlockPos(), facing); ConveyorCover conveyor = null; // abort if there are two conveyors @@ -76,7 +76,7 @@ public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate if (pipeCover instanceof ConveyorCover pipeConveyor) conveyor = pipeConveyor; if (tileCover instanceof ConveyorCover tileConveyor) conveyor = tileConveyor; - List routePaths = network.getNetData(pipe.getPipePos(), facing, ItemRoutePathSet.FULL); + List routePaths = network.getNetData(pipe.getBlockPos(), facing, ItemRoutePathSet.FULL); if (routePaths.isEmpty()) return stack; List routePathsCopy = new ArrayList<>(routePaths); @@ -119,7 +119,7 @@ private ItemStack distributeEquallyNoRestrictive(ItemStack stack, boolean simulate) { // Round-robin distribute to all non-Restrictive destinations List routePathsNonRestrictedCopy = new ArrayList<>( - network.getNetData(pipe.getPipePos(), facing, ItemRoutePathSet.NONRESTRICTED)); + network.getNetData(pipe.getBlockPos(), facing, ItemRoutePathSet.NONRESTRICTED)); ItemStack remainsNonRestricted; if (routePathsNonRestrictedCopy.isEmpty()) { remainsNonRestricted = stack; @@ -129,7 +129,7 @@ private ItemStack distributeEquallyNoRestrictive(ItemStack stack, // if anything is left, distribute to Restrictive destinations if (!remainsNonRestricted.isEmpty()) { List routePathsRestrictiveCopy = new ArrayList<>( - network.getNetData(pipe.getPipePos(), facing, ItemRoutePathSet.RESTRICTED)); + network.getNetData(pipe.getBlockPos(), facing, ItemRoutePathSet.RESTRICTED)); return distributeEqually(routePathsRestrictiveCopy, remainsNonRestricted, simulate); } else { return ItemStack.EMPTY; @@ -269,7 +269,7 @@ private ItemStack insertIntoTarget(ItemRoutePath routePath, ItemStack stack, boo } CoverBehavior pipeCover = routePath.getTargetPipe().getCoverContainer() .getCoverAtSide(routePath.getTargetFacing()); - CoverBehavior tileCover = getCoverOnNeighbour(routePath.getTargetPipe().getPipePos(), + CoverBehavior tileCover = getCoverOnNeighbour(routePath.getTargetPipe().getBlockPos(), routePath.getTargetFacing()); if (pipeCover != null) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemRoutePath.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemRoutePath.java index bda0ecea64d..c0070ddccd8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemRoutePath.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemRoutePath.java @@ -51,7 +51,7 @@ public ItemRoutePath(ItemPipeBlockEntity targetPipe, @NotNull Direction facing, @Override public @NotNull BlockPos getTargetPipePos() { - return targetPipe.getPipePos(); + return targetPipe.getBlockPos(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/laser/LaserNetHandler.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/laser/LaserNetHandler.java index c83c66c8360..859cb258882 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/laser/LaserNetHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/laser/LaserNetHandler.java @@ -38,11 +38,11 @@ private void setPipesActive() { @Nullable private ILaserContainer getInnerContainer() { - if (net == null || pipe == null || pipe.isInValid() || (facing == null || pipe.isBlocked(facing))) { + if (net == null || pipe == null || pipe.isRemoved() || (facing == null || pipe.isBlocked(facing))) { return null; } - LaserRoutePath data = net.getNetData(pipe.getPipePos(), facing); + LaserRoutePath data = net.getNetData(pipe.getBlockPos(), facing); if (data == null) { return null; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/optical/OpticalNetHandler.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/optical/OpticalNetHandler.java index 9072b18fcfc..571faab6f1d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/optical/OpticalNetHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/optical/OpticalNetHandler.java @@ -75,13 +75,13 @@ private void setPipesActive() { } private boolean isNetInvalidForTraversal() { - return net == null || pipe == null || pipe.isInValid(); + return net == null || pipe == null || pipe.isRemoved(); } private boolean traverseRecipeAvailable(@NotNull GTRecipe recipe, @NotNull Collection seen) { if (isNetInvalidForTraversal()) return false; - OpticalRoutePath inv = net.getNetData(pipe.getPipePos(), facing); + OpticalRoutePath inv = net.getNetData(pipe.getBlockPos(), facing); if (inv == null) return false; IOpticalDataAccessHatch hatch = inv.getDataHatch(); @@ -115,7 +115,7 @@ private boolean traverseCanBridge(@NotNull Collection seen) { if (isNetInvalidForTraversal()) return null; - OpticalRoutePath inv = net.getNetData(pipe.getPipePos(), facing); + OpticalRoutePath inv = net.getNetData(pipe.getBlockPos(), facing); if (inv == null) return null; IOpticalComputationProvider hatch = inv.getComputationHatch(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/optical/OpticalRoutePath.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/optical/OpticalRoutePath.java index 07ccff2fe64..a05cc0d1718 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/optical/OpticalRoutePath.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/optical/OpticalRoutePath.java @@ -34,18 +34,18 @@ public OpticalRoutePath(OpticalPipeBlockEntity targetPipe, Direction targetFacin @Nullable public IOpticalDataAccessHatch getDataHatch() { IDataAccessHatch dataAccessHatch = getTargetCapability(GTCapability.CAPABILITY_DATA_ACCESS, - targetPipe.getPipeLevel()); + targetPipe.getLevel()); return dataAccessHatch instanceof IOpticalDataAccessHatch opticalHatch ? opticalHatch : null; } @Nullable public IOpticalComputationProvider getComputationHatch() { - return getTargetCapability(GTCapability.CAPABILITY_COMPUTATION_PROVIDER, targetPipe.getPipeLevel()); + return getTargetCapability(GTCapability.CAPABILITY_COMPUTATION_PROVIDER, targetPipe.getLevel()); } @Override public @NotNull BlockPos getTargetPipePos() { - return targetPipe.getPipePos(); + return targetPipe.getBlockPos(); } @Nullable diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java index 358f0281dca..c79852c7beb 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.machine.steam.SteamMachine; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java index a72871fede2..b97dabb17b7 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.ae2; import com.gregtechceu.gtceu.api.cover.filter.ItemFilter; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.placeholder.*; import com.gregtechceu.gtceu.api.placeholder.exceptions.*; import com.gregtechceu.gtceu.utils.GTStringUtils; @@ -51,9 +50,9 @@ private static IGrid getGrid(PlaceholderContext ctx) throws PlaceholderException } ; BlockEntity blockEntity = ctx.level().getBlockEntity(ctx.pos()); if (blockEntity instanceof IGridConnectedBlockEntity gridMachine) { - IGrid nullable = gridMachine.getMainNode().getGrid(); - if (nullable == null) throw new NoMENetworkException(); - return nullable; + IGrid nullable = gridMachine.getMainNode().getGrid(); + if (nullable == null) throw new NoMENetworkException(); + return nullable; } throw new NoMENetworkException(); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java index b03f3b32d1d..e1993c648f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java @@ -426,7 +426,8 @@ public void onMachineRemoved() { @Override public InteractionResult onDataStickShiftUse(Player player, ItemStack dataStick) { - dataStick.getOrCreateTag().putIntArray("pos", new int[] { getBlockPos().getX(), getBlockPos().getY(), getBlockPos().getZ() }); + dataStick.getOrCreateTag().putIntArray("pos", + new int[] { getBlockPos().getX(), getBlockPos().getY(), getBlockPos().getZ() }); return InteractionResult.SUCCESS; } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/CoverHolderPeripheral.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/CoverHolderPeripheral.java index 0fa39c4c28e..dfa13b075b1 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/CoverHolderPeripheral.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/CoverHolderPeripheral.java @@ -39,7 +39,7 @@ public static MethodResult parsePlaceholders(ICoverable coverable, String face, if (coverable.getCoverAtSide(direction) instanceof ComputerMonitorCover cover) { return MethodResult.of(true, PlaceholderHandler.processPlaceholders(text, new PlaceholderContext( coverable.getLevel(), - coverable.getPos(), + coverable.getBlockPos(), direction, cover.itemStackHandler, cover, diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/DataBankBlockProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/DataBankBlockProvider.java index 410165a70a2..6617359f4c6 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/DataBankBlockProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/DataBankBlockProvider.java @@ -2,8 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.common.machine.multiblock.electric.research.DataBankMachine; import com.gregtechceu.gtceu.utils.FormattingUtil; import com.gregtechceu.gtceu.utils.GTUtil; @@ -28,23 +26,23 @@ public ResourceLocation getUid() { @Override public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { if (blockAccessor.getBlockEntity() instanceof DataBankMachine) { - long energyUsage = blockAccessor.getServerData().getLong("energyUsage"); - String energyFormatted = FormattingUtil.formatNumbers(energyUsage); - // wrap in text component to keep it from being formatted - Component voltageName = Component.literal(GTValues.VNF[GTUtil.getTierByVoltage(energyUsage)]); - Component text = Component.translatable( - "gtceu.multiblock.energy_consumption", - energyFormatted, - voltageName); - - iTooltip.add(text); - } + long energyUsage = blockAccessor.getServerData().getLong("energyUsage"); + String energyFormatted = FormattingUtil.formatNumbers(energyUsage); + // wrap in text component to keep it from being formatted + Component voltageName = Component.literal(GTValues.VNF[GTUtil.getTierByVoltage(energyUsage)]); + Component text = Component.translatable( + "gtceu.multiblock.energy_consumption", + energyFormatted, + voltageName); + + iTooltip.add(text); + } } @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { if (blockAccessor.getBlockEntity() instanceof DataBankMachine dataBank) { - compoundTag.putLong("energyUsage", dataBank.getEnergyUsage()); - } + compoundTag.putLong("energyUsage", dataBank.getEnergyUsage()); + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MEPatternBufferProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MEPatternBufferProvider.java index cc218ea4ce9..577a95880d4 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MEPatternBufferProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MEPatternBufferProvider.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.jade.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.integration.ae2.machine.MEPatternBufferPartMachine; import com.gregtechceu.gtceu.integration.jade.GTElementHelper; @@ -29,25 +28,25 @@ public class MEPatternBufferProvider implements IBlockComponentProvider, IServer @Override public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { if (blockAccessor.getBlockEntity() instanceof MEPatternBufferPartMachine) { - CompoundTag serverData = blockAccessor.getServerData(); - if (!serverData.getBoolean("formed")) return; + CompoundTag serverData = blockAccessor.getServerData(); + if (!serverData.getBoolean("formed")) return; - iTooltip.add(Component.translatable("gtceu.top.proxies_bound", serverData.getInt("proxies")) - .withStyle(TooltipHelper.RAINBOW_HSL_SLOW)); - readBufferTag(iTooltip, serverData); + iTooltip.add(Component.translatable("gtceu.top.proxies_bound", serverData.getInt("proxies")) + .withStyle(TooltipHelper.RAINBOW_HSL_SLOW)); + readBufferTag(iTooltip, serverData); } } @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { if (blockAccessor.getBlockEntity() instanceof MEPatternBufferPartMachine buffer) { - if (!buffer.isFormed()) { - compoundTag.putBoolean("formed", false); - return; - } - compoundTag.putBoolean("formed", true); - compoundTag.putInt("proxies", buffer.getProxies().size()); - writeBufferTag(compoundTag, buffer); + if (!buffer.isFormed()) { + compoundTag.putBoolean("formed", false); + return; + } + compoundTag.putBoolean("formed", true); + compoundTag.putInt("proxies", buffer.getProxies().size()); + writeBufferTag(compoundTag, buffer); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MEPatternBufferProxyProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MEPatternBufferProxyProvider.java index e12fe907658..2599381a132 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MEPatternBufferProxyProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MEPatternBufferProxyProvider.java @@ -20,40 +20,40 @@ public class MEPatternBufferProxyProvider implements IBlockComponentProvider, IS @Override public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { if (blockAccessor.getBlockEntity() instanceof MEPatternBufferProxyPartMachine) { - CompoundTag serverData = blockAccessor.getServerData(); - if (!serverData.getBoolean("formed")) return; - if (!serverData.getBoolean("bound")) { - iTooltip.add(Component.translatable("gtceu.top.buffer_not_bound").withStyle(ChatFormatting.RED)); - return; - } - - int[] pos = serverData.getIntArray("pos"); - iTooltip.add(Component.translatable("gtceu.top.buffer_bound_pos", pos[0], pos[1], pos[2]) - .withStyle(TooltipHelper.RAINBOW_HSL_SLOW)); - - MEPatternBufferProvider.readBufferTag(iTooltip, serverData); + CompoundTag serverData = blockAccessor.getServerData(); + if (!serverData.getBoolean("formed")) return; + if (!serverData.getBoolean("bound")) { + iTooltip.add(Component.translatable("gtceu.top.buffer_not_bound").withStyle(ChatFormatting.RED)); + return; + } + + int[] pos = serverData.getIntArray("pos"); + iTooltip.add(Component.translatable("gtceu.top.buffer_bound_pos", pos[0], pos[1], pos[2]) + .withStyle(TooltipHelper.RAINBOW_HSL_SLOW)); + + MEPatternBufferProvider.readBufferTag(iTooltip, serverData); } } @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { if (blockAccessor.getBlockEntity() instanceof MEPatternBufferProxyPartMachine proxy) { - if (!proxy.isFormed()) { - compoundTag.putBoolean("formed", false); - return; - } - compoundTag.putBoolean("formed", true); - var buffer = proxy.getBuffer(); - if (buffer == null) { - compoundTag.putBoolean("bound", false); - return; - } - compoundTag.putBoolean("bound", true); - - var pos = buffer.getBlockPos(); - compoundTag.putIntArray("pos", new int[] { pos.getX(), pos.getY(), pos.getZ() }); - MEPatternBufferProvider.writeBufferTag(compoundTag, buffer); + if (!proxy.isFormed()) { + compoundTag.putBoolean("formed", false); + return; } + compoundTag.putBoolean("formed", true); + var buffer = proxy.getBuffer(); + if (buffer == null) { + compoundTag.putBoolean("bound", false); + return; + } + compoundTag.putBoolean("bound", true); + + var pos = buffer.getBlockPos(); + compoundTag.putIntArray("pos", new int[] { pos.getX(), pos.getY(), pos.getZ() }); + MEPatternBufferProvider.writeBufferTag(compoundTag, buffer); + } } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/PrimitivePumpBlockProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/PrimitivePumpBlockProvider.java index c24feda1525..f04a30d66b1 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/PrimitivePumpBlockProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/PrimitivePumpBlockProvider.java @@ -1,8 +1,6 @@ package com.gregtechceu.gtceu.integration.jade.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.common.machine.multiblock.primitive.PrimitivePumpMachine; import com.gregtechceu.gtceu.utils.FormattingUtil; @@ -20,17 +18,17 @@ public class PrimitivePumpBlockProvider implements IBlockComponentProvider, ISer @Override public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { - if (blockAccessor.getBlockEntity() instanceof PrimitivePumpMachine pump) { - long water = blockAccessor.getServerData().getLong("waterProduced"); - iTooltip.add(Component.translatable("gtceu.top.primitive_pump_production", - FormattingUtil.formatNumbers(water))); + if (blockAccessor.getBlockEntity() instanceof PrimitivePumpMachine pump) { + long water = blockAccessor.getServerData().getLong("waterProduced"); + iTooltip.add(Component.translatable("gtceu.top.primitive_pump_production", + FormattingUtil.formatNumbers(water))); } } @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { if (blockAccessor.getBlockEntity() instanceof PrimitivePumpMachine pump) { - compoundTag.putLong("waterProduced", pump.getFluidProduction()); + compoundTag.putLong("waterProduced", pump.getFluidProduction()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/TransformerBlockProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/TransformerBlockProvider.java index c525a457412..c9f927282e7 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/TransformerBlockProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/TransformerBlockProvider.java @@ -2,8 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.common.machine.electric.TransformerMachine; import net.minecraft.core.Direction; @@ -27,43 +25,43 @@ public ResourceLocation getUid() { @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { if (blockAccessor.getBlockEntity() instanceof TransformerMachine transformer) { - compoundTag.putInt("side", transformer.getFrontFacing().get3DDataValue()); - compoundTag.putBoolean("transformUp", transformer.isTransformUp()); - compoundTag.putInt("baseAmp", transformer.getBaseAmp()); - compoundTag.putInt("baseVoltage", transformer.getTier()); + compoundTag.putInt("side", transformer.getFrontFacing().get3DDataValue()); + compoundTag.putBoolean("transformUp", transformer.isTransformUp()); + compoundTag.putInt("baseAmp", transformer.getBaseAmp()); + compoundTag.putInt("baseVoltage", transformer.getTier()); } } @Override public void appendTooltip(ITooltip tooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { if (blockAccessor.getBlockEntity() instanceof TransformerMachine transformer) { - boolean transformUp = blockAccessor.getServerData().getBoolean("transformUp"); - int voltage = blockAccessor.getServerData().getInt("baseVoltage"); - int amp = blockAccessor.getServerData().getInt("baseAmp"); - if (transformUp) { - tooltip.add(Component.translatable("gtceu.top.transform_up", - (GTValues.VNF[voltage] + " §r(" + amp * 4 + "A) -> " + GTValues.VNF[voltage + 1] + " §r(" + - amp + - "A)"))); - } else { - tooltip.add(Component.translatable("gtceu.top.transform_down", - (GTValues.VNF[voltage + 1] + " §r(" + amp + "A) -> " + GTValues.VNF[voltage] + " §r(" + - amp * 4 + - "A)"))); - } + boolean transformUp = blockAccessor.getServerData().getBoolean("transformUp"); + int voltage = blockAccessor.getServerData().getInt("baseVoltage"); + int amp = blockAccessor.getServerData().getInt("baseAmp"); + if (transformUp) { + tooltip.add(Component.translatable("gtceu.top.transform_up", + (GTValues.VNF[voltage] + " §r(" + amp * 4 + "A) -> " + GTValues.VNF[voltage + 1] + " §r(" + + amp + + "A)"))); + } else { + tooltip.add(Component.translatable("gtceu.top.transform_down", + (GTValues.VNF[voltage + 1] + " §r(" + amp + "A) -> " + GTValues.VNF[voltage] + " §r(" + + amp * 4 + + "A)"))); + } - if (blockAccessor.getHitResult().getDirection() == - Direction.from3DDataValue(blockAccessor.getServerData().getInt("side"))) { - tooltip.add( - Component.translatable( - (transformUp ? "gtceu.top.transform_output" : "gtceu.top.transform_input"), - (GTValues.VNF[voltage + 1] + " §r(" + amp + "A)"))); - } else { - tooltip.add( - Component.translatable( - (transformUp ? "gtceu.top.transform_input" : "gtceu.top.transform_output"), - (GTValues.VNF[voltage] + " §r(" + amp * 4 + "A)"))); - } + if (blockAccessor.getHitResult().getDirection() == + Direction.from3DDataValue(blockAccessor.getServerData().getInt("side"))) { + tooltip.add( + Component.translatable( + (transformUp ? "gtceu.top.transform_output" : "gtceu.top.transform_input"), + (GTValues.VNF[voltage + 1] + " §r(" + amp + "A)"))); + } else { + tooltip.add( + Component.translatable( + (transformUp ? "gtceu.top.transform_input" : "gtceu.top.transform_output"), + (GTValues.VNF[voltage] + " §r(" + amp * 4 + "A)"))); } } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java index 3c3592437a4..ec21eb0bab8 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java index 4ab557c7c9f..18b6f520ee7 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java index 0ab8be82fae..65a4ab847e6 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.kjs.builders.machine; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.registry.registrate.BuilderBase; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java index eda421b3120..14ff3c552a7 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.item.MetaMachineItem; -import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/MachineConstructors.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/MachineConstructors.java index 40f638d7101..622cdb2bcdd 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/MachineConstructors.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/MachineConstructors.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.kjs.helpers; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.common.machine.multiblock.electric.FusionReactorMachine; import com.gregtechceu.gtceu.common.machine.multiblock.generator.LargeCombustionEngineMachine; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java index a1df325e738..1564129887b 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.steam.SimpleSteamMachine; import com.gregtechceu.gtceu.api.machine.steam.SteamMachine; diff --git a/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java index 0debd108336..c8a6193f15f 100644 --- a/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java @@ -46,7 +46,8 @@ protected final void saveAdditional(CompoundTag tag) { @Override public final void load(CompoundTag tag) { super.load(tag); - getSyncDataHolder().deserializeNBT(tag, (getLevel() == null ? GTCEu.isClientThread() : getLevel().isClientSide)); + getSyncDataHolder().deserializeNBT(tag, + (getLevel() == null ? GTCEu.isClientThread() : getLevel().isClientSide)); } @Override @@ -67,7 +68,8 @@ public final void updateTick() { if (isDirty) { var level = getLevel(); if (level == null) return; - GTNetwork.sendToAllPlayersTrackingChunk(level.getChunkAt(getBlockPos()), new SPacketUpdateBESyncValue(this)); + GTNetwork.sendToAllPlayersTrackingChunk(level.getChunkAt(getBlockPos()), + new SPacketUpdateBESyncValue(this)); isDirty = false; } } diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/MultipleEnergyHatchTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/MultipleEnergyHatchTest.java index e54feac84bd..4559032c208 100644 --- a/src/test/java/com/gregtechceu/gtceu/api/recipe/MultipleEnergyHatchTest.java +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/MultipleEnergyHatchTest.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredientTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredientTest.java index 9b062ab42e7..e0503efbca2 100644 --- a/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredientTest.java +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredientTest.java @@ -130,7 +130,7 @@ public static void prepare(ServerLevel level) { } private static MetaMachine getMetaMachine(BlockEntity entity) { - return (MetaMachine)entity; + return (MetaMachine) entity; } private record BusHolder(ItemBusPartMachine inputBus1, FluidHatchPartMachine inputHatch1, diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredientTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredientTest.java index 7ac0101b2bd..e69eabbc030 100644 --- a/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredientTest.java +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredientTest.java @@ -124,7 +124,7 @@ public static void prepare(ServerLevel level) { } private static MetaMachine getMetaMachine(BlockEntity entity) { - return (MetaMachine)entity; + return (MetaMachine) entity; } private record BusHolder(ItemBusPartMachine inputBus1, FluidHatchPartMachine inputHatch1, diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/ConveyorCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/ConveyorCoverTest.java index 192df16f114..47b9b683a1a 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/ConveyorCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/ConveyorCoverTest.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.common.machine.storage.BufferMachine; @@ -51,8 +50,8 @@ public static void conveyorTransfersItemsTest(GameTestHelper helper) { @GameTest(template = "empty_5x5", batch = "coverTests") public static void conveyorTransfersItemsWrongDirectionTest(GameTestHelper helper) { setupCrates(helper); - BufferMachine crate1 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 1, 0)); - BufferMachine crate2 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 2, 0)); + BufferMachine crate1 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + BufferMachine crate2 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.getInventory().setStackInSlot(0, new ItemStack(Items.FLINT, 16)); // LV Cover ConveyorCover cover = (ConveyorCover) TestUtils.placeCover(helper, crate2, GTItems.CONVEYOR_MODULE_LV.asStack(), diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/DetectorCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/DetectorCoverTest.java index e2cd50eefd1..89d9c124851 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/DetectorCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/DetectorCoverTest.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.common.cover; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.gametest.util.TestUtils; diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/ItemFilterCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/ItemFilterCoverTest.java index 443a57fe959..61ea1458ec4 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/ItemFilterCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/ItemFilterCoverTest.java @@ -65,8 +65,8 @@ public static void conveyorTransfersFilteredItemsTest(GameTestHelper helper) { @GameTest(template = "empty_5x5", batch = "coverTests") public static void conveyorDoesntTransferFilteredItemsTest(GameTestHelper helper) { setupCrates(helper); - BufferMachine crate1 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 1, 0)); - BufferMachine crate2 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 2, 0)); + BufferMachine crate1 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + BufferMachine crate2 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.getInventory().setStackInSlot(0, new ItemStack(Items.FLINT, 16)); crate1.getInventory().setStackInSlot(1, new ItemStack(Items.DIAMOND, 16)); // LV Cover diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/PumpCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/PumpCoverTest.java index b91bfa18a98..d803dafdf8e 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/PumpCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/PumpCoverTest.java @@ -34,7 +34,7 @@ public static void setupCrates(GameTestHelper helper) { public static void pumpTransfersFluidsTest(GameTestHelper helper) { setupCrates(helper); BufferMachine crate1 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); - BufferMachine crate2 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 2, 0)); + BufferMachine crate2 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.getFluidHandlerCap(Direction.NORTH, false).setFluidInTank(0, new FluidStack(Fluids.WATER, 1000)); // LV Cover PumpCover cover = (PumpCover) TestUtils.placeCover(helper, crate2, GTItems.ELECTRIC_PUMP_LV.asStack(), @@ -53,7 +53,7 @@ public static void pumpTransfersFluidsTest(GameTestHelper helper) { @GameTest(template = "empty_5x5", batch = "coverTests") public static void pumpTransfersFluidsWrongDirectionTest(GameTestHelper helper) { setupCrates(helper); - BufferMachine crate1 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 1, 0)); + BufferMachine crate1 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); BufferMachine crate2 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.getFluidHandlerCap(Direction.NORTH, false).setFluidInTank(0, new FluidStack(Fluids.WATER, 1000)); // LV Cover @@ -75,7 +75,7 @@ public static void pumpTransfersFluidsWrongDirectionTest(GameTestHelper helper) @GameTest(template = "empty_5x5", batch = "coverTests") public static void pumpDoesntTransferItemsTest(GameTestHelper helper) { setupCrates(helper); - BufferMachine crate1 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 1, 0)); + BufferMachine crate1 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); BufferMachine crate2 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.getInventory().setStackInSlot(0, new ItemStack(Items.FLINT, 16)); // LV Cover diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/RobotArmTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/RobotArmTest.java index c0fb66ab6be..55ae819ce60 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/RobotArmTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/RobotArmTest.java @@ -30,7 +30,7 @@ public static void setupCrates(GameTestHelper helper) { @GameTest(template = "empty_5x5", batch = "coverTests") public static void robotArmKeepExactTest(GameTestHelper helper) { setupCrates(helper); - CrateMachine crate1 = (CrateMachine)helper.getBlockEntity(new BlockPos(0, 1, 0)); + CrateMachine crate1 = (CrateMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); CrateMachine crate2 = (CrateMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.inventory.setStackInSlot(0, new ItemStack(Items.FLINT, 16)); // LV Cover @@ -54,7 +54,7 @@ public static void robotArmKeepExactTest(GameTestHelper helper) { public static void robotArmTransferExactTest(GameTestHelper helper) { setupCrates(helper); CrateMachine crate1 = (CrateMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); - CrateMachine crate2 = (CrateMachine)helper.getBlockEntity(new BlockPos(0, 2, 0)); + CrateMachine crate2 = (CrateMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.inventory.setStackInSlot(0, new ItemStack(Items.FLINT, 16)); // LV Cover RobotArmCover cover = (RobotArmCover) TestUtils.placeCover(helper, crate2, GTItems.ROBOT_ARM_LV.asStack(), diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/ShutterCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/ShutterCoverTest.java index b1a5bce90b8..a47d11dde62 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/ShutterCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/ShutterCoverTest.java @@ -29,8 +29,8 @@ public static void setupCrates(GameTestHelper helper) { @GameTest(template = "empty_5x5", batch = "coverTests") public static void shutterCoverBlocksTransferTest(GameTestHelper helper) { setupCrates(helper); - BufferMachine crate1 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 1, 0)); - BufferMachine crate2 = (BufferMachine)helper.getBlockEntity(new BlockPos(0, 2, 0)); + BufferMachine crate1 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + BufferMachine crate2 = (BufferMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); crate1.getInventory().setStackInSlot(0, new ItemStack(Items.FLINT, 16)); crate1.getInventory().setStackInSlot(1, new ItemStack(Items.DIAMOND, 16)); // LV Cover diff --git a/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java b/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java index acdb913464f..c51176f3a4d 100644 --- a/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java +++ b/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java @@ -9,7 +9,6 @@ import com.gregtechceu.gtceu.api.cover.CoverDefinition; import com.gregtechceu.gtceu.api.item.IComponentItem; import com.gregtechceu.gtceu.api.item.component.IItemComponent; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; @@ -236,7 +235,7 @@ public static CoverBehavior placeCover(GameTestHelper helper, MetaMachine machin public static MetaMachine setMachine(GameTestHelper helper, BlockPos pos, MachineDefinition machineDefinition) { helper.setBlock(pos, machineDefinition.getBlock()); - return ((MetaMachine)Objects.requireNonNull(helper.getBlockEntity(pos))); + return ((MetaMachine) Objects.requireNonNull(helper.getBlockEntity(pos))); } public static void assertEqual(GameTestHelper helper, List text, String s) { @@ -266,13 +265,13 @@ public static void assertLampOff(GameTestHelper helper, BlockPos pos) { } /** - * Shortcut function to retrieve a metamachine from a blockentity's + * Shortcut function to cast a BE to a metamachine * - * @param entity The MetaMachineBlockEntity + * @param entity The BlockEntity * @return the machine held, if any */ public static MetaMachine getMetaMachine(BlockEntity entity) { - return (MetaMachine)entity; + return (MetaMachine) entity; } /** From a80684858cfa32758d4e51c0a75f343a5b2d2e16 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 19 Dec 2025 13:12:23 +1100 Subject: [PATCH 15/41] remove mmbe usage --- .../gtceu/common/item/PortableScannerBehavior.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java index 06c1bc26710..e52d2bcc0a4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; import com.gregtechceu.gtceu.api.capability.*; import com.gregtechceu.gtceu.api.capability.forge.GTCapability; @@ -448,13 +447,11 @@ else if (machine instanceof IDataInfoProvider) } } - if (mode == DisplayMode.SHOW_INTERNAL_JAVA_INFO && - tileEntity instanceof ManagedSyncBlockEntity syncBlockEntity) { - MetaMachineBlockEntity mmbe = (syncBlockEntity instanceof MetaMachineBlockEntity m) ? m : null; - PipeBlockEntity pipe = (syncBlockEntity instanceof PipeBlockEntity p) ? p : null; + if (mode == DisplayMode.SHOW_INTERNAL_JAVA_INFO && tileEntity instanceof ManagedSyncBlockEntity syncBlockEntity) { + MetaMachine machine = (syncBlockEntity instanceof MetaMachine m) ? m : null; + PipeBlockEntity pipe = (syncBlockEntity instanceof PipeBlockEntity p) ? p : null; list.add(Component.literal(syncBlockEntity.toString())); - if (mmbe != null) list.add(Component.literal(mmbe.getMetaMachine().toString())); if (pipe != null) { var net = pipe.getPipeNet(); list.add(Component.literal(net == null ? "null" : net.toString())); @@ -462,8 +459,7 @@ else if (machine instanceof IDataInfoProvider) list.add(Component.translatable("behavior.portable_scanner.divider")); list.add(Component.literal("Covers")); - ICoverable coverable = mmbe != null ? mmbe.getMetaMachine().getCoverContainer() : - (pipe != null ? pipe.getCoverContainer() : null); + ICoverable coverable = machine != null ? machine.getCoverContainer() : (pipe != null ? pipe.getCoverContainer() : null); if (coverable != null) { for (var dir : GTUtil.DIRECTIONS) { var cover = coverable.getCoverAtSide(dir); From 526d5fbba5c953a1e29ca22a67addc6a63e01643 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 19 Dec 2025 21:05:58 +1100 Subject: [PATCH 16/41] fix data load issue --- .../com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java index c8a6193f15f..2e5c5e883bf 100644 --- a/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java @@ -46,6 +46,7 @@ protected final void saveAdditional(CompoundTag tag) { @Override public final void load(CompoundTag tag) { super.load(tag); + if (tag.contains("machine")) tag.merge(tag.getCompound("machine")); getSyncDataHolder().deserializeNBT(tag, (getLevel() == null ? GTCEu.isClientThread() : getLevel().isClientSide)); } From 941f37b64698261478dc10112f40338c27278f04 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Mon, 22 Dec 2025 21:18:18 +1100 Subject: [PATCH 17/41] small interface method changes --- .../api/blockentity/IGregtechBlockEntity.java | 10 +++++++++- .../gregtechceu/gtceu/api/machine/MetaMachine.java | 9 --------- .../gregtechceu/gtceu/api/pipenet/IPipeNode.java | 14 -------------- 3 files changed, 9 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/IGregtechBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/IGregtechBlockEntity.java index 4acd507b7bd..4fd12fcf388 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/IGregtechBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/IGregtechBlockEntity.java @@ -25,7 +25,15 @@ public interface IGregtechBlockEntity extends ISyncManaged, ITickSubscription, I void notifyBlockUpdate(); - void scheduleNeighborShapeUpdate(); + default void scheduleNeighborShapeUpdate() { + Level level = getLevel(); + BlockPos pos = getBlockPos(); + + if (level == null || pos == null) + return; + + level.getBlockState(pos).updateNeighbourShapes(level, pos, Block.UPDATE_ALL); + } void markAsChanged(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index 6176a59b94b..9cc9e87aa90 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -181,15 +181,6 @@ public boolean triggerEvent(int id, int para) { return false; } - public void scheduleNeighborShapeUpdate() { - Level level = getLevel(); - BlockPos pos = getBlockPos(); - - if (level == null) return; - - level.getBlockState(pos).updateNeighbourShapes(level, pos, Block.UPDATE_ALL); - } - public void setPaintingColor(int color) { if (color == this.paintingColor) return; diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/IPipeNode.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/IPipeNode.java index 6d1264780c4..3d951759569 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/IPipeNode.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/IPipeNode.java @@ -119,20 +119,6 @@ default NodeDataType getNodeData() { default void serverTick() {} - default void scheduleNeighborShapeUpdate() { - Level level = getLevel(); - BlockPos pos = getBlockPos(); - - if (level == null || pos == null) - return; - - level.getBlockState(pos).updateNeighbourShapes(level, pos, Block.UPDATE_ALL); - } - - default BlockEntity getNeighbor(Direction direction) { - return getLevel().getBlockEntity(getBlockPos().relative(direction)); - } - @Override default int getDefaultPaintingColor() { return 0xFFFFFF; From 34dbabde9fe5fe25f4519ec6b6c957118cf5fc5d Mon Sep 17 00:00:00 2001 From: Gustavo Date: Thu, 25 Dec 2025 11:17:23 +1100 Subject: [PATCH 18/41] spotless --- .../java/com/gregtechceu/gtceu/api/pipenet/IPipeNode.java | 3 --- .../gtceu/common/item/PortableScannerBehavior.java | 8 +++++--- .../machine/multiblock/electric/CleanroomMachine.java | 2 -- .../machine/multiblock/electric/LargeMinerMachine.java | 2 -- .../data_transformers/CoverBehaviorTransformer.java | 1 + 5 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/IPipeNode.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/IPipeNode.java index 3d951759569..8e12e0e15ce 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/IPipeNode.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/IPipeNode.java @@ -8,11 +8,8 @@ import com.gregtechceu.gtceu.api.capability.ICoverable; import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java index e52d2bcc0a4..d62b68bea73 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java @@ -447,9 +447,10 @@ else if (machine instanceof IDataInfoProvider) } } - if (mode == DisplayMode.SHOW_INTERNAL_JAVA_INFO && tileEntity instanceof ManagedSyncBlockEntity syncBlockEntity) { + if (mode == DisplayMode.SHOW_INTERNAL_JAVA_INFO && + tileEntity instanceof ManagedSyncBlockEntity syncBlockEntity) { MetaMachine machine = (syncBlockEntity instanceof MetaMachine m) ? m : null; - PipeBlockEntity pipe = (syncBlockEntity instanceof PipeBlockEntity p) ? p : null; + PipeBlockEntity pipe = (syncBlockEntity instanceof PipeBlockEntity p) ? p : null; list.add(Component.literal(syncBlockEntity.toString())); if (pipe != null) { @@ -459,7 +460,8 @@ else if (machine instanceof IDataInfoProvider) list.add(Component.translatable("behavior.portable_scanner.divider")); list.add(Component.literal("Covers")); - ICoverable coverable = machine != null ? machine.getCoverContainer() : (pipe != null ? pipe.getCoverContainer() : null); + ICoverable coverable = machine != null ? machine.getCoverContainer() : + (pipe != null ? pipe.getCoverContainer() : null); if (coverable != null) { for (var dir : GTUtil.DIRECTIONS) { var cover = coverable.getCoverAtSide(dir); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java index 47efc8dc087..c0dc3465dbf 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java @@ -20,7 +20,6 @@ import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; -import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.api.pattern.BlockPattern; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; @@ -107,7 +106,6 @@ public CleanroomMachine(BlockEntityCreationInfo info) { // ****** Initialization ******// ////////////////////////////////////// - protected RecipeLogic createRecipeLogic() { return new CleanroomLogic(this); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java index 029c3285eab..a2f4a715e9b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java @@ -12,8 +12,6 @@ import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; -import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; -import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.api.transfer.fluid.FluidHandlerList; import com.gregtechceu.gtceu.common.data.GTBlocks; diff --git a/src/main/java/com/gregtechceu/gtceu/syncsystem/data_transformers/CoverBehaviorTransformer.java b/src/main/java/com/gregtechceu/gtceu/syncsystem/data_transformers/CoverBehaviorTransformer.java index ec6c8d69cde..d813cff47b3 100644 --- a/src/main/java/com/gregtechceu/gtceu/syncsystem/data_transformers/CoverBehaviorTransformer.java +++ b/src/main/java/com/gregtechceu/gtceu/syncsystem/data_transformers/CoverBehaviorTransformer.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.syncsystem.ISyncManaged; import com.gregtechceu.gtceu.syncsystem.IValueTransformer; + import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; From e972e343ecae26a71e661a0f941aded6ab442551 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 26 Dec 2025 10:51:44 +1100 Subject: [PATCH 19/41] change workable tiered machine ctors --- .../api/machine/WorkableTieredMachine.java | 72 +++++++------------ .../common/machine/electric/MinerMachine.java | 21 +----- 2 files changed, 27 insertions(+), 66 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java index 814d52c04d8..7c13f567e11 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java @@ -21,6 +21,7 @@ import org.jetbrains.annotations.VisibleForTesting; import java.util.*; +import java.util.function.Function; import javax.annotation.ParametersAreNonnullByDefault; @@ -39,8 +40,6 @@ public abstract class WorkableTieredMachine extends TieredEnergyMachine implemen @Setter @SaveField public int activeRecipeType; - @Getter - public final Int2IntFunction tankScalingFunction; @Nullable @Getter @Setter @@ -65,62 +64,39 @@ public abstract class WorkableTieredMachine extends TieredEnergyMachine implemen protected boolean isMuffled; protected boolean previouslyMuffled = true; - public static class WorkableTieredMachineTraits { - - public RecipeLogic recipeLogic(WorkableTieredMachine machine) { - return new RecipeLogic(machine); - } - - public NotifiableItemStackHandler importItemHandler(WorkableTieredMachine machine) { - return new NotifiableItemStackHandler(machine, - machine.getRecipeType().getMaxInputs(ItemRecipeCapability.CAP), IO.IN); - } - - public NotifiableItemStackHandler exportItemHandler(WorkableTieredMachine machine) { - return new NotifiableItemStackHandler(machine, - machine.getRecipeType().getMaxOutputs(ItemRecipeCapability.CAP), IO.OUT); - } - - public NotifiableFluidTank importFluidTank(WorkableTieredMachine machine) { - return new NotifiableFluidTank(machine, machine.getRecipeType().getMaxInputs(FluidRecipeCapability.CAP), - machine.tankScalingFunction.applyAsInt(machine.getTier()), IO.IN); - } - - public NotifiableFluidTank exportFluidTank(WorkableTieredMachine machine) { - return new NotifiableFluidTank(machine, machine.getRecipeType().getMaxOutputs(FluidRecipeCapability.CAP), - machine.tankScalingFunction.applyAsInt(machine.getTier()), IO.OUT); - } - - public NotifiableComputationContainer importComputation(WorkableTieredMachine machine) { - return new NotifiableComputationContainer(machine, IO.IN, true); - } - - public NotifiableComputationContainer exportComputation(WorkableTieredMachine machine) { - return new NotifiableComputationContainer(machine, IO.OUT, false); - } - } - - public WorkableTieredMachine(BlockEntityCreationInfo info, int tier, Int2IntFunction tankScalingFunction, - WorkableTieredMachineTraits traits) { + public WorkableTieredMachine(BlockEntityCreationInfo info, int tier, Function recipeLogicSupplier, int importSlots, int exportSlots, + int fluidImportSlots, int fluidImportTankSize, int fluidExportSlots, int fluidExportTankSize) { super(info, tier); this.overclockTier = getMaxOverclockTier(); this.recipeTypes = getDefinition().getRecipeTypes(); this.activeRecipeType = 0; - this.tankScalingFunction = tankScalingFunction; this.capabilitiesProxy = new EnumMap<>(IO.class); this.capabilitiesFlat = new EnumMap<>(IO.class); this.traitSubscriptions = new ArrayList<>(); - this.recipeLogic = traits.recipeLogic(this); - this.importItems = traits.importItemHandler(this); - this.exportItems = traits.exportItemHandler(this); - this.importFluids = traits.importFluidTank(this); - this.exportFluids = traits.exportFluidTank(this); - this.importComputation = traits.importComputation(this); - this.exportComputation = traits.exportComputation(this); + this.recipeLogic = recipeLogicSupplier.apply(this); + this.importItems = new NotifiableItemStackHandler(this, importSlots, IO.IN); + this.exportItems = new NotifiableItemStackHandler(this, exportSlots, IO.OUT); + this.importFluids = new NotifiableFluidTank(this, fluidImportSlots, fluidImportTankSize, IO.IN); + this.exportFluids = new NotifiableFluidTank(this, fluidExportSlots, fluidExportTankSize, IO.OUT); + this.importComputation = new NotifiableComputationContainer(this, IO.IN, true); + this.exportComputation = new NotifiableComputationContainer(this, IO.OUT, false); } public WorkableTieredMachine(BlockEntityCreationInfo info, int tier, Int2IntFunction tankScalingFunction) { - this(info, tier, tankScalingFunction, new WorkableTieredMachineTraits()); + super(info, tier); + this.overclockTier = getMaxOverclockTier(); + this.recipeTypes = getDefinition().getRecipeTypes(); + this.activeRecipeType = 0; + this.capabilitiesProxy = new EnumMap<>(IO.class); + this.capabilitiesFlat = new EnumMap<>(IO.class); + this.traitSubscriptions = new ArrayList<>(); + this.recipeLogic = new RecipeLogic(this); + this.importItems = new NotifiableItemStackHandler(this, getRecipeType().getMaxInputs(ItemRecipeCapability.CAP), IO.IN); + this.exportItems = new NotifiableItemStackHandler(this, getRecipeType().getMaxOutputs(ItemRecipeCapability.CAP), IO.OUT); + this.importFluids = new NotifiableFluidTank(this, getRecipeType().getMaxInputs(FluidRecipeCapability.CAP), tankScalingFunction.applyAsInt(getTier()), IO.IN); + this.exportFluids = new NotifiableFluidTank(this, getRecipeType().getMaxOutputs(FluidRecipeCapability.CAP), tankScalingFunction.applyAsInt(getTier()), IO.OUT); + this.importComputation = new NotifiableComputationContainer(this, IO.IN, true); + this.exportComputation = new NotifiableComputationContainer(this, IO.OUT, false); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java index f594329cd0c..c9acc0583ca 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java @@ -94,24 +94,9 @@ public class MinerMachine extends WorkableTieredMachine protected ISubscription exportItemSubs, energySubs; public MinerMachine(BlockEntityCreationInfo info, int tier, int speed, int maximumRadius, int fortune) { - super(info, tier, GTMachineUtils.defaultTankSizeFunction, new WorkableTieredMachineTraits() { - - @Override - public NotifiableItemStackHandler importItemHandler(WorkableTieredMachine machine) { - return new NotifiableItemStackHandler(machine, 0, IO.IN); - } - - @Override - public NotifiableItemStackHandler exportItemHandler(WorkableTieredMachine machine) { - return new NotifiableItemStackHandler(machine, (tier + 1) * (tier + 1), IO.OUT); - } - - @Override - public RecipeLogic recipeLogic(WorkableTieredMachine machine) { - return new MinerLogic(machine, fortune, speed, maximumRadius); - } - }); - + super(info, tier, + (m) -> new MinerLogic(m, fortune, speed, maximumRadius), + 0, (tier + 1) * (tier + 1), 0, 0, 0, 0); this.energyPerTick = GTValues.V[tier - 1]; this.chargerInventory = createChargerItemHandler(); } From f12aa2fc8e266f8c6fee3efaf4a8efadb0de433b Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 26 Dec 2025 13:25:50 +1100 Subject: [PATCH 20/41] fix simple tiered machine ctor --- .../gtceu/api/machine/SimpleTieredMachine.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java index 752c4931bd4..3805be9758c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java @@ -106,9 +106,8 @@ public class SimpleTieredMachine extends WorkableTieredMachine @Nullable protected ISubscription exportItemSubs, exportFluidSubs, energySubs; - public SimpleTieredMachine(BlockEntityCreationInfo info, int tier, Int2IntFunction tankScalingFunction, - WorkableTieredMachineTraits traits) { - super(info, tier, tankScalingFunction, traits); + public SimpleTieredMachine(BlockEntityCreationInfo info, int tier, Int2IntFunction tankScalingFunction) { + super(info, tier, tankScalingFunction); this.outputFacingItems = hasFrontFacing() ? getFrontFacing().getOpposite() : Direction.UP; this.outputFacingFluids = outputFacingItems; @@ -126,10 +125,6 @@ public int getSlotLimit(int slot) { .setFilter(IntCircuitBehaviour::isIntegratedCircuit); } - public SimpleTieredMachine(BlockEntityCreationInfo info, int tier, Int2IntFunction tankScalingFunction) { - this(info, tier, tankScalingFunction, new WorkableTieredMachineTraits()); - } - ////////////////////////////////////// // ***** Initialization ******// ////////////////////////////////////// From d9b8c6a7beddb2575d006efb1c903c846150fef5 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sat, 27 Dec 2025 11:59:57 +1100 Subject: [PATCH 21/41] start docs --- docs/content/Modpacks/Changes/v8.0.0.md | 44 +++++++++++++++++++ .../gtceu/api/capability/ICoverable.java | 2 +- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 docs/content/Modpacks/Changes/v8.0.0.md diff --git a/docs/content/Modpacks/Changes/v8.0.0.md b/docs/content/Modpacks/Changes/v8.0.0.md new file mode 100644 index 00000000000..5f1e9c31d3b --- /dev/null +++ b/docs/content/Modpacks/Changes/v8.0.0.md @@ -0,0 +1,44 @@ +--- +title: "Version 8.0.0" +--- + + +# Updating from `7.4.0` to `8.0.0` + +## Machine Refactor + +Many aspects of the machine classes have been refactored and changed in order to streamline the machine system and remove legacy and unnecessary abstraction. + +### `MetaMachine` and `MetaMachineBlockEntity` merge + +- The `MetaMachineBlockEntity`(MMBE) class has been removed, and `MetaMachine`(MM) is now a BlockEntity. +- Most methods and properties of MMBE have been moved onto MM. + +References to MMBE can generally be replaced with references to MM: +``` +/////// OLD +if (level.getBlockEntity(getPos()) instanceof MetaMachineBlockEntity mmbe) { + MetaMachine machine = mmbe.getMetaMachine(); + ... +} + +////// NEW +if (level.getBlockEntity(getPos()) instanceof MetaMachine machine) { + ... +} +``` + +The `IMachineBlockEntity holder` argument in machine constructors has been replaced with `BlockEntityCreationInfo info`: +```java +////// OLD +public MetaMachine(IMachineBlockEntity holder); +////// NEW +public MetaMachine(BlockEntityCreationInfo info); +``` +A number of methods have been renamed across a number of different interfaces and classes to ensure consistency with default BlockEntity methods: +- `BlockPos getPos()` -> `BlockPos getBlockPos()` +- `BlockState getState()` -> `BlockState getBlockState()` +- `boolean isInvalid()` -> `boolean isRemoved()` +- `void markAsDirty()` -> `void markAsChanged()` + +### Machine constructor and trait initialisation changes diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/ICoverable.java b/src/main/java/com/gregtechceu/gtceu/api/capability/ICoverable.java index 7bb09879271..49da2760363 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/ICoverable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/ICoverable.java @@ -46,7 +46,7 @@ default BlockPos getBlockPos() { return getHolder().getBlockPos(); } - default BlockState getState() { + default BlockState getBlockState() { return getHolder().getBlockState(); } From 2d52993edb5f486640f344f0c75c4011cc149f70 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 28 Dec 2025 12:42:36 +1100 Subject: [PATCH 22/41] more docs --- docs/content/Modpacks/Changes/v8.0.0.md | 29 +++++++++++++++++++ .../api/machine/WorkableTieredMachine.java | 2 +- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/docs/content/Modpacks/Changes/v8.0.0.md b/docs/content/Modpacks/Changes/v8.0.0.md index 5f1e9c31d3b..711469be211 100644 --- a/docs/content/Modpacks/Changes/v8.0.0.md +++ b/docs/content/Modpacks/Changes/v8.0.0.md @@ -13,6 +13,9 @@ Many aspects of the machine classes have been refactored and changed in order to - The `MetaMachineBlockEntity`(MMBE) class has been removed, and `MetaMachine`(MM) is now a BlockEntity. - Most methods and properties of MMBE have been moved onto MM. +- The `IMachineBlockEntity` interface has been removed. Use `MetaMachineBlock` directly instead. +- Many methods common to all block entities have been moved to the `IGregtechBlockEntity` interface. +- Machine instance creation functions have signature `(BlockEntityCreationInfo) -> MetaMachine` instead of `(IMachineBlockEntity) -> MetaMachine` References to MMBE can generally be replaced with references to MM: ``` @@ -36,9 +39,35 @@ public MetaMachine(IMachineBlockEntity holder); public MetaMachine(BlockEntityCreationInfo info); ``` A number of methods have been renamed across a number of different interfaces and classes to ensure consistency with default BlockEntity methods: +- `BlockPos getPipePos()` -> `BlockPos getBlockPos()` +- `Level getPipeLevel()` -> `Level getLevel()` - `BlockPos getPos()` -> `BlockPos getBlockPos()` - `BlockState getState()` -> `BlockState getBlockState()` - `boolean isInvalid()` -> `boolean isRemoved()` - `void markAsDirty()` -> `void markAsChanged()` ### Machine constructor and trait initialisation changes + +The constructors for a large number of machines have changed in order to simply machine instance creation. Additionally, methods for trait creation have also been removed and now form part of the machine constructor. + +#### **All Machines** +- Replace the first constructor argument `IMachineBlockEntity holder` with `BlockEntityCreationInfo info` +#### `TieredEnergyMachine` +- Removed `createEnergyContainer` method +- Constructor now has an optional `Supplier` argument +#### `WorkableTieredMachine` +- Removed `createRecipeLogic`, `createImportItemHandler`, `createExportItemHandler`, `createImportFluidHandler`, `createExportFluidHandler` methods +- Added a new constructor: + - `BlockEntityCreationInfo info` + - `int tier` + - `Supplier recipeLogicSupplier` Recipe logic supplier, defaults to the standard `RecipeLogic` class. + - `int importSlots` Item import slots, defaults to the amount of slots in the machine's default recipe type. + - `int exportSlots` Same as above, but for item export slots. + - `int fluidImportSlots` As above, but for fluid import slots. + - `int fluidExportSlots` As above, but for fluid export slots. + - `int fluidImportTankSize` Capacity of the fluid import tank + - `int fluidExportTankSize` Capacity of the fluid export tank. +- The standard `WorkableTieredMachine(BlockEntityCreationInfo info, int tier, Int2IntFunction tankScalingFunction)` remains. +#### `WorkableMultiblockMachine`, `WorkableElectricMultiblockMachine` and `SteamWorkableMachine` +- Removed `createRecipeLogic` method +- Constructor now has an optional `Supplier` argument, defaults to the standard `RecipeLogic` class diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java index 7c13f567e11..2f1b29dc41b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java @@ -65,7 +65,7 @@ public abstract class WorkableTieredMachine extends TieredEnergyMachine implemen protected boolean previouslyMuffled = true; public WorkableTieredMachine(BlockEntityCreationInfo info, int tier, Function recipeLogicSupplier, int importSlots, int exportSlots, - int fluidImportSlots, int fluidImportTankSize, int fluidExportSlots, int fluidExportTankSize) { + int fluidImportSlots, int fluidExportSlots, int fluidImportTankSize, int fluidExportTankSize) { super(info, tier); this.overclockTier = getMaxOverclockTier(); this.recipeTypes = getDefinition().getRecipeTypes(); From 314c5f97a29a348854299a356edc1675d3b4d4cb Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 28 Dec 2025 12:45:01 +1100 Subject: [PATCH 23/41] a --- docs/content/Modpacks/Changes/v8.0.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/Modpacks/Changes/v8.0.0.md b/docs/content/Modpacks/Changes/v8.0.0.md index 711469be211..1521694a131 100644 --- a/docs/content/Modpacks/Changes/v8.0.0.md +++ b/docs/content/Modpacks/Changes/v8.0.0.md @@ -18,7 +18,7 @@ Many aspects of the machine classes have been refactored and changed in order to - Machine instance creation functions have signature `(BlockEntityCreationInfo) -> MetaMachine` instead of `(IMachineBlockEntity) -> MetaMachine` References to MMBE can generally be replaced with references to MM: -``` +```java /////// OLD if (level.getBlockEntity(getPos()) instanceof MetaMachineBlockEntity mmbe) { MetaMachine machine = mmbe.getMetaMachine(); From 12095e8f335e8ed226be026e9578445b13ea7cba Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 28 Dec 2025 12:50:49 +1100 Subject: [PATCH 24/41] add tank scaling function back --- docs/content/Modpacks/Changes/v8.0.0.md | 4 +--- .../gtceu/api/machine/WorkableTieredMachine.java | 6 +++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/content/Modpacks/Changes/v8.0.0.md b/docs/content/Modpacks/Changes/v8.0.0.md index 1521694a131..e9aaf5dcade 100644 --- a/docs/content/Modpacks/Changes/v8.0.0.md +++ b/docs/content/Modpacks/Changes/v8.0.0.md @@ -65,9 +65,7 @@ The constructors for a large number of machines have changed in order to simply - `int exportSlots` Same as above, but for item export slots. - `int fluidImportSlots` As above, but for fluid import slots. - `int fluidExportSlots` As above, but for fluid export slots. - - `int fluidImportTankSize` Capacity of the fluid import tank - - `int fluidExportTankSize` Capacity of the fluid export tank. -- The standard `WorkableTieredMachine(BlockEntityCreationInfo info, int tier, Int2IntFunction tankScalingFunction)` remains. + - `Int2IntFunction tankScalingFunction` Fluid tank capacity scaling function. #### `WorkableMultiblockMachine`, `WorkableElectricMultiblockMachine` and `SteamWorkableMachine` - Removed `createRecipeLogic` method - Constructor now has an optional `Supplier` argument, defaults to the standard `RecipeLogic` class diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java index 2f1b29dc41b..faf6ff27eb2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java @@ -65,7 +65,7 @@ public abstract class WorkableTieredMachine extends TieredEnergyMachine implemen protected boolean previouslyMuffled = true; public WorkableTieredMachine(BlockEntityCreationInfo info, int tier, Function recipeLogicSupplier, int importSlots, int exportSlots, - int fluidImportSlots, int fluidExportSlots, int fluidImportTankSize, int fluidExportTankSize) { + int fluidImportSlots, int fluidExportSlots, Int2IntFunction tankScalingFunction) { super(info, tier); this.overclockTier = getMaxOverclockTier(); this.recipeTypes = getDefinition().getRecipeTypes(); @@ -76,8 +76,8 @@ public WorkableTieredMachine(BlockEntityCreationInfo info, int tier, Function Date: Sun, 28 Dec 2025 12:52:02 +1100 Subject: [PATCH 25/41] fix minermachine --- .../gregtechceu/gtceu/common/machine/electric/MinerMachine.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java index c9acc0583ca..5512bf00dd2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java @@ -96,7 +96,7 @@ public class MinerMachine extends WorkableTieredMachine public MinerMachine(BlockEntityCreationInfo info, int tier, int speed, int maximumRadius, int fortune) { super(info, tier, (m) -> new MinerLogic(m, fortune, speed, maximumRadius), - 0, (tier + 1) * (tier + 1), 0, 0, 0, 0); + 0, (tier + 1) * (tier + 1), 0, 0, ($) -> 0); this.energyPerTick = GTValues.V[tier - 1]; this.chargerInventory = createChargerItemHandler(); } From aff5ef7c246f2a254540f2fb60be058bebe398ed Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 28 Dec 2025 15:05:39 +1300 Subject: [PATCH 26/41] move some static capability stuff --- .../api/capability/GTCapabilityHelper.java | 145 ++++++++++++++++++ .../gtceu/api/machine/MetaMachine.java | 138 +---------------- 2 files changed, 146 insertions(+), 137 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java b/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java index 49ba637ac4d..dbd585e05aa 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java @@ -1,9 +1,15 @@ package com.gregtechceu.gtceu.api.capability; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.forge.GTCapability; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; +import com.gregtechceu.gtceu.api.machine.trait.MachineTrait; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.misc.EnergyContainerList; +import com.gregtechceu.gtceu.api.misc.EnergyInfoProviderList; +import com.gregtechceu.gtceu.api.misc.LaserContainerList; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.entity.Entity; @@ -11,6 +17,7 @@ import net.minecraft.world.level.Level; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ForgeCapabilities; +import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.energy.IEnergyStorage; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.IItemHandler; @@ -18,6 +25,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static com.gregtechceu.gtceu.api.machine.MetaMachine.getCapabilitiesFromTraits; + public class GTCapabilityHelper { @Nullable @@ -138,4 +147,140 @@ private static T getBlockEntityCapability(Capability capability, Level le public static IMedicalConditionTracker getMedicalConditionTracker(@NotNull Entity entity) { return entity.getCapability(GTCapability.CAPABILITY_MEDICAL_CONDITION_TRACKER, null).resolve().orElse(null); } + + public static @NotNull LazyOptional getMetaMachineCapability(MetaMachine machine, @NotNull Capability cap, + @Nullable Direction side) { + if (cap == GTCapability.CAPABILITY_COVERABLE) { + return GTCapability.CAPABILITY_COVERABLE.orEmpty(cap, LazyOptional.of(machine::getCoverContainer)); + } else if (cap == GTCapability.CAPABILITY_TOOLABLE) { + return GTCapability.CAPABILITY_TOOLABLE.orEmpty(cap, LazyOptional.of(() -> machine)); + } else if (cap == GTCapability.CAPABILITY_WORKABLE) { + if (machine instanceof IWorkable workable) { + return GTCapability.CAPABILITY_WORKABLE.orEmpty(cap, LazyOptional.of(() -> workable)); + } + for (MachineTrait trait : machine.getTraits()) { + if (trait instanceof IWorkable workable) { + return GTCapability.CAPABILITY_WORKABLE.orEmpty(cap, LazyOptional.of(() -> workable)); + } + } + } else if (cap == GTCapability.CAPABILITY_CONTROLLABLE) { + if (machine instanceof IControllable controllable) { + return GTCapability.CAPABILITY_CONTROLLABLE.orEmpty(cap, LazyOptional.of(() -> controllable)); + } + for (MachineTrait trait : machine.getTraits()) { + if (trait instanceof IControllable controllable) { + return GTCapability.CAPABILITY_CONTROLLABLE.orEmpty(cap, LazyOptional.of(() -> controllable)); + } + } + } else if (cap == GTCapability.CAPABILITY_RECIPE_LOGIC) { + for (MachineTrait trait : machine.getTraits()) { + if (trait instanceof RecipeLogic recipeLogic) { + return GTCapability.CAPABILITY_RECIPE_LOGIC.orEmpty(cap, LazyOptional.of(() -> recipeLogic)); + } + } + } else if (cap == GTCapability.CAPABILITY_ENERGY_CONTAINER) { + if (machine instanceof IEnergyContainer energyContainer) { + return GTCapability.CAPABILITY_ENERGY_CONTAINER.orEmpty(cap, LazyOptional.of(() -> energyContainer)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyContainer.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_ENERGY_CONTAINER.orEmpty(cap, + LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new EnergyContainerList(list))); + } + } else if (cap == GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER) { + if (machine instanceof IEnergyInfoProvider energyInfoProvider) { + return GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER.orEmpty(cap, + LazyOptional.of(() -> energyInfoProvider)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyInfoProvider.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER.orEmpty(cap, + LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new EnergyInfoProviderList(list))); + } + } else if (cap == GTCapability.CAPABILITY_CLEANROOM_RECEIVER) { + if (machine instanceof ICleanroomReceiver cleanroomReceiver) { + return GTCapability.CAPABILITY_CLEANROOM_RECEIVER.orEmpty(cap, + LazyOptional.of(() -> cleanroomReceiver)); + } + } else if (cap == GTCapability.CAPABILITY_MAINTENANCE_MACHINE) { + if (machine instanceof IMaintenanceMachine maintenanceMachine) { + return GTCapability.CAPABILITY_MAINTENANCE_MACHINE.orEmpty(cap, + LazyOptional.of(() -> maintenanceMachine)); + } + } else if (cap == GTCapability.CAPABILITY_TURBINE_MACHINE) { + if (machine instanceof ITurbineMachine turbineMachine) { + return GTCapability.CAPABILITY_TURBINE_MACHINE.orEmpty(cap, + LazyOptional.of(() -> turbineMachine)); + } + } else if (cap == ForgeCapabilities.ITEM_HANDLER) { + var handler = machine.getItemHandlerCap(side, true); + if (handler != null) { + return ForgeCapabilities.ITEM_HANDLER.orEmpty(cap, LazyOptional.of(() -> handler)); + } + } else if (cap == ForgeCapabilities.FLUID_HANDLER) { + var handler = machine.getFluidHandlerCap(side, true); + if (handler != null) { + return ForgeCapabilities.FLUID_HANDLER.orEmpty(cap, LazyOptional.of(() -> handler)); + } + } else if (cap == ForgeCapabilities.ENERGY) { + if (machine instanceof IEnergyStorage energyStorage) { + return ForgeCapabilities.ENERGY.orEmpty(cap, LazyOptional.of(() -> energyStorage)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyStorage.class); + if (!list.isEmpty()) { + // TODO wrap list in the future + return ForgeCapabilities.ENERGY.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } else if (cap == GTCapability.CAPABILITY_LASER) { + if (machine instanceof ILaserContainer energyContainer) { + return GTCapability.CAPABILITY_LASER.orEmpty(cap, LazyOptional.of(() -> energyContainer)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, ILaserContainer.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_LASER.orEmpty(cap, + LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new LaserContainerList(list))); + } + } else if (cap == GTCapability.CAPABILITY_COMPUTATION_PROVIDER) { + if (machine instanceof IOpticalComputationProvider computationProvider) { + return GTCapability.CAPABILITY_COMPUTATION_PROVIDER.orEmpty(cap, + LazyOptional.of(() -> computationProvider)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IOpticalComputationProvider.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_COMPUTATION_PROVIDER.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } else if (cap == GTCapability.CAPABILITY_DATA_ACCESS) { + if (machine instanceof IDataAccessHatch computationProvider) { + return GTCapability.CAPABILITY_DATA_ACCESS.orEmpty(cap, LazyOptional.of(() -> computationProvider)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IDataAccessHatch.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_DATA_ACCESS.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } else if (cap == GTCapability.CAPABILITY_MONITOR_COMPONENT) { + if (machine instanceof IMonitorComponent monitorComponent) { + return GTCapability.CAPABILITY_MONITOR_COMPONENT.orEmpty(cap, LazyOptional.of(() -> monitorComponent)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IMonitorComponent.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_MONITOR_COMPONENT.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } else if (cap == GTCapability.CAPABILITY_CENTRAL_MONITOR) { + if (machine instanceof ICentralMonitor centralMonitor) { + return GTCapability.CAPABILITY_CENTRAL_MONITOR.orEmpty(cap, LazyOptional.of(() -> centralMonitor)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, ICentralMonitor.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_CENTRAL_MONITOR.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } + if (GTCEu.Mods.isAE2Loaded()) { + LazyOptional opt = MetaMachine.AE2CallWrapper.getGridNodeHostCapability(cap, machine, side); + if (opt.isPresent()) { + // noinspection unchecked + return (LazyOptional) opt; + } + } + return LazyOptional.empty(); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index 9cc9e87aa90..6e88477bad6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -863,146 +863,10 @@ public IFluidHandlerModifiable getFluidHandlerCap(@Nullable Direction side, bool @Override public @NotNull LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { - var result = getCapability(this, cap, side); + var result = GTCapabilityHelper.getMetaMachineCapability(this, cap, side); return result.isPresent() ? result : super.getCapability(cap, side); } - public static @NotNull LazyOptional getCapability(MetaMachine machine, @NotNull Capability cap, - @Nullable Direction side) { - if (cap == GTCapability.CAPABILITY_COVERABLE) { - return GTCapability.CAPABILITY_COVERABLE.orEmpty(cap, LazyOptional.of(machine::getCoverContainer)); - } else if (cap == GTCapability.CAPABILITY_TOOLABLE) { - return GTCapability.CAPABILITY_TOOLABLE.orEmpty(cap, LazyOptional.of(() -> machine)); - } else if (cap == GTCapability.CAPABILITY_WORKABLE) { - if (machine instanceof IWorkable workable) { - return GTCapability.CAPABILITY_WORKABLE.orEmpty(cap, LazyOptional.of(() -> workable)); - } - for (MachineTrait trait : machine.getTraits()) { - if (trait instanceof IWorkable workable) { - return GTCapability.CAPABILITY_WORKABLE.orEmpty(cap, LazyOptional.of(() -> workable)); - } - } - } else if (cap == GTCapability.CAPABILITY_CONTROLLABLE) { - if (machine instanceof IControllable controllable) { - return GTCapability.CAPABILITY_CONTROLLABLE.orEmpty(cap, LazyOptional.of(() -> controllable)); - } - for (MachineTrait trait : machine.getTraits()) { - if (trait instanceof IControllable controllable) { - return GTCapability.CAPABILITY_CONTROLLABLE.orEmpty(cap, LazyOptional.of(() -> controllable)); - } - } - } else if (cap == GTCapability.CAPABILITY_RECIPE_LOGIC) { - for (MachineTrait trait : machine.getTraits()) { - if (trait instanceof RecipeLogic recipeLogic) { - return GTCapability.CAPABILITY_RECIPE_LOGIC.orEmpty(cap, LazyOptional.of(() -> recipeLogic)); - } - } - } else if (cap == GTCapability.CAPABILITY_ENERGY_CONTAINER) { - if (machine instanceof IEnergyContainer energyContainer) { - return GTCapability.CAPABILITY_ENERGY_CONTAINER.orEmpty(cap, LazyOptional.of(() -> energyContainer)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyContainer.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_ENERGY_CONTAINER.orEmpty(cap, - LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new EnergyContainerList(list))); - } - } else if (cap == GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER) { - if (machine instanceof IEnergyInfoProvider energyInfoProvider) { - return GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER.orEmpty(cap, - LazyOptional.of(() -> energyInfoProvider)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyInfoProvider.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER.orEmpty(cap, - LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new EnergyInfoProviderList(list))); - } - } else if (cap == GTCapability.CAPABILITY_CLEANROOM_RECEIVER) { - if (machine instanceof ICleanroomReceiver cleanroomReceiver) { - return GTCapability.CAPABILITY_CLEANROOM_RECEIVER.orEmpty(cap, - LazyOptional.of(() -> cleanroomReceiver)); - } - } else if (cap == GTCapability.CAPABILITY_MAINTENANCE_MACHINE) { - if (machine instanceof IMaintenanceMachine maintenanceMachine) { - return GTCapability.CAPABILITY_MAINTENANCE_MACHINE.orEmpty(cap, - LazyOptional.of(() -> maintenanceMachine)); - } - } else if (cap == GTCapability.CAPABILITY_TURBINE_MACHINE) { - if (machine instanceof ITurbineMachine turbineMachine) { - return GTCapability.CAPABILITY_TURBINE_MACHINE.orEmpty(cap, - LazyOptional.of(() -> turbineMachine)); - } - } else if (cap == ForgeCapabilities.ITEM_HANDLER) { - var handler = machine.getItemHandlerCap(side, true); - if (handler != null) { - return ForgeCapabilities.ITEM_HANDLER.orEmpty(cap, LazyOptional.of(() -> handler)); - } - } else if (cap == ForgeCapabilities.FLUID_HANDLER) { - var handler = machine.getFluidHandlerCap(side, true); - if (handler != null) { - return ForgeCapabilities.FLUID_HANDLER.orEmpty(cap, LazyOptional.of(() -> handler)); - } - } else if (cap == ForgeCapabilities.ENERGY) { - if (machine instanceof IEnergyStorage energyStorage) { - return ForgeCapabilities.ENERGY.orEmpty(cap, LazyOptional.of(() -> energyStorage)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyStorage.class); - if (!list.isEmpty()) { - // TODO wrap list in the future - return ForgeCapabilities.ENERGY.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } - } else if (cap == GTCapability.CAPABILITY_LASER) { - if (machine instanceof ILaserContainer energyContainer) { - return GTCapability.CAPABILITY_LASER.orEmpty(cap, LazyOptional.of(() -> energyContainer)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, ILaserContainer.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_LASER.orEmpty(cap, - LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new LaserContainerList(list))); - } - } else if (cap == GTCapability.CAPABILITY_COMPUTATION_PROVIDER) { - if (machine instanceof IOpticalComputationProvider computationProvider) { - return GTCapability.CAPABILITY_COMPUTATION_PROVIDER.orEmpty(cap, - LazyOptional.of(() -> computationProvider)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IOpticalComputationProvider.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_COMPUTATION_PROVIDER.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } - } else if (cap == GTCapability.CAPABILITY_DATA_ACCESS) { - if (machine instanceof IDataAccessHatch computationProvider) { - return GTCapability.CAPABILITY_DATA_ACCESS.orEmpty(cap, LazyOptional.of(() -> computationProvider)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IDataAccessHatch.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_DATA_ACCESS.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } - } else if (cap == GTCapability.CAPABILITY_MONITOR_COMPONENT) { - if (machine instanceof IMonitorComponent monitorComponent) { - return GTCapability.CAPABILITY_MONITOR_COMPONENT.orEmpty(cap, LazyOptional.of(() -> monitorComponent)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IMonitorComponent.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_MONITOR_COMPONENT.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } - } else if (cap == GTCapability.CAPABILITY_CENTRAL_MONITOR) { - if (machine instanceof ICentralMonitor centralMonitor) { - return GTCapability.CAPABILITY_CENTRAL_MONITOR.orEmpty(cap, LazyOptional.of(() -> centralMonitor)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, ICentralMonitor.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_CENTRAL_MONITOR.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } - } - if (GTCEu.Mods.isAE2Loaded()) { - LazyOptional opt = AE2CallWrapper.getGridNodeHostCapability(cap, machine, side); - if (opt.isPresent()) { - // noinspection unchecked - return (LazyOptional) opt; - } - } - return LazyOptional.empty(); - } - public static List getCapabilitiesFromTraits(List traits, @Nullable Direction accessSide, Class capability) { if (traits.isEmpty()) return Collections.emptyList(); From 4c561b4c74a6ef6d668433203348e3b3e5f9c6dd Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 28 Dec 2025 16:51:29 +1300 Subject: [PATCH 27/41] io both --- .../gregtechceu/gtceu/api/machine/WorkableTieredMachine.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java index faf6ff27eb2..560bcb0c89c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java @@ -74,9 +74,9 @@ public WorkableTieredMachine(BlockEntityCreationInfo info, int tier, Function(IO.class); this.traitSubscriptions = new ArrayList<>(); this.recipeLogic = recipeLogicSupplier.apply(this); - this.importItems = new NotifiableItemStackHandler(this, importSlots, IO.IN); + this.importItems = new NotifiableItemStackHandler(this, importSlots, IO.IN, IO.BOTH); this.exportItems = new NotifiableItemStackHandler(this, exportSlots, IO.OUT); - this.importFluids = new NotifiableFluidTank(this, fluidImportSlots, tankScalingFunction.applyAsInt(getTier()), IO.IN); + this.importFluids = new NotifiableFluidTank(this, fluidImportSlots, tankScalingFunction.applyAsInt(getTier()), IO.IN, IO.BOTH); this.exportFluids = new NotifiableFluidTank(this, fluidExportSlots, tankScalingFunction.applyAsInt(getTier()), IO.OUT); this.importComputation = new NotifiableComputationContainer(this, IO.IN, true); this.exportComputation = new NotifiableComputationContainer(this, IO.OUT, false); From 8a92db4f1633457c7aa864cc42e54807693b7f10 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 28 Dec 2025 21:36:49 +1300 Subject: [PATCH 28/41] small changes based on PR review --- .../gtceu/common/machine/electric/TransformerMachine.java | 8 ++++---- .../machine/multiblock/electric/AssemblyLineMachine.java | 2 +- .../multiblock/electric/MultiblockTankMachine.java | 2 +- .../common/machine/multiblock/part/DiodePartMachine.java | 1 - .../gtceu/syncsystem/ManagedSyncBlockEntity.java | 1 - 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java index 73efa8ec84e..c6965a2844a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java @@ -41,20 +41,20 @@ public class TransformerMachine extends TieredEnergyMachine implements IControll @Getter private final int baseAmp; - public TransformerMachine(BlockEntityCreationInfo info, int tier, int amp) { + public TransformerMachine(BlockEntityCreationInfo info, int tier, int amps) { super(info, tier, (TieredEnergyMachine machine) -> { NotifiableEnergyContainer energyContainer; long tierVoltage = GTValues.V[machine.getTier()]; - energyContainer = new NotifiableEnergyContainer(machine, tierVoltage * 8L, tierVoltage * 4, amp, + energyContainer = new NotifiableEnergyContainer(machine, tierVoltage * 8L, tierVoltage * 4, amps, tierVoltage, - 4L * amp); + 4L * amps); return energyContainer; }); energyContainer.setSideInputCondition(s -> s == getFrontFacing() && isWorkingEnabled()); energyContainer.setSideOutputCondition(s -> s != getFrontFacing() && isWorkingEnabled()); this.isWorkingEnabled = true; - this.baseAmp = amp; + this.baseAmp = amps; } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java index 17f3f0798b4..257a77b6ddb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java @@ -256,7 +256,7 @@ private ActionResult consumeAll(@NotNull GTRecipe recipe, boolean isTick, RecipeHelper.handleRecipeIO(this, copyWithoutItemsFluids, IO.IN, chanceCaches); } - static class AsslineRecipeLogic extends RecipeLogic { + private static class AsslineRecipeLogic extends RecipeLogic { private final AssemblyLineMachine machine; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java index a4b98438b8d..ac429798ab4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java @@ -44,7 +44,7 @@ public class MultiblockTankMachine extends MultiblockControllerMachine implement public MultiblockTankMachine(BlockEntityCreationInfo info, int capacity, @Nullable PropertyFluidFilter filter) { super(info); - tank = new NotifiableFluidTank(this, 1, capacity, IO.BOTH); + this.tank = new NotifiableFluidTank(this, 1, capacity, IO.BOTH); if (filter != null) tank.setFilter(filter); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java index 53762598325..3b3beef6c15 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java @@ -91,7 +91,6 @@ private void cycleAmpMode() { amps = amps == getMaxAmperage() ? 1 : amps << 1; if (!isRemote()) { syncDataHolder.markClientSyncFieldDirty("amps"); - reinitializeEnergyContainer(); notifyBlockUpdate(); } diff --git a/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java index 2e5c5e883bf..c8a6193f15f 100644 --- a/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java @@ -46,7 +46,6 @@ protected final void saveAdditional(CompoundTag tag) { @Override public final void load(CompoundTag tag) { super.load(tag); - if (tag.contains("machine")) tag.merge(tag.getCompound("machine")); getSyncDataHolder().deserializeNBT(tag, (getLevel() == null ? GTCEu.isClientThread() : getLevel().isClientSide)); } From 7741a7b2324fe940f0fcadddfb6e9b0f964010c9 Mon Sep 17 00:00:00 2001 From: Gustavo <77560533+gustovafing@users.noreply.github.com> Date: Sun, 28 Dec 2025 21:32:09 +1300 Subject: [PATCH 29/41] Update src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java Co-authored-by: TechLord22 <37029404+TechLord22@users.noreply.github.com> --- .../java/com/gregtechceu/gtceu/api/machine/MetaMachine.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index 6e88477bad6..68b68084dd6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -542,7 +542,7 @@ public MachineDefinition getDefinition() { return machineBlock.getDefinition(); } else { throw new IllegalStateException( - "MetaMachine created for an un available block: " + getBlockState().getBlock()); + "MetaMachine created for an incompatible block: " + getBlockState().getBlock()); } } From d2b96e6f34823eea9180bf11506c1ac4d51ef462 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 28 Dec 2025 21:55:33 +1300 Subject: [PATCH 30/41] move cap stuff back to metamachine --- .../api/capability/GTCapabilityHelper.java | 146 ------------------ .../gtceu/api/machine/MetaMachine.java | 146 +++++++++++++++++- .../api/machine/TieredEnergyMachine.java | 2 +- .../syncsystem/ManagedSyncBlockEntity.java | 5 + 4 files changed, 147 insertions(+), 152 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java b/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java index dbd585e05aa..2866d409a5f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java @@ -1,15 +1,8 @@ package com.gregtechceu.gtceu.api.capability; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.forge.GTCapability; -import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; -import com.gregtechceu.gtceu.api.machine.trait.MachineTrait; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; - -import com.gregtechceu.gtceu.api.misc.EnergyContainerList; -import com.gregtechceu.gtceu.api.misc.EnergyInfoProviderList; -import com.gregtechceu.gtceu.api.misc.LaserContainerList; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.entity.Entity; @@ -17,7 +10,6 @@ import net.minecraft.world.level.Level; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.energy.IEnergyStorage; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.IItemHandler; @@ -25,8 +17,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import static com.gregtechceu.gtceu.api.machine.MetaMachine.getCapabilitiesFromTraits; - public class GTCapabilityHelper { @Nullable @@ -147,140 +137,4 @@ private static T getBlockEntityCapability(Capability capability, Level le public static IMedicalConditionTracker getMedicalConditionTracker(@NotNull Entity entity) { return entity.getCapability(GTCapability.CAPABILITY_MEDICAL_CONDITION_TRACKER, null).resolve().orElse(null); } - - public static @NotNull LazyOptional getMetaMachineCapability(MetaMachine machine, @NotNull Capability cap, - @Nullable Direction side) { - if (cap == GTCapability.CAPABILITY_COVERABLE) { - return GTCapability.CAPABILITY_COVERABLE.orEmpty(cap, LazyOptional.of(machine::getCoverContainer)); - } else if (cap == GTCapability.CAPABILITY_TOOLABLE) { - return GTCapability.CAPABILITY_TOOLABLE.orEmpty(cap, LazyOptional.of(() -> machine)); - } else if (cap == GTCapability.CAPABILITY_WORKABLE) { - if (machine instanceof IWorkable workable) { - return GTCapability.CAPABILITY_WORKABLE.orEmpty(cap, LazyOptional.of(() -> workable)); - } - for (MachineTrait trait : machine.getTraits()) { - if (trait instanceof IWorkable workable) { - return GTCapability.CAPABILITY_WORKABLE.orEmpty(cap, LazyOptional.of(() -> workable)); - } - } - } else if (cap == GTCapability.CAPABILITY_CONTROLLABLE) { - if (machine instanceof IControllable controllable) { - return GTCapability.CAPABILITY_CONTROLLABLE.orEmpty(cap, LazyOptional.of(() -> controllable)); - } - for (MachineTrait trait : machine.getTraits()) { - if (trait instanceof IControllable controllable) { - return GTCapability.CAPABILITY_CONTROLLABLE.orEmpty(cap, LazyOptional.of(() -> controllable)); - } - } - } else if (cap == GTCapability.CAPABILITY_RECIPE_LOGIC) { - for (MachineTrait trait : machine.getTraits()) { - if (trait instanceof RecipeLogic recipeLogic) { - return GTCapability.CAPABILITY_RECIPE_LOGIC.orEmpty(cap, LazyOptional.of(() -> recipeLogic)); - } - } - } else if (cap == GTCapability.CAPABILITY_ENERGY_CONTAINER) { - if (machine instanceof IEnergyContainer energyContainer) { - return GTCapability.CAPABILITY_ENERGY_CONTAINER.orEmpty(cap, LazyOptional.of(() -> energyContainer)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyContainer.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_ENERGY_CONTAINER.orEmpty(cap, - LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new EnergyContainerList(list))); - } - } else if (cap == GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER) { - if (machine instanceof IEnergyInfoProvider energyInfoProvider) { - return GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER.orEmpty(cap, - LazyOptional.of(() -> energyInfoProvider)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyInfoProvider.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER.orEmpty(cap, - LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new EnergyInfoProviderList(list))); - } - } else if (cap == GTCapability.CAPABILITY_CLEANROOM_RECEIVER) { - if (machine instanceof ICleanroomReceiver cleanroomReceiver) { - return GTCapability.CAPABILITY_CLEANROOM_RECEIVER.orEmpty(cap, - LazyOptional.of(() -> cleanroomReceiver)); - } - } else if (cap == GTCapability.CAPABILITY_MAINTENANCE_MACHINE) { - if (machine instanceof IMaintenanceMachine maintenanceMachine) { - return GTCapability.CAPABILITY_MAINTENANCE_MACHINE.orEmpty(cap, - LazyOptional.of(() -> maintenanceMachine)); - } - } else if (cap == GTCapability.CAPABILITY_TURBINE_MACHINE) { - if (machine instanceof ITurbineMachine turbineMachine) { - return GTCapability.CAPABILITY_TURBINE_MACHINE.orEmpty(cap, - LazyOptional.of(() -> turbineMachine)); - } - } else if (cap == ForgeCapabilities.ITEM_HANDLER) { - var handler = machine.getItemHandlerCap(side, true); - if (handler != null) { - return ForgeCapabilities.ITEM_HANDLER.orEmpty(cap, LazyOptional.of(() -> handler)); - } - } else if (cap == ForgeCapabilities.FLUID_HANDLER) { - var handler = machine.getFluidHandlerCap(side, true); - if (handler != null) { - return ForgeCapabilities.FLUID_HANDLER.orEmpty(cap, LazyOptional.of(() -> handler)); - } - } else if (cap == ForgeCapabilities.ENERGY) { - if (machine instanceof IEnergyStorage energyStorage) { - return ForgeCapabilities.ENERGY.orEmpty(cap, LazyOptional.of(() -> energyStorage)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyStorage.class); - if (!list.isEmpty()) { - // TODO wrap list in the future - return ForgeCapabilities.ENERGY.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } - } else if (cap == GTCapability.CAPABILITY_LASER) { - if (machine instanceof ILaserContainer energyContainer) { - return GTCapability.CAPABILITY_LASER.orEmpty(cap, LazyOptional.of(() -> energyContainer)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, ILaserContainer.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_LASER.orEmpty(cap, - LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new LaserContainerList(list))); - } - } else if (cap == GTCapability.CAPABILITY_COMPUTATION_PROVIDER) { - if (machine instanceof IOpticalComputationProvider computationProvider) { - return GTCapability.CAPABILITY_COMPUTATION_PROVIDER.orEmpty(cap, - LazyOptional.of(() -> computationProvider)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IOpticalComputationProvider.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_COMPUTATION_PROVIDER.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } - } else if (cap == GTCapability.CAPABILITY_DATA_ACCESS) { - if (machine instanceof IDataAccessHatch computationProvider) { - return GTCapability.CAPABILITY_DATA_ACCESS.orEmpty(cap, LazyOptional.of(() -> computationProvider)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IDataAccessHatch.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_DATA_ACCESS.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } - } else if (cap == GTCapability.CAPABILITY_MONITOR_COMPONENT) { - if (machine instanceof IMonitorComponent monitorComponent) { - return GTCapability.CAPABILITY_MONITOR_COMPONENT.orEmpty(cap, LazyOptional.of(() -> monitorComponent)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IMonitorComponent.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_MONITOR_COMPONENT.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } - } else if (cap == GTCapability.CAPABILITY_CENTRAL_MONITOR) { - if (machine instanceof ICentralMonitor centralMonitor) { - return GTCapability.CAPABILITY_CENTRAL_MONITOR.orEmpty(cap, LazyOptional.of(() -> centralMonitor)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, ICentralMonitor.class); - if (!list.isEmpty()) { - return GTCapability.CAPABILITY_CENTRAL_MONITOR.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } - } - if (GTCEu.Mods.isAE2Loaded()) { - LazyOptional opt = MetaMachine.AE2CallWrapper.getGridNodeHostCapability(cap, machine, side); - if (opt.isPresent()) { - // noinspection unchecked - return (LazyOptional) opt; - } - } - return LazyOptional.empty(); - } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index 68b68084dd6..d1aea7645ad 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -143,7 +143,7 @@ public class MetaMachine extends ManagedSyncBlockEntity implements IGregtechBloc private final long offset = GTValues.RNG.nextInt(20); public MetaMachine(BlockEntityCreationInfo info) { - super(info.type(), info.pos(), info.state()); + super(info); this.renderState = getDefinition().defaultRenderState(); this.coverContainer = new MachineCoverContainer(this); this.traits = new ArrayList<>(); @@ -619,7 +619,7 @@ public Direction getUpwardsFacing() { Direction.NORTH; } - public void setUpwardsFacing(Direction upwardsFacing) { + public void setUpwardsFacing(@NotNull Direction upwardsFacing) { if (!getDefinition().isAllowExtendedFacing()) { return; } @@ -689,7 +689,7 @@ public int getOutputSignal(@Nullable Direction side) { } @Override - public boolean canConnectRedstone(Direction side) { + public boolean canConnectRedstone(@NotNull Direction side) { // For some reason, Minecraft requests the output signal from the opposite side... CoverBehavior cover = getCoverContainer().getCoverAtSide(side); if (cover == null) return false; @@ -863,11 +863,11 @@ public IFluidHandlerModifiable getFluidHandlerCap(@Nullable Direction side, bool @Override public @NotNull LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { - var result = GTCapabilityHelper.getMetaMachineCapability(this, cap, side); + var result = getCapability(this, cap, side); return result.isPresent() ? result : super.getCapability(cap, side); } - public static List getCapabilitiesFromTraits(List traits, @Nullable Direction accessSide, + private static List getCapabilitiesFromTraits(List traits, @Nullable Direction accessSide, Class capability) { if (traits.isEmpty()) return Collections.emptyList(); List list = new ArrayList<>(); @@ -879,6 +879,142 @@ public static List getCapabilitiesFromTraits(List traits, @ return list; } + public static @NotNull LazyOptional getCapability(MetaMachine machine, @NotNull Capability cap, + @Nullable Direction side) { + if (cap == GTCapability.CAPABILITY_COVERABLE) { + return GTCapability.CAPABILITY_COVERABLE.orEmpty(cap, LazyOptional.of(machine::getCoverContainer)); + } else if (cap == GTCapability.CAPABILITY_TOOLABLE) { + return GTCapability.CAPABILITY_TOOLABLE.orEmpty(cap, LazyOptional.of(() -> machine)); + } else if (cap == GTCapability.CAPABILITY_WORKABLE) { + if (machine instanceof IWorkable workable) { + return GTCapability.CAPABILITY_WORKABLE.orEmpty(cap, LazyOptional.of(() -> workable)); + } + for (MachineTrait trait : machine.getTraits()) { + if (trait instanceof IWorkable workable) { + return GTCapability.CAPABILITY_WORKABLE.orEmpty(cap, LazyOptional.of(() -> workable)); + } + } + } else if (cap == GTCapability.CAPABILITY_CONTROLLABLE) { + if (machine instanceof IControllable controllable) { + return GTCapability.CAPABILITY_CONTROLLABLE.orEmpty(cap, LazyOptional.of(() -> controllable)); + } + for (MachineTrait trait : machine.getTraits()) { + if (trait instanceof IControllable controllable) { + return GTCapability.CAPABILITY_CONTROLLABLE.orEmpty(cap, LazyOptional.of(() -> controllable)); + } + } + } else if (cap == GTCapability.CAPABILITY_RECIPE_LOGIC) { + for (MachineTrait trait : machine.getTraits()) { + if (trait instanceof RecipeLogic recipeLogic) { + return GTCapability.CAPABILITY_RECIPE_LOGIC.orEmpty(cap, LazyOptional.of(() -> recipeLogic)); + } + } + } else if (cap == GTCapability.CAPABILITY_ENERGY_CONTAINER) { + if (machine instanceof IEnergyContainer energyContainer) { + return GTCapability.CAPABILITY_ENERGY_CONTAINER.orEmpty(cap, LazyOptional.of(() -> energyContainer)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyContainer.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_ENERGY_CONTAINER.orEmpty(cap, + LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new EnergyContainerList(list))); + } + } else if (cap == GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER) { + if (machine instanceof IEnergyInfoProvider energyInfoProvider) { + return GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER.orEmpty(cap, + LazyOptional.of(() -> energyInfoProvider)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyInfoProvider.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER.orEmpty(cap, + LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new EnergyInfoProviderList(list))); + } + } else if (cap == GTCapability.CAPABILITY_CLEANROOM_RECEIVER) { + if (machine instanceof ICleanroomReceiver cleanroomReceiver) { + return GTCapability.CAPABILITY_CLEANROOM_RECEIVER.orEmpty(cap, + LazyOptional.of(() -> cleanroomReceiver)); + } + } else if (cap == GTCapability.CAPABILITY_MAINTENANCE_MACHINE) { + if (machine instanceof IMaintenanceMachine maintenanceMachine) { + return GTCapability.CAPABILITY_MAINTENANCE_MACHINE.orEmpty(cap, + LazyOptional.of(() -> maintenanceMachine)); + } + } else if (cap == GTCapability.CAPABILITY_TURBINE_MACHINE) { + if (machine instanceof ITurbineMachine turbineMachine) { + return GTCapability.CAPABILITY_TURBINE_MACHINE.orEmpty(cap, + LazyOptional.of(() -> turbineMachine)); + } + } else if (cap == ForgeCapabilities.ITEM_HANDLER) { + var handler = machine.getItemHandlerCap(side, true); + if (handler != null) { + return ForgeCapabilities.ITEM_HANDLER.orEmpty(cap, LazyOptional.of(() -> handler)); + } + } else if (cap == ForgeCapabilities.FLUID_HANDLER) { + var handler = machine.getFluidHandlerCap(side, true); + if (handler != null) { + return ForgeCapabilities.FLUID_HANDLER.orEmpty(cap, LazyOptional.of(() -> handler)); + } + } else if (cap == ForgeCapabilities.ENERGY) { + if (machine instanceof IEnergyStorage energyStorage) { + return ForgeCapabilities.ENERGY.orEmpty(cap, LazyOptional.of(() -> energyStorage)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyStorage.class); + if (!list.isEmpty()) { + // TODO wrap list in the future + return ForgeCapabilities.ENERGY.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } else if (cap == GTCapability.CAPABILITY_LASER) { + if (machine instanceof ILaserContainer energyContainer) { + return GTCapability.CAPABILITY_LASER.orEmpty(cap, LazyOptional.of(() -> energyContainer)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, ILaserContainer.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_LASER.orEmpty(cap, + LazyOptional.of(() -> list.size() == 1 ? list.get(0) : new LaserContainerList(list))); + } + } else if (cap == GTCapability.CAPABILITY_COMPUTATION_PROVIDER) { + if (machine instanceof IOpticalComputationProvider computationProvider) { + return GTCapability.CAPABILITY_COMPUTATION_PROVIDER.orEmpty(cap, + LazyOptional.of(() -> computationProvider)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IOpticalComputationProvider.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_COMPUTATION_PROVIDER.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } else if (cap == GTCapability.CAPABILITY_DATA_ACCESS) { + if (machine instanceof IDataAccessHatch computationProvider) { + return GTCapability.CAPABILITY_DATA_ACCESS.orEmpty(cap, LazyOptional.of(() -> computationProvider)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IDataAccessHatch.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_DATA_ACCESS.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } else if (cap == GTCapability.CAPABILITY_MONITOR_COMPONENT) { + if (machine instanceof IMonitorComponent monitorComponent) { + return GTCapability.CAPABILITY_MONITOR_COMPONENT.orEmpty(cap, LazyOptional.of(() -> monitorComponent)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IMonitorComponent.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_MONITOR_COMPONENT.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } else if (cap == GTCapability.CAPABILITY_CENTRAL_MONITOR) { + if (machine instanceof ICentralMonitor centralMonitor) { + return GTCapability.CAPABILITY_CENTRAL_MONITOR.orEmpty(cap, LazyOptional.of(() -> centralMonitor)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, ICentralMonitor.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_CENTRAL_MONITOR.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } + if (GTCEu.Mods.isAE2Loaded()) { + LazyOptional opt = MetaMachine.AE2CallWrapper.getGridNodeHostCapability(cap, machine, side); + if (opt.isPresent()) { + // noinspection unchecked + return (LazyOptional) opt; + } + } + return LazyOptional.empty(); + } + public static class AE2CallWrapper { public static LazyOptional getGridNodeHostCapability(Capability cap, MetaMachine machine, diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java index d7fca947ae1..bd3f7374033 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java @@ -40,7 +40,7 @@ public TieredEnergyMachine(BlockEntityCreationInfo info, int tier, public TieredEnergyMachine(BlockEntityCreationInfo info, int tier) { super(info, tier); - long tierVoltage = GTValues.V[getTier()]; + long tierVoltage = GTValues.V[tier]; if (isEnergyEmitter()) { energyContainer = NotifiableEnergyContainer.emitterContainer(this, tierVoltage * 64L, tierVoltage, getMaxInputOutputAmperage()); diff --git a/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java index c8a6193f15f..fb696360635 100644 --- a/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/syncsystem/ManagedSyncBlockEntity.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.syncsystem; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.common.network.GTNetwork; import com.gregtechceu.gtceu.syncsystem.network.SPacketUpdateBESyncValue; @@ -31,6 +32,10 @@ public abstract class ManagedSyncBlockEntity extends BlockEntity implements ISyn @Setter private boolean isDirty; + public ManagedSyncBlockEntity(BlockEntityCreationInfo info) { + super(info.type(), info.pos(), info.state()); + } + public ManagedSyncBlockEntity(BlockEntityType type, BlockPos pos, BlockState blockState) { super(type, pos, blockState); } From 5043b80550d6515de3a3fdb2104b0ba746898dd5 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 2 Jan 2026 22:26:42 +1300 Subject: [PATCH 31/41] remove IRedstoneSignalMachine --- .../gtceu/api/block/MetaMachineBlock.java | 14 +++++-- .../gtceu/api/machine/MetaMachine.java | 42 ++++++++++++------- .../feature/IRedstoneSignalMachine.java | 36 ---------------- 3 files changed, 38 insertions(+), 54 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRedstoneSignalMachine.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java index 17c88ca050c..43ee473ebf0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java @@ -326,6 +326,15 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player return shouldOpenUi ? InteractionResult.PASS : InteractionResult.CONSUME; } + + ////////////////////////////////////// + // ***** Redstone Signals ****// + ////////////////////////////////////// + + public boolean canConnectRedstone(BlockGetter level, BlockPos pos, Direction side) { + return MetaMachine.getMachine(level, pos).canConnectRedstone(side); + } + @Override @SuppressWarnings("deprecation") // This is fine to override, just not to be called. public int getSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) { @@ -344,6 +353,8 @@ public int getAnalogOutputSignal(BlockState state, Level level, BlockPos pos) { return MetaMachine.getMachine(level, pos).getAnalogOutputSignal(); } + ///////// + @Override public void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, BlockPos fromPos, boolean isMoving) { @@ -417,7 +428,4 @@ public BlockEntityTicker getTicker(Level level, Block return null; } - public boolean canConnectRedstone(BlockGetter level, BlockPos pos, Direction side) { - return MetaMachine.getMachine(level, pos).canConnectRedstone(side); - } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index d1aea7645ad..b5b08ae6086 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -102,7 +102,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class MetaMachine extends ManagedSyncBlockEntity implements IGregtechBlockEntity, IToolable, IToolGridHighlight, - IFancyTooltip, IPaintable, IRedstoneSignalMachine { + IFancyTooltip, IPaintable { public static final ModelProperty MODEL_DATA_LEVEL = new ModelProperty<>(); public static final ModelProperty MODEL_DATA_POS = new ModelProperty<>(); @@ -677,7 +677,24 @@ public void updateModelData(ModelData.Builder builder) { } } + public long getOffsetTimer() { + if (getLevel() == null) return getOffset(); + else if (getLevel().isClientSide()) return GTValues.CLIENT_TIME + getOffset(); + + var server = getLevel().getServer(); + if (server != null) return server.getTickCount() + getOffset(); + return getOffset(); + } + @Override + public boolean isRemote() { + return IGregtechBlockEntity.super.isRemote(); + } + + //////////////////////////////// + // ***** Redstone Signals ****// + //////////////////////////////// + public int getOutputSignal(@Nullable Direction side) { if (side == null) return 0; @@ -688,7 +705,15 @@ public int getOutputSignal(@Nullable Direction side) { return cover.getRedstoneSignalOutput(); } - @Override + public int getOutputDirectSignal(@Nullable Direction side) { + // IDK what this does but MC wants it + return 0; + } + + public int getAnalogOutputSignal() { + return 0; + } + public boolean canConnectRedstone(@NotNull Direction side) { // For some reason, Minecraft requests the output signal from the opposite side... CoverBehavior cover = getCoverContainer().getCoverAtSide(side); @@ -697,19 +722,6 @@ public boolean canConnectRedstone(@NotNull Direction side) { return cover.canConnectRedstone(); } - public long getOffsetTimer() { - if (getLevel() == null) return getOffset(); - else if (getLevel().isClientSide()) return GTValues.CLIENT_TIME + getOffset(); - - var server = getLevel().getServer(); - if (server != null) return server.getTickCount() + getOffset(); - return getOffset(); - } - - @Override - public boolean isRemote() { - return IGregtechBlockEntity.super.isRemote(); - } ////////////////////////////////////// // ****** Ownership ********// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRedstoneSignalMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRedstoneSignalMachine.java deleted file mode 100644 index 145eefb84b8..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRedstoneSignalMachine.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gregtechceu.gtceu.api.machine.feature; - -import net.minecraft.core.Direction; - -import org.jetbrains.annotations.Nullable; - -public interface IRedstoneSignalMachine extends IMachineFeature { - - default int getOutputSignal(@Nullable Direction side) { - return 0; - } - - default int getOutputDirectSignal(Direction direction) { - return 0; - } - - default int getAnalogOutputSignal() { - return 0; - } - - default boolean canConnectRedstone(Direction side) { - return false; - } - - /** - * Call to update output signal. - * also see {@link IRedstoneSignalMachine#getOutputSignal(Direction)} and - * {@link IRedstoneSignalMachine#getOutputDirectSignal(Direction)} - */ - default void updateSignal() { - var level = self().getLevel(); - if (!level.isClientSide) { - self().notifyBlockUpdate(); - } - } -} From 8b536705d52a8e7b79900f0c78df205cb691f035 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 2 Jan 2026 22:45:04 +1300 Subject: [PATCH 32/41] god class metamachine --- .../gtceu/api/block/MetaMachineBlock.java | 13 +- .../gtceu/api/machine/MetaMachine.java | 127 +++++++++++------- .../common/machine/storage/CrateMachine.java | 2 +- 3 files changed, 77 insertions(+), 65 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java index 43ee473ebf0..1d36980fd7a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java @@ -123,18 +123,7 @@ public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, @Nullabl if (!pLevel.isClientSide) { var machine = MetaMachine.getMachine(pLevel, pPos); if (machine != null) { - if (player instanceof ServerPlayer sPlayer) { - machine.setOwnerUUID(sPlayer.getUUID()); - } - } - if (machine instanceof IDropSaveMachine dropSaveMachine) { - CompoundTag tag = pStack.getTag(); - if (tag != null) { - dropSaveMachine.loadFromItem(tag); - } - } - if (machine instanceof IMachineLife machineLife) { - machineLife.onMachinePlaced(player, pStack); + machine.onMachinePlaced(player, pStack); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index b5b08ae6086..c7f4e9cf433 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -40,6 +40,7 @@ import com.gregtechceu.gtceu.syncsystem.annotations.SaveField; import com.gregtechceu.gtceu.syncsystem.annotations.SyncToClient; +import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.utils.DummyWorld; @@ -52,10 +53,13 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.locale.Language; +import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; @@ -102,7 +106,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class MetaMachine extends ManagedSyncBlockEntity implements IGregtechBlockEntity, IToolable, IToolGridHighlight, - IFancyTooltip, IPaintable { + IFancyTooltip, IPaintable, IMachineFeature { public static final ModelProperty MODEL_DATA_LEVEL = new ModelProperty<>(); public static final ModelProperty MODEL_DATA_POS = new ModelProperty<>(); @@ -130,9 +134,6 @@ public class MetaMachine extends ManagedSyncBlockEntity implements IGregtechBloc @Getter protected final List traits; - private final List serverTicks; - private final List waitingToAdd; - @Getter @Setter @SaveField @@ -152,58 +153,27 @@ public MetaMachine(BlockEntityCreationInfo info) { } ////////////////////////////////////// - // ***** Initialization ******// + // ***** Machine Lifecycle ******// ////////////////////////////////////// - @Override - public final void setRemoved() { - super.setRemoved(); - onUnload(); - } - - public @UnknownNullability Level getLevel() { - return super.getLevel(); - } - - public void setOwnerUUID(UUID uuid) { - ownerUUID = uuid; - syncDataHolder.markClientSyncFieldDirty("ownerUUID"); - } - - @Override - public boolean triggerEvent(int id, int para) { - if (id == 1) { // chunk re render - if (level != null && level.isClientSide) { - scheduleRenderUpdate(); - } - return true; + public void onMachinePlaced(@Nullable LivingEntity player, ItemStack stack) { + if (player instanceof ServerPlayer sPlayer) { + ownerUUID = sPlayer.getUUID(); } - return false; - } - public void setPaintingColor(int color) { - if (color == this.paintingColor) return; - - this.paintingColor = color; - syncDataHolder.markClientSyncFieldDirty("paintingColor"); - this.onPaintingColorChanged(color); - - MachineRenderState renderState = getRenderState(); - if (renderState.hasProperty(GTMachineModelProperties.IS_PAINTED)) { - setRenderState(renderState.setValue(GTMachineModelProperties.IS_PAINTED, this.isPainted())); + if (this instanceof IDropSaveMachine dropSaveMachine) { + CompoundTag tag = stack.getTag(); + if (tag != null) { + dropSaveMachine.loadFromItem(tag); + } } } - public void onPaintingColorChanged(int color) {} - - @OverridingMethodsMustInvokeSuper - public void onUnload() { - traits.forEach(MachineTrait::onMachineUnLoad); - coverContainer.onUnload(); - for (TickableSubscription serverTick : serverTicks) { - serverTick.unsubscribe(); + public void onRemoved() { + for (Direction direction : GTUtil.DIRECTIONS) { + getCoverContainer().removeCover(direction, null); } - serverTicks.clear(); + if (this instanceof IMachineLife l) l.onMachineRemoved(); } @OverridingMethodsMustInvokeSuper @@ -219,16 +189,29 @@ public void onLoad() { } } - public void notifyBlockUpdate() { - if (getLevel() != null) { - getLevel().updateNeighborsAt(getBlockPos(), getLevel().getBlockState(getBlockPos()).getBlock()); + @Override + public final void setRemoved() { + super.setRemoved(); + onUnload(); + } + + @OverridingMethodsMustInvokeSuper + public void onUnload() { + traits.forEach(MachineTrait::onMachineUnLoad); + coverContainer.onUnload(); + for (TickableSubscription serverTick : serverTicks) { + serverTick.unsubscribe(); } + serverTicks.clear(); } ////////////////////////////////////// // ***** Tickable Manager ****// ////////////////////////////////////// + private final List serverTicks; + private final List waitingToAdd; + /** * For initialization. To get level and property fields after auto sync, you can subscribe it in {@link #onLoad()} * event. @@ -469,6 +452,47 @@ public static MetaMachine getMachine(BlockGetter level, BlockPos pos) { return null; } + public void notifyBlockUpdate() { + if (getLevel() != null) { + getLevel().updateNeighborsAt(getBlockPos(), getLevel().getBlockState(getBlockPos()).getBlock()); + } + } + + public @UnknownNullability Level getLevel() { + return super.getLevel(); + } + + public void setOwnerUUID(UUID uuid) { + ownerUUID = uuid; + syncDataHolder.markClientSyncFieldDirty("ownerUUID"); + } + + @Override + public boolean triggerEvent(int id, int para) { + if (id == 1) { // chunk re render + if (level != null && level.isClientSide) { + scheduleRenderUpdate(); + } + return true; + } + return false; + } + + public void setPaintingColor(int color) { + if (color == this.paintingColor) return; + + this.paintingColor = color; + syncDataHolder.markClientSyncFieldDirty("paintingColor"); + this.onPaintingColorChanged(color); + + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(GTMachineModelProperties.IS_PAINTED)) { + setRenderState(renderState.setValue(GTMachineModelProperties.IS_PAINTED, this.isPainted())); + } + } + + public void onPaintingColorChanged(int color) {} + /** * All traits should be initialized while MetaMachine is creating. you cannot add them on the fly. */ @@ -722,7 +746,6 @@ public boolean canConnectRedstone(@NotNull Direction side) { return cover.canConnectRedstone(); } - ////////////////////////////////////// // ****** Ownership ********// ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java index 2e9b5fd07b2..41106c0e0bb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java @@ -108,7 +108,7 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play @Override public void onMachinePlaced(@Nullable LivingEntity player, ItemStack stack) { - IMachineLife.super.onMachinePlaced(player, stack); + super.onMachinePlaced(player, stack); CompoundTag tag = stack.getTag(); if (tag != null) { if (tag.contains("taped") && tag.getBoolean("taped")) { From da1e62c2143eae5e83f233e7e2e4fbb657ea54cf Mon Sep 17 00:00:00 2001 From: Gustavo <77560533+gustovafing@users.noreply.github.com> Date: Tue, 6 Jan 2026 08:07:32 +1100 Subject: [PATCH 33/41] Update MetaMachine.java Co-authored-by: Jurre Groenendijk --- .../java/com/gregtechceu/gtceu/api/machine/MetaMachine.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index c7f4e9cf433..e7a796d7a14 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -706,8 +706,8 @@ public long getOffsetTimer() { else if (getLevel().isClientSide()) return GTValues.CLIENT_TIME + getOffset(); var server = getLevel().getServer(); - if (server != null) return server.getTickCount() + getOffset(); - return getOffset(); + if (server == null) return getOffset(); + return server.getTickCount() + getOffset(); } @Override From d14ea665691b802325750dbd38250e89dd6c5d62 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Tue, 6 Jan 2026 13:35:42 +1300 Subject: [PATCH 34/41] spotless + add missing null check --- .../gtceu/api/block/MetaMachineBlock.java | 3 --- .../api/capability/GTCapabilityHelper.java | 1 + .../gtceu/api/machine/MetaMachine.java | 6 ++--- .../api/machine/WorkableTieredMachine.java | 22 +++++++++++++------ .../common/machine/electric/MinerMachine.java | 4 ---- .../machine/storage/CreativeChestMachine.java | 2 +- 6 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java index 1d36980fd7a..2817ff03126 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java @@ -19,7 +19,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.locale.Language; -import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.RandomSource; @@ -315,7 +314,6 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player return shouldOpenUi ? InteractionResult.PASS : InteractionResult.CONSUME; } - ////////////////////////////////////// // ***** Redstone Signals ****// ////////////////////////////////////// @@ -416,5 +414,4 @@ public BlockEntityTicker getTicker(Level level, Block } return null; } - } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java b/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java index 2866d409a5f..49ba637ac4d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.capability.forge.GTCapability; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; + import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.entity.Entity; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index e7a796d7a14..51784493233 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -39,8 +39,8 @@ import com.gregtechceu.gtceu.syncsystem.annotations.RerenderOnChanged; import com.gregtechceu.gtceu.syncsystem.annotations.SaveField; import com.gregtechceu.gtceu.syncsystem.annotations.SyncToClient; - import com.gregtechceu.gtceu.utils.GTUtil; + import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.utils.DummyWorld; @@ -903,7 +903,7 @@ public IFluidHandlerModifiable getFluidHandlerCap(@Nullable Direction side, bool } private static List getCapabilitiesFromTraits(List traits, @Nullable Direction accessSide, - Class capability) { + Class capability) { if (traits.isEmpty()) return Collections.emptyList(); List list = new ArrayList<>(); for (MachineTrait trait : traits) { @@ -915,7 +915,7 @@ private static List getCapabilitiesFromTraits(List traits, } public static @NotNull LazyOptional getCapability(MetaMachine machine, @NotNull Capability cap, - @Nullable Direction side) { + @Nullable Direction side) { if (cap == GTCapability.CAPABILITY_COVERABLE) { return GTCapability.CAPABILITY_COVERABLE.orEmpty(cap, LazyOptional.of(machine::getCoverContainer)); } else if (cap == GTCapability.CAPABILITY_TOOLABLE) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java index 560bcb0c89c..5e7d723a943 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java @@ -64,7 +64,9 @@ public abstract class WorkableTieredMachine extends TieredEnergyMachine implemen protected boolean isMuffled; protected boolean previouslyMuffled = true; - public WorkableTieredMachine(BlockEntityCreationInfo info, int tier, Function recipeLogicSupplier, int importSlots, int exportSlots, + public WorkableTieredMachine(BlockEntityCreationInfo info, int tier, + Function recipeLogicSupplier, int importSlots, + int exportSlots, int fluidImportSlots, int fluidExportSlots, Int2IntFunction tankScalingFunction) { super(info, tier); this.overclockTier = getMaxOverclockTier(); @@ -76,8 +78,10 @@ public WorkableTieredMachine(BlockEntityCreationInfo info, int tier, Function(IO.class); this.traitSubscriptions = new ArrayList<>(); this.recipeLogic = new RecipeLogic(this); - this.importItems = new NotifiableItemStackHandler(this, getRecipeType().getMaxInputs(ItemRecipeCapability.CAP), IO.IN); - this.exportItems = new NotifiableItemStackHandler(this, getRecipeType().getMaxOutputs(ItemRecipeCapability.CAP), IO.OUT); - this.importFluids = new NotifiableFluidTank(this, getRecipeType().getMaxInputs(FluidRecipeCapability.CAP), tankScalingFunction.applyAsInt(getTier()), IO.IN); - this.exportFluids = new NotifiableFluidTank(this, getRecipeType().getMaxOutputs(FluidRecipeCapability.CAP), tankScalingFunction.applyAsInt(getTier()), IO.OUT); + this.importItems = new NotifiableItemStackHandler(this, getRecipeType().getMaxInputs(ItemRecipeCapability.CAP), + IO.IN); + this.exportItems = new NotifiableItemStackHandler(this, getRecipeType().getMaxOutputs(ItemRecipeCapability.CAP), + IO.OUT); + this.importFluids = new NotifiableFluidTank(this, getRecipeType().getMaxInputs(FluidRecipeCapability.CAP), + tankScalingFunction.applyAsInt(getTier()), IO.IN); + this.exportFluids = new NotifiableFluidTank(this, getRecipeType().getMaxOutputs(FluidRecipeCapability.CAP), + tankScalingFunction.applyAsInt(getTier()), IO.OUT); this.importComputation = new NotifiableComputationContainer(this, IO.IN, true); this.exportComputation = new NotifiableComputationContainer(this, IO.OUT, false); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java index 5512bf00dd2..be617b2b03e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.IMiner; -import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.WidgetUtils; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; @@ -16,10 +15,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; -import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; -import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; -import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; import com.gregtechceu.gtceu.common.item.PortableScannerBehavior; import com.gregtechceu.gtceu.common.machine.trait.miner.MinerLogic; import com.gregtechceu.gtceu.config.ConfigHolder; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java index f5c49d6b925..3bc46471d5f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java @@ -49,7 +49,7 @@ protected ItemCache createCacheItemHandler() { protected void checkAutoOutput() { if (getOffsetTimer() % ticksPerCycle == 0) { - if (isAutoOutputItems()) { + if (isAutoOutputItems() && getOutputFacingItems() != null) { cache.exportToNearby(getOutputFacingItems()); } updateAutoOutputSubscription(); From 8301ea951c744a30e297490c3c8a08f8bec2e1c1 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Tue, 6 Jan 2026 13:50:32 +1300 Subject: [PATCH 35/41] remove TestUtils.getMetaMachine func --- .../api/machine/trait/RecipeLogicTest.java | 15 +++------ .../gtceu/api/recipe/InputSeparationTest.java | 18 ++++------- .../api/recipe/MultipleEnergyHatchTest.java | 15 ++++----- .../gtceu/api/recipe/OverclockLogicTest.java | 23 ++++++------- .../recipe/ingredient/NBTPredicateTest.java | 26 ++++++--------- .../cover/WirelessTransmitterCoverTest.java | 9 ++---- .../electric/AssemblyLineTests.java | 32 +++++++------------ .../condition/AdjacentFluidConditionTest.java | 23 ++++--------- .../gtceu/gametest/util/TestUtils.java | 11 ------- .../ae2/machine/PatternBufferTest.java | 22 +++++-------- 10 files changed, 65 insertions(+), 129 deletions(-) diff --git a/src/test/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogicTest.java b/src/test/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogicTest.java index 6bcf3299606..553f4a91edf 100644 --- a/src/test/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogicTest.java +++ b/src/test/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogicTest.java @@ -20,8 +20,6 @@ import net.minecraftforge.gametest.GameTestHolder; import net.minecraftforge.gametest.PrefixGameTestTemplate; -import static com.gregtechceu.gtceu.gametest.util.TestUtils.getMetaMachine; - @PrefixGameTestTemplate(false) @GameTestHolder(GTCEu.MOD_ID) public class RecipeLogicTest { @@ -65,16 +63,13 @@ private record BusHolder(ItemBusPartMachine inputBus1, ItemBusPartMachine inputB * @return the busses, in the BusHolder record. */ private static RecipeLogicTest.BusHolder getBussesAndForm(GameTestHelper helper) { - WorkableMultiblockMachine controller = (WorkableMultiblockMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(1, 2, 0))); + WorkableMultiblockMachine controller = (WorkableMultiblockMachine) helper.getBlockEntity(new BlockPos(1, 2, 0)); + assert controller != null; TestUtils.formMultiblock(controller); controller.setRecipeType(LCR_RECIPE_TYPE); - ItemBusPartMachine inputBus1 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(2, 1, 0))); - ItemBusPartMachine inputBus2 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(2, 2, 0))); - ItemBusPartMachine outputBus1 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 1, 0))); + ItemBusPartMachine inputBus1 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(2, 1, 0)); + ItemBusPartMachine inputBus2 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(2, 2, 0)); + ItemBusPartMachine outputBus1 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); return new RecipeLogicTest.BusHolder(inputBus1, inputBus2, outputBus1, controller); } diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/InputSeparationTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/InputSeparationTest.java index a9e10bb1b75..458a3362354 100644 --- a/src/test/java/com/gregtechceu/gtceu/api/recipe/InputSeparationTest.java +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/InputSeparationTest.java @@ -18,8 +18,6 @@ import net.minecraftforge.gametest.GameTestHolder; import net.minecraftforge.gametest.PrefixGameTestTemplate; -import static com.gregtechceu.gtceu.gametest.util.TestUtils.getMetaMachine; - @PrefixGameTestTemplate(false) @GameTestHolder(GTCEu.MOD_ID) public class InputSeparationTest { @@ -49,18 +47,14 @@ private record BusHolder(ItemBusPartMachine inputBus1, ItemBusPartMachine inputB * @return the busses, in the BusHolder record. */ private static BusHolder getBussesAndForm(GameTestHelper helper) { - WorkableMultiblockMachine controller = (WorkableMultiblockMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(1, 2, 0))); + WorkableMultiblockMachine controller = (WorkableMultiblockMachine) helper.getBlockEntity(new BlockPos(1, 2, 0)); + assert controller != null; TestUtils.formMultiblock(controller); controller.setRecipeType(LCR_RECIPE_TYPE); - ItemBusPartMachine inputBus1 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(2, 1, 0))); - ItemBusPartMachine inputBus2 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(2, 2, 0))); - ItemBusPartMachine outputBus1 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 1, 0))); - FluidHatchPartMachine outputHatch1 = (FluidHatchPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 2, 0))); + ItemBusPartMachine inputBus1 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(2, 1, 0)); + ItemBusPartMachine inputBus2 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(2, 2, 0)); + ItemBusPartMachine outputBus1 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + FluidHatchPartMachine outputHatch1 = (FluidHatchPartMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); return new BusHolder(inputBus1, inputBus2, outputBus1, outputHatch1, controller); } diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/MultipleEnergyHatchTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/MultipleEnergyHatchTest.java index 4559032c208..cf28284f382 100644 --- a/src/test/java/com/gregtechceu/gtceu/api/recipe/MultipleEnergyHatchTest.java +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/MultipleEnergyHatchTest.java @@ -23,7 +23,6 @@ import java.util.Optional; import static com.gregtechceu.gtceu.api.GTValues.*; -import static com.gregtechceu.gtceu.gametest.util.TestUtils.getMetaMachine; @PrefixGameTestTemplate(false) @GameTestHolder(GTCEu.MOD_ID) @@ -81,16 +80,14 @@ private record BusHolder(ItemBusPartMachine inputBus, ItemBusPartMachine outputB * @return the busses, in the BusHolder record. */ private static BusHolder getBussesAndForm(GameTestHelper helper) { - WorkableElectricMultiblockMachine controller = (WorkableElectricMultiblockMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(1, 2, 0))); + WorkableElectricMultiblockMachine controller = (WorkableElectricMultiblockMachine) helper + .getBlockEntity(new BlockPos(1, 2, 0)); + assert controller != null; TestUtils.formMultiblock(controller); controller.setRecipeType(LCR_RECIPE_TYPE); - ItemBusPartMachine inputBus = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(2, 1, 0))); - ItemBusPartMachine outputBus = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 1, 0))); - EnergyHatchPartMachine energyHatch = (EnergyHatchPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(1, 3, 0))); + ItemBusPartMachine inputBus = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(2, 1, 0)); + ItemBusPartMachine outputBus = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + EnergyHatchPartMachine energyHatch = (EnergyHatchPartMachine) helper.getBlockEntity(new BlockPos(1, 3, 0)); // Some instances don't have a second energy hatch var hatch2BE = helper.getBlockEntity(new BlockPos(1, 3, 0)); if (hatch2BE instanceof EnergyHatchPartMachine hatch2MMBE) { diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/OverclockLogicTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/OverclockLogicTest.java index 432b88e9763..cc11effe3b6 100644 --- a/src/test/java/com/gregtechceu/gtceu/api/recipe/OverclockLogicTest.java +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/OverclockLogicTest.java @@ -27,7 +27,6 @@ import static com.gregtechceu.gtceu.api.recipe.OverclockingLogic.*; import static com.gregtechceu.gtceu.common.data.GTRecipeModifiers.*; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.LARGE_CHEMICAL_RECIPES; -import static com.gregtechceu.gtceu.gametest.util.TestUtils.getMetaMachine; @PrefixGameTestTemplate(false) @GameTestHolder(GTCEu.MOD_ID) @@ -93,16 +92,13 @@ private record BusHolder(ItemBusPartMachine inputBus1, ItemBusPartMachine inputB * @return the busses, in the BusHolder record. */ private static BusHolder getBussesAndForm(GameTestHelper helper) { - WorkableMultiblockMachine controller = (WorkableMultiblockMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(1, 2, 0))); + WorkableMultiblockMachine controller = (WorkableMultiblockMachine) helper.getBlockEntity(new BlockPos(1, 2, 0)); + assert controller != null; TestUtils.formMultiblock(controller); controller.setRecipeType(LCR_RECIPE_TYPE); - ItemBusPartMachine inputBus1 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(2, 1, 0))); - ItemBusPartMachine inputBus2 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(2, 2, 0))); - ItemBusPartMachine outputBus1 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 1, 0))); + ItemBusPartMachine inputBus1 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(2, 1, 0)); + ItemBusPartMachine inputBus2 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(2, 2, 0)); + ItemBusPartMachine outputBus1 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); return new BusHolder(inputBus1, inputBus2, outputBus1, controller); } @@ -310,9 +306,9 @@ public static void overclockLogicEVRecipeHVMachineTest(GameTestHelper helper) { // Test for charge usage of a singleblock HV chemical reactor running an HV recipe @GameTest(template = "singleblock_charged_cr", batch = "OverclockLogic") public static void overclockLogicHVPowerTest(GameTestHelper helper) { - SimpleTieredMachine machine = (SimpleTieredMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 1, 0))); + SimpleTieredMachine machine = (SimpleTieredMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + assert machine != null; machine.setRecipeType(CR_RECIPE_TYPE); NotifiableEnergyContainer energyContainer = (NotifiableEnergyContainer) machine .getCapabilitiesFlat(IO.IN, EURecipeCapability.CAP).get(0); @@ -342,9 +338,8 @@ public static void overclockLogicHVPowerTest(GameTestHelper helper) { // Test for charge usage of a singleblock HV chemical reactor running an MV recipe @GameTest(template = "singleblock_charged_cr", batch = "OverclockLogic") public static void overclockLogicMVPowerTest(GameTestHelper helper) { - SimpleTieredMachine machine = (SimpleTieredMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 1, 0))); - + SimpleTieredMachine machine = (SimpleTieredMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + assert machine != null; machine.setRecipeType(CR_RECIPE_TYPE); NotifiableEnergyContainer energyContainer = (NotifiableEnergyContainer) machine .getCapabilitiesFlat(IO.IN, EURecipeCapability.CAP).get(0); diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/NBTPredicateTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/NBTPredicateTest.java index 5356f73c001..967d4ad63bb 100644 --- a/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/NBTPredicateTest.java +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/ingredient/NBTPredicateTest.java @@ -24,7 +24,6 @@ import static com.gregtechceu.gtceu.api.recipe.ingredient.nbtpredicate.NBTPredicates.*; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.CHEMICAL_RECIPES; -import static com.gregtechceu.gtceu.gametest.util.TestUtils.getMetaMachine; @PrefixGameTestTemplate(false) @GameTestHolder(GTCEu.MOD_ID) @@ -232,9 +231,8 @@ public static void NBTPredicateEmptyTest(GameTestHelper helper) { @GameTest(template = "singleblock_chem_reactor", batch = "NBTPredicateTest") public static void NBTPredicateMachineCRTestSucceeds(GameTestHelper helper) { - SimpleTieredMachine machine = (SimpleTieredMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 1, 0))); - + SimpleTieredMachine machine = (SimpleTieredMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + assert machine != null; machine.setRecipeType(CR_RECIPE_TYPE); NotifiableItemStackHandler itemIn = (NotifiableItemStackHandler) machine .getCapabilitiesFlat(IO.IN, ItemRecipeCapability.CAP).get(0); @@ -253,9 +251,8 @@ public static void NBTPredicateMachineCRTestSucceeds(GameTestHelper helper) { @GameTest(template = "singleblock_chem_reactor", batch = "NBTPredicateTest") public static void NBTPredicateMachineCRTestDoesntSucceed(GameTestHelper helper) { - SimpleTieredMachine machine = (SimpleTieredMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 1, 0))); - + SimpleTieredMachine machine = (SimpleTieredMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + assert machine != null; machine.setRecipeType(CR_RECIPE_TYPE); NotifiableItemStackHandler itemIn = (NotifiableItemStackHandler) machine .getCapabilitiesFlat(IO.IN, ItemRecipeCapability.CAP).get(0); @@ -274,9 +271,8 @@ public static void NBTPredicateMachineCRTestDoesntSucceed(GameTestHelper helper) @GameTest(template = "singleblock_chem_reactor", batch = "NBTPredicateTest") public static void NBTPredicateMachineCRTestChanced(GameTestHelper helper) { - SimpleTieredMachine machine = (SimpleTieredMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 1, 0))); - + SimpleTieredMachine machine = (SimpleTieredMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + assert machine != null; machine.setRecipeType(CR_RECIPE_TYPE); NotifiableItemStackHandler itemIn = (NotifiableItemStackHandler) machine .getCapabilitiesFlat(IO.IN, ItemRecipeCapability.CAP).get(0); @@ -302,9 +298,8 @@ public static void NBTPredicateMachineCRTestChanced(GameTestHelper helper) { @GameTest(template = "singleblock_chem_reactor", batch = "NBTPredicateTest") public static void NBTPredicateMachineCRTestRanged(GameTestHelper helper) { - SimpleTieredMachine machine = (SimpleTieredMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 1, 0))); - + SimpleTieredMachine machine = (SimpleTieredMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + assert machine != null; machine.setRecipeType(CR_RECIPE_TYPE); NotifiableItemStackHandler itemIn = (NotifiableItemStackHandler) machine .getCapabilitiesFlat(IO.IN, ItemRecipeCapability.CAP).get(0); @@ -330,9 +325,8 @@ public static void NBTPredicateMachineCRTestRanged(GameTestHelper helper) { @GameTest(template = "singleblock_chem_reactor", batch = "NBTPredicateTest") public static void NBTPredicateMachineCRTestChancedRanged(GameTestHelper helper) { - SimpleTieredMachine machine = (SimpleTieredMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 1, 0))); - + SimpleTieredMachine machine = (SimpleTieredMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + assert machine != null; machine.setRecipeType(CR_RECIPE_TYPE); NotifiableItemStackHandler itemIn = (NotifiableItemStackHandler) machine .getCapabilitiesFlat(IO.IN, ItemRecipeCapability.CAP).get(0); diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCoverTest.java index 01615608f10..ac944a3a5a7 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCoverTest.java @@ -25,12 +25,9 @@ public class WirelessTransmitterCoverTest { @GameTest(template = "central_monitor", batch = "coverTests") public static void wirelessTransmitterCoverTest(GameTestHelper helper) { - CentralMonitorMachine machine = (CentralMonitorMachine) TestUtils - .getMetaMachine(helper.getBlockEntity(new BlockPos(1, 3, 2))); - DataAccessHatchMachine dataHatch = (DataAccessHatchMachine) TestUtils - .getMetaMachine(helper.getBlockEntity(new BlockPos(1, 2, 2))); - BatteryBufferMachine batteryBuffer = (BatteryBufferMachine) TestUtils - .getMetaMachine(helper.getBlockEntity(new BlockPos(2, 2, 3))); + CentralMonitorMachine machine = (CentralMonitorMachine) helper.getBlockEntity(new BlockPos(1, 3, 2)); + DataAccessHatchMachine dataHatch = (DataAccessHatchMachine) helper.getBlockEntity(new BlockPos(1, 2, 2)); + BatteryBufferMachine batteryBuffer = (BatteryBufferMachine) helper.getBlockEntity(new BlockPos(2, 2, 3)); WirelessTransmitterCover cover = (WirelessTransmitterCover) batteryBuffer.getCoverContainer() .getCoverAtSide(Direction.UP); MonitorGroup group = machine.getMonitorGroups().get(0); diff --git a/src/test/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineTests.java b/src/test/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineTests.java index 11a0b54e1e9..2727d79d1ff 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineTests.java +++ b/src/test/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineTests.java @@ -22,7 +22,6 @@ import net.minecraftforge.gametest.PrefixGameTestTemplate; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.ASSEMBLY_LINE_RECIPES; -import static com.gregtechceu.gtceu.gametest.util.TestUtils.getMetaMachine; @PrefixGameTestTemplate(false) @GameTestHolder(GTCEu.MOD_ID) @@ -56,28 +55,19 @@ private record BusHolder(ItemBusPartMachine inputBus1, ItemBusPartMachine inputB * @return the busses, in the BusHolder record. */ private static BusHolder getBussesAndForm(GameTestHelper helper) { - WorkableMultiblockMachine controller = (WorkableMultiblockMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 3, 0))); + WorkableMultiblockMachine controller = (WorkableMultiblockMachine) helper.getBlockEntity(new BlockPos(0, 3, 0)); + assert controller != null; TestUtils.formMultiblock(controller); controller.setRecipeType(ASSLINE_RECIPE_TYPE); - ItemBusPartMachine inputBus1 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 1, 1))); - ItemBusPartMachine inputBus2 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(1, 1, 1))); - ItemBusPartMachine inputBus3 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(2, 1, 1))); - ItemBusPartMachine inputBus4 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(3, 1, 1))); - ItemBusPartMachine outputBus1 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(4, 1, 1))); - FluidHatchPartMachine inputHatch1 = (FluidHatchPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 1, 0))); - FluidHatchPartMachine inputHatch2 = (FluidHatchPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(1, 1, 0))); - FluidHatchPartMachine inputHatch3 = (FluidHatchPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(2, 1, 0))); - FluidHatchPartMachine inputHatch4 = (FluidHatchPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(3, 1, 0))); + ItemBusPartMachine inputBus1 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(0, 1, 1)); + ItemBusPartMachine inputBus2 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(1, 1, 1)); + ItemBusPartMachine inputBus3 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(2, 1, 1)); + ItemBusPartMachine inputBus4 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(3, 1, 1)); + ItemBusPartMachine outputBus1 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(4, 1, 1)); + FluidHatchPartMachine inputHatch1 = (FluidHatchPartMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + FluidHatchPartMachine inputHatch2 = (FluidHatchPartMachine) helper.getBlockEntity(new BlockPos(1, 1, 0)); + FluidHatchPartMachine inputHatch3 = (FluidHatchPartMachine) helper.getBlockEntity(new BlockPos(2, 1, 0)); + FluidHatchPartMachine inputHatch4 = (FluidHatchPartMachine) helper.getBlockEntity(new BlockPos(3, 1, 0)); return new BusHolder(inputBus1, inputBus2, inputBus3, inputBus4, inputHatch1, inputHatch2, inputHatch3, inputHatch4, outputBus1, controller); } diff --git a/src/test/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentFluidConditionTest.java b/src/test/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentFluidConditionTest.java index f72991eaae5..fc9e3a3cd0a 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentFluidConditionTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentFluidConditionTest.java @@ -22,8 +22,6 @@ import net.minecraftforge.gametest.GameTestHolder; import net.minecraftforge.gametest.PrefixGameTestTemplate; -import static com.gregtechceu.gtceu.gametest.util.TestUtils.getMetaMachine; - @PrefixGameTestTemplate(false) @GameTestHolder(GTCEu.MOD_ID) public class AdjacentFluidConditionTest { @@ -59,8 +57,7 @@ public static void adjacentFluidConditionCorrectFluidPresentTest(GameTestHelper // Machine is at 1,1,1 so 0,1,1 is next to it helper.setBlock(new BlockPos(0, 1, 1), Blocks.WATER); - SimpleTieredMachine machine = (SimpleTieredMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(1, 1, 1))); + SimpleTieredMachine machine = (SimpleTieredMachine) helper.getBlockEntity(new BlockPos(1, 1, 1)); machine.setRecipeType(ROCK_BREAKER_RECIPE_TYPE); NotifiableItemStackHandler itemIn = (NotifiableItemStackHandler) machine @@ -81,8 +78,7 @@ public static void adjacentFluidConditionCorrectFluidPresentTest(GameTestHelper // Test for checking if the rock breaker works when there are no fluids @GameTest(template = "charged_hv_rock_breaker", batch = "AdjacentFluidCondition") public static void adjacentFluidConditionNoFluidPresentTest(GameTestHelper helper) { - SimpleTieredMachine machine = (SimpleTieredMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(1, 1, 1))); + SimpleTieredMachine machine = (SimpleTieredMachine) helper.getBlockEntity(new BlockPos(1, 1, 1)); machine.setRecipeType(ROCK_BREAKER_RECIPE_TYPE); NotifiableItemStackHandler itemIn = (NotifiableItemStackHandler) machine @@ -104,8 +100,7 @@ public static void adjacentFluidConditionNoFluidPresentTest(GameTestHelper helpe public static void adjacentFluidConditionWrongFluidPresentTest(GameTestHelper helper) { // Machine is at 1,1,1 so 0,1,1 is next to it helper.setBlock(new BlockPos(0, 1, 1), Blocks.LAVA); - SimpleTieredMachine machine = (SimpleTieredMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(1, 1, 1))); + SimpleTieredMachine machine = (SimpleTieredMachine) helper.getBlockEntity(new BlockPos(1, 1, 1)); machine.setRecipeType(ROCK_BREAKER_RECIPE_TYPE); NotifiableItemStackHandler itemIn = (NotifiableItemStackHandler) machine @@ -129,8 +124,7 @@ public static void adjacentFluidConditionTwoFluidCorrectFluidsPresentTest(GameTe // Machine is at 1,1,1 so 0,1,1 and 1,1,0 are next to it helper.setBlock(new BlockPos(0, 1, 1), Blocks.LAVA); helper.setBlock(new BlockPos(1, 1, 0), Blocks.WATER); - SimpleTieredMachine machine = (SimpleTieredMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(1, 1, 1))); + SimpleTieredMachine machine = (SimpleTieredMachine) helper.getBlockEntity(new BlockPos(1, 1, 1)); machine.setRecipeType(ROCK_BREAKER_RECIPE_TYPE); NotifiableItemStackHandler itemIn = (NotifiableItemStackHandler) machine @@ -153,8 +147,7 @@ public static void adjacentFluidConditionTwoFluidCorrectFluidsPresentTest(GameTe public static void adjacentFluidConditionTwoFluidNr1FluidPresentTest(GameTestHelper helper) { // Machine is at 1,1,1 so 0,1,1 and 1,1,0 are next to it helper.setBlock(new BlockPos(1, 1, 0), Blocks.WATER); - SimpleTieredMachine machine = (SimpleTieredMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(1, 1, 1))); + SimpleTieredMachine machine = (SimpleTieredMachine) helper.getBlockEntity(new BlockPos(1, 1, 1)); machine.setRecipeType(ROCK_BREAKER_RECIPE_TYPE); NotifiableItemStackHandler itemIn = (NotifiableItemStackHandler) machine @@ -176,8 +169,7 @@ public static void adjacentFluidConditionTwoFluidNr1FluidPresentTest(GameTestHel public static void adjacentFluidConditionTwoFluidNr2FluidPresentTest(GameTestHelper helper) { // Machine is at 1,1,1 so 0,1,1 and 1,1,0 are next to it helper.setBlock(new BlockPos(1, 1, 0), Blocks.LAVA); - SimpleTieredMachine machine = (SimpleTieredMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(1, 1, 1))); + SimpleTieredMachine machine = (SimpleTieredMachine) helper.getBlockEntity(new BlockPos(1, 1, 1)); machine.setRecipeType(ROCK_BREAKER_RECIPE_TYPE); NotifiableItemStackHandler itemIn = (NotifiableItemStackHandler) machine @@ -197,8 +189,7 @@ public static void adjacentFluidConditionTwoFluidNr2FluidPresentTest(GameTestHel // Test for checking if the rock breaker works when one of the two fluids are present @GameTest(template = "charged_hv_rock_breaker", batch = "AdjacentFluidCondition") public static void adjacentFluidConditionTwoFluidNoFluidPresentTest(GameTestHelper helper) { - SimpleTieredMachine machine = (SimpleTieredMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(1, 1, 1))); + SimpleTieredMachine machine = (SimpleTieredMachine) helper.getBlockEntity(new BlockPos(1, 1, 1)); machine.setRecipeType(ROCK_BREAKER_RECIPE_TYPE); NotifiableItemStackHandler itemIn = (NotifiableItemStackHandler) machine diff --git a/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java b/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java index c51176f3a4d..b5c84c1c22a 100644 --- a/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java +++ b/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java @@ -27,7 +27,6 @@ import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.RedstoneLampBlock; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.Nullable; @@ -264,16 +263,6 @@ public static void assertLampOff(GameTestHelper helper, BlockPos pos) { helper.assertBlockProperty(pos, RedstoneLampBlock.LIT, false); } - /** - * Shortcut function to cast a BE to a metamachine - * - * @param entity The BlockEntity - * @return the machine held, if any - */ - public static MetaMachine getMetaMachine(BlockEntity entity) { - return (MetaMachine) entity; - } - /** * Helper function to succeed after the test is over * diff --git a/src/test/java/com/gregtechceu/gtceu/integration/ae2/machine/PatternBufferTest.java b/src/test/java/com/gregtechceu/gtceu/integration/ae2/machine/PatternBufferTest.java index d1e7ca4a4f5..46f42cde0ea 100644 --- a/src/test/java/com/gregtechceu/gtceu/integration/ae2/machine/PatternBufferTest.java +++ b/src/test/java/com/gregtechceu/gtceu/integration/ae2/machine/PatternBufferTest.java @@ -34,8 +34,6 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; -import static com.gregtechceu.gtceu.gametest.util.TestUtils.getMetaMachine; - @PrefixGameTestTemplate(false) @GameTestHolder(GTCEu.MOD_ID) public class PatternBufferTest { @@ -67,20 +65,16 @@ private record BusHolder(ItemBusPartMachine inputBus1, ItemBusPartMachine inputB * @return the busses, in the BusHolder record. */ private static BusHolder getBussesAndForm(GameTestHelper helper) { - WorkableMultiblockMachine controller = (WorkableMultiblockMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(1, 2, 0))); + WorkableMultiblockMachine controller = (WorkableMultiblockMachine) helper.getBlockEntity(new BlockPos(1, 2, 0)); + assert controller != null; TestUtils.formMultiblock(controller); controller.setRecipeType(LCR_RECIPE_TYPE); - ItemBusPartMachine inputBus1 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(2, 1, 0))); - ItemBusPartMachine inputBus2 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(2, 2, 0))); - ItemBusPartMachine outputBus1 = (ItemBusPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 1, 0))); - FluidHatchPartMachine outputHatch1 = (FluidHatchPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(0, 2, 0))); - MEPatternBufferPartMachine patternBuffer = (MEPatternBufferPartMachine) getMetaMachine( - helper.getBlockEntity(new BlockPos(2, 2, 1))); + ItemBusPartMachine inputBus1 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(2, 1, 0)); + ItemBusPartMachine inputBus2 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(2, 2, 0)); + ItemBusPartMachine outputBus1 = (ItemBusPartMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); + FluidHatchPartMachine outputHatch1 = (FluidHatchPartMachine) helper.getBlockEntity(new BlockPos(0, 2, 0)); + MEPatternBufferPartMachine patternBuffer = (MEPatternBufferPartMachine) helper + .getBlockEntity(new BlockPos(2, 2, 1)); return new BusHolder(inputBus1, inputBus2, outputBus1, outputHatch1, patternBuffer, controller); } From 8ff7f6bcda782d7c7c4099beaedad9f6342ee6a1 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Tue, 6 Jan 2026 14:34:47 +1300 Subject: [PATCH 36/41] fix hammer drop conversion --- .../gtceu/api/item/tool/ToolHelper.java | 119 ++++++++++-------- .../gtceu/api/machine/trait/MachineTrait.java | 3 +- .../utils/DummyRecipeCapabilityHolder.java | 28 +++++ 3 files changed, 98 insertions(+), 52 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/utils/DummyRecipeCapabilityHolder.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java index 167415da721..f3e072705ee 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java @@ -3,16 +3,32 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IElectricItem; +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; +import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; +import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ToolProperty; +import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.item.IGTTool; import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; +import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; +import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.RecipeHelper; +import com.gregtechceu.gtceu.api.recipe.content.Content; +import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; +import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.data.GTMaterialItems; import com.gregtechceu.gtceu.common.data.GTMaterials; +import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.utils.DummyRecipeCapabilityHolder; +import com.gregtechceu.gtceu.utils.InfiniteEnergyContainer; import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -397,57 +413,58 @@ private static boolean isBlockAoEHarvestable(UseOnContext context) { public static void applyHammerDropConversion(ServerLevel world, BlockPos pos, ItemStack tool, BlockState state, List drops, int fortune, float dropChance, RandomSource random) { - // EnchantmentHelper.getEnchantmentLevel(EnchantmentHardHammer.INSTANCE, tool) - // if (is(tool, GTToolType.HARD_HAMMER)) { - // List silktouchDrops = getSilkTouchDrop(world, pos, state); - // for (ItemStack silktouchDrop : silktouchDrops) { - // if (silktouchDrop.isEmpty()) continue; - // // Stack lists can be immutable going into Recipe#matches barring no rewrites - // // Search for forge hammer recipes from all drops individually (only LV or under) - // - // DummyMachineBlockEntity be = new DummyMachineBlockEntity(GTValues.LV, - // GTRecipeTypes.FORGE_HAMMER_RECIPES, GTMachineUtils.defaultTankSizeFunction, - // Collections.emptyList()); - // RecipeHandlerList dummyInputs = RecipeHandlerList.of(IO.IN, - // new InfiniteEnergyContainer(be.getMetaMachine(), GTValues.V[GTValues.LV], - // GTValues.V[GTValues.LV], 1, GTValues.V[GTValues.LV], 1), - // new NotifiableItemStackHandler(be.getMetaMachine(), 1, IO.IN, IO.IN, - // (slots) -> new CustomItemStackHandler(silktouchDrop))); - // - // RecipeHandlerList dummyOutputs = RecipeHandlerList.of(IO.OUT, - // new NotifiableItemStackHandler(be.getMetaMachine(), 2, IO.OUT)); - // be.getMetaMachine().reinitializeHandlers(List.of(dummyInputs, dummyOutputs)); - // - // Iterator hammerRecipes = GTRecipeTypes.FORGE_HAMMER_RECIPES.searchRecipe(be.metaMachine, - // r -> RecipeHelper.matchContents(be.metaMachine, r).isSuccess()); - // GTRecipe hammerRecipe = !hammerRecipes.hasNext() ? null : hammerRecipes.next(); - // if (hammerRecipe != null && RecipeHelper.handleRecipeIO(be.metaMachine, hammerRecipe, IO.IN, - // be.getMetaMachine().recipeLogic.getChanceCaches()).isSuccess()) { - // drops.clear(); - // TagPrefix prefix = ChemicalHelper.getPrefix(silktouchDrop.getItem()); - // if (prefix.isEmpty()) { - // for (Content output : hammerRecipe.getOutputContents(ItemRecipeCapability.CAP)) { - // if (dropChance >= 1.0F || random.nextFloat() <= dropChance) { - // drops.add(SizedIngredient.copy(ItemRecipeCapability.CAP.of(output.content)) - // .getItems()[0]); - // } - // } - // } else if (TagPrefix.ORES.containsKey(prefix)) { - // for (Content content : hammerRecipe.getOutputContents(ItemRecipeCapability.CAP)) { - // if (dropChance >= 1.0F || random.nextFloat() <= dropChance) { - // ItemStack output = ItemRecipeCapability.CAP.of(content.content).getItems()[0]; - // // Only apply fortune on ore -> crushed forge hammer recipes - // if (ChemicalHelper.getPrefix(output.getItem()) == TagPrefix.crushed) { - // output = output.copy(); - // if (fortune > 0) output.grow(random.nextInt(fortune)); - // drops.add(output); - // } - // } - // } - // } - // } - // } - // } + if (is(tool, GTToolType.HARD_HAMMER)) { + List silktouchDrops = getSilkTouchDrop(world, pos, state); + for (ItemStack silktouchDrop : silktouchDrops) { + if (silktouchDrop.isEmpty()) continue; + // Stack lists can be immutable going into Recipe#matches barring no rewrites + // Search for forge hammer recipes from all drops individually (only LV or under) + + RecipeHandlerList dummyInputs = RecipeHandlerList.of(IO.IN, + new InfiniteEnergyContainer(null, GTValues.V[GTValues.LV], + GTValues.V[GTValues.LV], 1, GTValues.V[GTValues.LV], 1), + new NotifiableItemStackHandler(null, 1, IO.IN, IO.IN, + (slots) -> new CustomItemStackHandler(silktouchDrop))); + + RecipeHandlerList dummyOutputs = RecipeHandlerList.of(IO.OUT, + new NotifiableItemStackHandler(null, 2, IO.OUT)); + DummyRecipeCapabilityHolder capHolder = new DummyRecipeCapabilityHolder(dummyInputs, dummyOutputs); + + Map, Object2IntMap> cacheChances = new IdentityHashMap<>(); + for (RecipeCapability cap : GTRegistries.RECIPE_CAPABILITIES.values()) { + cacheChances.put(cap, cap.makeChanceCache()); + } + + + Iterator hammerRecipes = GTRecipeTypes.FORGE_HAMMER_RECIPES.searchRecipe(capHolder, + r -> RecipeHelper.matchContents(capHolder, r).isSuccess()); + GTRecipe hammerRecipe = !hammerRecipes.hasNext() ? null : hammerRecipes.next(); + if (hammerRecipe != null && RecipeHelper.handleRecipeIO(capHolder, hammerRecipe, IO.IN, cacheChances).isSuccess()) { + drops.clear(); + TagPrefix prefix = ChemicalHelper.getPrefix(silktouchDrop.getItem()); + if (prefix.isEmpty()) { + for (Content output : hammerRecipe.getOutputContents(ItemRecipeCapability.CAP)) { + if (dropChance >= 1.0F || random.nextFloat() <= dropChance) { + drops.add(SizedIngredient.copy(ItemRecipeCapability.CAP.of(output.content)) + .getItems()[0]); + } + } + } else if (TagPrefix.ORES.containsKey(prefix)) { + for (Content content : hammerRecipe.getOutputContents(ItemRecipeCapability.CAP)) { + if (dropChance >= 1.0F || random.nextFloat() <= dropChance) { + ItemStack output = ItemRecipeCapability.CAP.of(content.content).getItems()[0]; + // Only apply fortune on ore -> crushed forge hammer recipes + if (ChemicalHelper.getPrefix(output.getItem()) == TagPrefix.crushed) { + output = output.copy(); + if (fortune > 0) output.grow(random.nextInt(fortune)); + drops.add(output); + } + } + } + } + } + } + } } public static boolean breakBlockRoutine(ServerPlayer player, ItemStack tool, BlockPos pos, boolean playSound) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java index 65976e2c88f..27634252ad9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java @@ -31,7 +31,8 @@ public abstract class MachineTrait implements ISyncManaged { public MachineTrait(MetaMachine machine) { this.machine = machine; this.capabilityValidator = side -> true; - machine.attachTraits(this); + /// Machine should never be null, unless this trait is a recipe handler instantiated outside a machine for recipe search. + if (machine != null) machine.attachTraits(this); } public final boolean hasCapability(@Nullable Direction side) { diff --git a/src/main/java/com/gregtechceu/gtceu/utils/DummyRecipeCapabilityHolder.java b/src/main/java/com/gregtechceu/gtceu/utils/DummyRecipeCapabilityHolder.java new file mode 100644 index 00000000000..349fabeb36a --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/DummyRecipeCapabilityHolder.java @@ -0,0 +1,28 @@ +package com.gregtechceu.gtceu.utils; + +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.capability.recipe.IRecipeCapabilityHolder; +import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; +import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; +import lombok.Getter; + +import java.util.EnumMap; +import java.util.List; +import java.util.Map; + +public class DummyRecipeCapabilityHolder implements IRecipeCapabilityHolder { + + @Getter + protected final Map> capabilitiesProxy; + @Getter + protected final Map, List>>> capabilitiesFlat; + + public DummyRecipeCapabilityHolder(RecipeHandlerList... handlers) { + this.capabilitiesProxy = new EnumMap<>(IO.class); + this.capabilitiesFlat = new EnumMap<>(IO.class); + for (RecipeHandlerList handler : handlers) { + addHandlerList(handler); + } + } +} From 8f30fdba3d6e325bd10c03baaf2a7b6ada8dabd9 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Tue, 6 Jan 2026 14:41:43 +1300 Subject: [PATCH 37/41] fix ldp again --- .../jade/provider/LDPEndpointProvider.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/LDPEndpointProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/LDPEndpointProvider.java index 9ac7dfc3025..75610653aef 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/LDPEndpointProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/LDPEndpointProvider.java @@ -1,8 +1,6 @@ package com.gregtechceu.gtceu.integration.jade.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.common.machine.storage.LongDistanceEndpointMachine; import com.gregtechceu.gtceu.utils.FormattingUtil; @@ -21,9 +19,7 @@ public class LDPEndpointProvider implements IBlockComponentProvider, IServerData @Override public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { - if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { - MetaMachine machine = blockEntity.getMetaMachine(); - if (machine instanceof LongDistanceEndpointMachine) { + if (blockAccessor.getBlockEntity() instanceof LongDistanceEndpointMachine machine) { boolean isFormed = blockAccessor.getServerData().getBoolean("isFormed"); String ioType = blockAccessor.getServerData().getString("ioType"); String outputDirection = blockAccessor.getServerData().getString("outputDirection"); @@ -35,19 +31,15 @@ public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPlugi iTooltip.add(Component.translatable("gtceu.top.ldp_endpoint.output_direction", FormattingUtil.toEnglishName((outputDirection)))); } - } } @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { - if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { - MetaMachine machine = blockEntity.getMetaMachine(); - if (machine instanceof LongDistanceEndpointMachine ldpEndpoint) { + if (blockAccessor.getBlockEntity() instanceof LongDistanceEndpointMachine ldpEndpoint) { compoundTag.putBoolean("isFormed", ldpEndpoint.getLink() == null ? false : true); compoundTag.putString("ioType", ldpEndpoint.getIoType().getTooltip()); compoundTag.putString("outputDirection", ldpEndpoint.getOutputFacing().getName()); } - } } @Override From c5096cac366a2a9ce245c0eda83026fcbca13093 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Tue, 6 Jan 2026 14:45:35 +1300 Subject: [PATCH 38/41] spotless --- .../gtceu/api/item/tool/ToolHelper.java | 6 ++-- .../gtceu/api/machine/trait/MachineTrait.java | 3 +- .../jade/provider/LDPEndpointProvider.java | 30 +++++++++---------- .../utils/DummyRecipeCapabilityHolder.java | 1 + .../cover/AdvancedDetectorCoverTest.java | 1 - .../gtceu/common/cover/SolarPanelTest.java | 7 +---- 6 files changed, 22 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java index f3e072705ee..ac8df4a1755 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java @@ -26,9 +26,9 @@ import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import com.gregtechceu.gtceu.config.ConfigHolder; - import com.gregtechceu.gtceu.utils.DummyRecipeCapabilityHolder; import com.gregtechceu.gtceu.utils.InfiniteEnergyContainer; + import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -435,11 +435,11 @@ public static void applyHammerDropConversion(ServerLevel world, BlockPos pos, It cacheChances.put(cap, cap.makeChanceCache()); } - Iterator hammerRecipes = GTRecipeTypes.FORGE_HAMMER_RECIPES.searchRecipe(capHolder, r -> RecipeHelper.matchContents(capHolder, r).isSuccess()); GTRecipe hammerRecipe = !hammerRecipes.hasNext() ? null : hammerRecipes.next(); - if (hammerRecipe != null && RecipeHelper.handleRecipeIO(capHolder, hammerRecipe, IO.IN, cacheChances).isSuccess()) { + if (hammerRecipe != null && + RecipeHelper.handleRecipeIO(capHolder, hammerRecipe, IO.IN, cacheChances).isSuccess()) { drops.clear(); TagPrefix prefix = ChemicalHelper.getPrefix(silktouchDrop.getItem()); if (prefix.isEmpty()) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java index 27634252ad9..a72c7a58c62 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java @@ -31,7 +31,8 @@ public abstract class MachineTrait implements ISyncManaged { public MachineTrait(MetaMachine machine) { this.machine = machine; this.capabilityValidator = side -> true; - /// Machine should never be null, unless this trait is a recipe handler instantiated outside a machine for recipe search. + /// Machine should never be null, unless this trait is a recipe handler instantiated outside a machine for + /// recipe search. if (machine != null) machine.attachTraits(this); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/LDPEndpointProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/LDPEndpointProvider.java index 75610653aef..467ceeb10d3 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/LDPEndpointProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/LDPEndpointProvider.java @@ -20,26 +20,26 @@ public class LDPEndpointProvider implements IBlockComponentProvider, IServerData @Override public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { if (blockAccessor.getBlockEntity() instanceof LongDistanceEndpointMachine machine) { - boolean isFormed = blockAccessor.getServerData().getBoolean("isFormed"); - String ioType = blockAccessor.getServerData().getString("ioType"); - String outputDirection = blockAccessor.getServerData().getString("outputDirection"); - - iTooltip.add(Component.translatable( - isFormed ? "gtceu.top.ldp_endpoint.is_formed" : "gtceu.top.ldp_endpoint.not_formed")); - iTooltip.add(Component.translatable("gtceu.top.ldp_endpoint.io_type", Component.translatable(ioType) - .withStyle(ioType.contains("import") ? ChatFormatting.GREEN : ChatFormatting.RED))); - iTooltip.add(Component.translatable("gtceu.top.ldp_endpoint.output_direction", - FormattingUtil.toEnglishName((outputDirection)))); - } + boolean isFormed = blockAccessor.getServerData().getBoolean("isFormed"); + String ioType = blockAccessor.getServerData().getString("ioType"); + String outputDirection = blockAccessor.getServerData().getString("outputDirection"); + + iTooltip.add(Component.translatable( + isFormed ? "gtceu.top.ldp_endpoint.is_formed" : "gtceu.top.ldp_endpoint.not_formed")); + iTooltip.add(Component.translatable("gtceu.top.ldp_endpoint.io_type", Component.translatable(ioType) + .withStyle(ioType.contains("import") ? ChatFormatting.GREEN : ChatFormatting.RED))); + iTooltip.add(Component.translatable("gtceu.top.ldp_endpoint.output_direction", + FormattingUtil.toEnglishName((outputDirection)))); + } } @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { if (blockAccessor.getBlockEntity() instanceof LongDistanceEndpointMachine ldpEndpoint) { - compoundTag.putBoolean("isFormed", ldpEndpoint.getLink() == null ? false : true); - compoundTag.putString("ioType", ldpEndpoint.getIoType().getTooltip()); - compoundTag.putString("outputDirection", ldpEndpoint.getOutputFacing().getName()); - } + compoundTag.putBoolean("isFormed", ldpEndpoint.getLink() == null ? false : true); + compoundTag.putString("ioType", ldpEndpoint.getIoType().getTooltip()); + compoundTag.putString("outputDirection", ldpEndpoint.getOutputFacing().getName()); + } } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/utils/DummyRecipeCapabilityHolder.java b/src/main/java/com/gregtechceu/gtceu/utils/DummyRecipeCapabilityHolder.java index 349fabeb36a..16d42e98e65 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/DummyRecipeCapabilityHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/DummyRecipeCapabilityHolder.java @@ -5,6 +5,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; + import lombok.Getter; import java.util.EnumMap; diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/AdvancedDetectorCoverTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/AdvancedDetectorCoverTest.java index f7f6403c7ff..cd8c41f40c4 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/AdvancedDetectorCoverTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/AdvancedDetectorCoverTest.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.IWorkable; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.common.cover.detector.AdvancedFluidDetectorCover; import com.gregtechceu.gtceu.common.cover.detector.AdvancedItemDetectorCover; diff --git a/src/test/java/com/gregtechceu/gtceu/common/cover/SolarPanelTest.java b/src/test/java/com/gregtechceu/gtceu/common/cover/SolarPanelTest.java index 1d8f241ff86..c6745954560 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/cover/SolarPanelTest.java +++ b/src/test/java/com/gregtechceu/gtceu/common/cover/SolarPanelTest.java @@ -1,11 +1,6 @@ package com.gregtechceu.gtceu.common.cover; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.common.data.GTItems; -import com.gregtechceu.gtceu.common.data.GTMachines; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.common.machine.electric.BatteryBufferMachine; import net.minecraft.core.BlockPos; @@ -20,7 +15,7 @@ public class SolarPanelTest { private static BatteryBufferMachine getBatteryBuffer(GameTestHelper helper) { - return (BatteryBufferMachine)helper.getBlockEntity(new BlockPos(0, 1, 0)); + return (BatteryBufferMachine) helper.getBlockEntity(new BlockPos(0, 1, 0)); } @GameTest(template = "solar", batch = "coverTests") From 3d1c0a6843bf821d74f6cd988a7f8b98737d7900 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 9 Jan 2026 07:11:17 +1300 Subject: [PATCH 39/41] small fixes --- .../gtceu/api/block/MetaMachineBlock.java | 8 +------- .../gregtechceu/gtceu/api/machine/MetaMachine.java | 14 ++++++-------- .../api/machine/steam/SteamBoilerMachine.java | 3 ++- .../gtceu/api/machine/steam/SteamMachine.java | 13 ++++++++++--- .../api/machine/steam/SteamWorkableMachine.java | 9 ++++++++- 5 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java index 2817ff03126..f06f8e0b0f9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java @@ -328,12 +328,6 @@ public int getSignal(BlockState state, BlockGetter level, BlockPos pos, Directio return MetaMachine.getMachine(level, pos).getOutputSignal(direction); } - @Override - @SuppressWarnings("deprecation") // This is fine to override, just not to be called. - public int getDirectSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) { - return MetaMachine.getMachine(level, pos).getOutputDirectSignal(direction); - } - @Override @SuppressWarnings("deprecation") // This is fine to override, just not to be called. public int getAnalogOutputSignal(BlockState state, Level level, BlockPos pos) { @@ -385,7 +379,7 @@ public static int colorTinted(BlockState blockState, @Nullable BlockAndTintGette @Nullable @Override - public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + public final BlockEntity newBlockEntity(BlockPos pos, BlockState state) { return getDefinition().getBlockEntityType().create(pos, state); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index 51784493233..55bdd59e696 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -45,6 +45,7 @@ import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.utils.DummyWorld; +import lombok.AccessLevel; import net.minecraft.ChatFormatting; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.client.Minecraft; @@ -140,9 +141,12 @@ public class MetaMachine extends ManagedSyncBlockEntity implements IGregtechBloc @SyncToClient @RerenderOnChanged private MachineRenderState renderState; - @Getter + @Getter(value = AccessLevel.PROTECTED) private final long offset = GTValues.RNG.nextInt(20); + private final List serverTicks; + private final List waitingToAdd; + public MetaMachine(BlockEntityCreationInfo info) { super(info); this.renderState = getDefinition().defaultRenderState(); @@ -209,8 +213,6 @@ public void onUnload() { // ***** Tickable Manager ****// ////////////////////////////////////// - private final List serverTicks; - private final List waitingToAdd; /** * For initialization. To get level and property fields after auto sync, you can subscribe it in {@link #onLoad()} @@ -701,7 +703,7 @@ public void updateModelData(ModelData.Builder builder) { } } - public long getOffsetTimer() { + public final long getOffsetTimer() { if (getLevel() == null) return getOffset(); else if (getLevel().isClientSide()) return GTValues.CLIENT_TIME + getOffset(); @@ -729,10 +731,6 @@ public int getOutputSignal(@Nullable Direction side) { return cover.getRedstoneSignalOutput(); } - public int getOutputDirectSignal(@Nullable Direction side) { - // IDK what this does but MC wants it - return 0; - } public int getAnalogOutputSignal() { return 0; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java index 14137c88bfa..138956fbb1d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java @@ -13,6 +13,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.modifier.ModifierFunction; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; @@ -86,7 +87,7 @@ public abstract class SteamBoilerMachine extends SteamWorkableMachine protected ISubscription steamTankSubs; public SteamBoilerMachine(BlockEntityCreationInfo info, boolean isHighPressure) { - super(info, isHighPressure); + super(info, isHighPressure, RecipeLogic::new, m -> new NotifiableFluidTank(m, 1, 16 * FluidType.BUCKET_VOLUME, IO.OUT)); this.waterTank = createWaterTank(); this.waterTank.setFilter(fluid -> fluid.getFluid().is(GTMaterials.Water.getFluidTag())); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java index 9c1f2be2357..83e0c60c821 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java @@ -16,6 +16,7 @@ import lombok.Getter; import javax.annotation.ParametersAreNonnullByDefault; +import java.util.function.Function; @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault @@ -28,11 +29,17 @@ public abstract class SteamMachine extends MetaMachine implements ITieredMachine @SaveField public final NotifiableFluidTank steamTank; - public SteamMachine(BlockEntityCreationInfo info, boolean isHighPressure) { + public SteamMachine(BlockEntityCreationInfo info, boolean isHighPressure, Function steamTankFactory) { super(info); this.isHighPressure = isHighPressure; - this.steamTank = new NotifiableFluidTank(this, 1, 16 * FluidType.BUCKET_VOLUME, IO.IN) - .setFilter(f -> f.getFluid().is(GTMaterials.Steam.getFluidTag())); + this.steamTank = steamTankFactory.apply(this); + this.steamTank.setFilter(f -> f.getFluid().is(GTMaterials.Steam.getFluidTag())); + } + + public SteamMachine(BlockEntityCreationInfo info, boolean isHighPressure) { + this(info, isHighPressure, (m) -> + new NotifiableFluidTank(m, 1, 16 * FluidType.BUCKET_VOLUME, IO.IN) + ); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java index e5c0bfc601d..9d232bb2650 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java @@ -31,6 +31,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import lombok.Getter; import lombok.Setter; +import net.minecraftforge.fluids.FluidType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -74,7 +75,7 @@ public abstract class SteamWorkableMachine extends SteamMachine protected final List traitSubscriptions; public SteamWorkableMachine(BlockEntityCreationInfo info, boolean isHighPressure, - Function recipeLogicSupplier) { + Function recipeLogicSupplier, Function steamTankFactory) { super(info, isHighPressure); this.recipeTypes = getDefinition().getRecipeTypes(); this.activeRecipeType = 0; @@ -85,6 +86,12 @@ public SteamWorkableMachine(BlockEntityCreationInfo info, boolean isHighPressure this.outputFacing = hasFrontFacing() ? getFrontFacing().getOpposite() : Direction.UP; } + public SteamWorkableMachine(BlockEntityCreationInfo info, boolean isHighPressure, Function recipeLogicSupplier) { + this(info, isHighPressure, recipeLogicSupplier, (m) -> + new NotifiableFluidTank(m, 1, 16 * FluidType.BUCKET_VOLUME, IO.IN) + ); + } + public SteamWorkableMachine(BlockEntityCreationInfo info, boolean isHighPressure) { this(info, isHighPressure, RecipeLogic::new); } From 3b6102f97557be31496ff41f000417f7d2fda8f2 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 9 Jan 2026 07:18:21 +1300 Subject: [PATCH 40/41] spotless --- .../gregtechceu/gtceu/api/machine/MetaMachine.java | 4 +--- .../gtceu/api/machine/steam/SteamBoilerMachine.java | 3 ++- .../gtceu/api/machine/steam/SteamMachine.java | 10 +++++----- .../api/machine/steam/SteamWorkableMachine.java | 13 +++++++------ 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index 55bdd59e696..373b3d41d28 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -45,7 +45,6 @@ import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.utils.DummyWorld; -import lombok.AccessLevel; import net.minecraft.ChatFormatting; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.client.Minecraft; @@ -88,6 +87,7 @@ import appeng.api.networking.IInWorldGridNodeHost; import appeng.capabilities.Capabilities; import com.mojang.datafixers.util.Pair; +import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.MustBeInvokedByOverriders; @@ -213,7 +213,6 @@ public void onUnload() { // ***** Tickable Manager ****// ////////////////////////////////////// - /** * For initialization. To get level and property fields after auto sync, you can subscribe it in {@link #onLoad()} * event. @@ -731,7 +730,6 @@ public int getOutputSignal(@Nullable Direction side) { return cover.getRedstoneSignalOutput(); } - public int getAnalogOutputSignal() { return 0; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java index 138956fbb1d..2214cdc6ec9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java @@ -87,7 +87,8 @@ public abstract class SteamBoilerMachine extends SteamWorkableMachine protected ISubscription steamTankSubs; public SteamBoilerMachine(BlockEntityCreationInfo info, boolean isHighPressure) { - super(info, isHighPressure, RecipeLogic::new, m -> new NotifiableFluidTank(m, 1, 16 * FluidType.BUCKET_VOLUME, IO.OUT)); + super(info, isHighPressure, RecipeLogic::new, + m -> new NotifiableFluidTank(m, 1, 16 * FluidType.BUCKET_VOLUME, IO.OUT)); this.waterTank = createWaterTank(); this.waterTank.setFilter(fluid -> fluid.getFluid().is(GTMaterials.Water.getFluidTag())); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java index 83e0c60c821..9493b41ff55 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java @@ -15,9 +15,10 @@ import lombok.Getter; -import javax.annotation.ParametersAreNonnullByDefault; import java.util.function.Function; +import javax.annotation.ParametersAreNonnullByDefault; + @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class SteamMachine extends MetaMachine implements ITieredMachine { @@ -29,7 +30,8 @@ public abstract class SteamMachine extends MetaMachine implements ITieredMachine @SaveField public final NotifiableFluidTank steamTank; - public SteamMachine(BlockEntityCreationInfo info, boolean isHighPressure, Function steamTankFactory) { + public SteamMachine(BlockEntityCreationInfo info, boolean isHighPressure, + Function steamTankFactory) { super(info); this.isHighPressure = isHighPressure; this.steamTank = steamTankFactory.apply(this); @@ -37,9 +39,7 @@ public SteamMachine(BlockEntityCreationInfo info, boolean isHighPressure, Functi } public SteamMachine(BlockEntityCreationInfo info, boolean isHighPressure) { - this(info, isHighPressure, (m) -> - new NotifiableFluidTank(m, 1, 16 * FluidType.BUCKET_VOLUME, IO.IN) - ); + this(info, isHighPressure, (m) -> new NotifiableFluidTank(m, 1, 16 * FluidType.BUCKET_VOLUME, IO.IN)); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java index 9d232bb2650..144e8218a84 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java @@ -27,11 +27,11 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; +import net.minecraftforge.fluids.FluidType; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import lombok.Getter; import lombok.Setter; -import net.minecraftforge.fluids.FluidType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -75,7 +75,8 @@ public abstract class SteamWorkableMachine extends SteamMachine protected final List traitSubscriptions; public SteamWorkableMachine(BlockEntityCreationInfo info, boolean isHighPressure, - Function recipeLogicSupplier, Function steamTankFactory) { + Function recipeLogicSupplier, + Function steamTankFactory) { super(info, isHighPressure); this.recipeTypes = getDefinition().getRecipeTypes(); this.activeRecipeType = 0; @@ -86,10 +87,10 @@ public SteamWorkableMachine(BlockEntityCreationInfo info, boolean isHighPressure this.outputFacing = hasFrontFacing() ? getFrontFacing().getOpposite() : Direction.UP; } - public SteamWorkableMachine(BlockEntityCreationInfo info, boolean isHighPressure, Function recipeLogicSupplier) { - this(info, isHighPressure, recipeLogicSupplier, (m) -> - new NotifiableFluidTank(m, 1, 16 * FluidType.BUCKET_VOLUME, IO.IN) - ); + public SteamWorkableMachine(BlockEntityCreationInfo info, boolean isHighPressure, + Function recipeLogicSupplier) { + this(info, isHighPressure, recipeLogicSupplier, + (m) -> new NotifiableFluidTank(m, 1, 16 * FluidType.BUCKET_VOLUME, IO.IN)); } public SteamWorkableMachine(BlockEntityCreationInfo info, boolean isHighPressure) { From abcfac6341ed31951ea6a9fc17d86d1a5e69e40e Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 9 Jan 2026 08:02:47 +1300 Subject: [PATCH 41/41] render state fix --- .../com/gregtechceu/gtceu/api/machine/MetaMachine.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index 373b3d41d28..e6d2c52c5aa 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -136,7 +136,6 @@ public class MetaMachine extends ManagedSyncBlockEntity implements IGregtechBloc protected final List traits; @Getter - @Setter @SaveField @SyncToClient @RerenderOnChanged @@ -193,6 +192,14 @@ public void onLoad() { } } + public void setRenderState(MachineRenderState renderState) { + this.renderState = renderState; + if (level != null && !level.isClientSide) { + syncDataHolder.markClientSyncFieldDirty("renderState"); + } + scheduleRenderUpdate(); + } + @Override public final void setRemoved() { super.setRemoved();