getParts() {
}
/**
- * The instance of {@link ParallelHatchPartMachine} attached to this Controller.
+ * The instance of {@link ParallelHatchPartMachine} attached to this controller.
*
* Note that this will return a singular instance, and will not account for multiple attached IParallelHatches
*
@@ -375,7 +370,7 @@ public void asyncCheckPattern(long periodID) {
}
/**
- * Check MultiBlock Pattern. Just checking pattern without any other logic.
+ * Check Multiblock Pattern. Just checking pattern without any other logic.
* You can override it but it's unsafe for calling. because it will also be called in an async thread.
*
* you should always use {@link MultiblockControllerMachine#checkPatternWithLock()} )} and
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 c3cccb81f8a..fd9279b8834 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
@@ -13,10 +13,10 @@
import com.gregtechceu.gtceu.api.sync_system.annotations.SyncToClient;
import com.gregtechceu.gtceu.client.model.machine.MachineRenderState;
-import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel;
+import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.block.state.BlockState;
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
@@ -27,10 +27,9 @@
import java.util.*;
-import javax.annotation.ParametersAreNonnullByDefault;
-
-@ParametersAreNonnullByDefault
-@MethodsReturnNonnullByDefault
+/**
+ * The base class for all multiblock parts
+ */
public class MultiblockPartMachine extends MetaMachine implements IMultiPart {
@SyncToClient
@@ -161,8 +160,19 @@ public boolean replacePartModelWhenFormed() {
@Override
@Nullable
- public BlockState getFormedAppearance(BlockState sourceState, BlockPos sourcePos, Direction side) {
+ public BlockState getFormedAppearance(@Nullable BlockState sourceState, @Nullable BlockPos sourcePos,
+ Direction side) {
if (!replacePartModelWhenFormed()) return null;
return IMultiPart.super.getFormedAppearance(sourceState, sourcePos, side);
}
+
+ @Override
+ public BlockState getBlockAppearance(BlockState state, BlockAndTintGetter level, BlockPos pos, Direction side,
+ @Nullable BlockState sourceState, @Nullable BlockPos sourcePos) {
+ if (isFormed()) {
+ var appearance = getFormedAppearance(sourceState, sourcePos, side);
+ if (appearance != null) return appearance;
+ }
+ return super.getBlockAppearance(state, level, pos, side, sourceState, sourcePos);
+ }
}
diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/package-info.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/package-info.java
new file mode 100644
index 00000000000..64751bacff2
--- /dev/null
+++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/package-info.java
@@ -0,0 +1,4 @@
+@NotNullByDefault
+package com.gregtechceu.gtceu.api.machine.multiblock.part;
+
+import org.jetbrains.annotations.NotNullByDefault;
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 157f5d80b25..e28634e50e4 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
@@ -36,6 +36,9 @@
import java.util.*;
+/**
+ * A singleblock steam machine with recipe logic and item IO.
+ */
public class SimpleSteamMachine extends SteamWorkableMachine implements IUIMachine {
@SaveField
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 9db36b37152..5d7943b3bed 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
@@ -9,16 +9,14 @@
import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField;
import com.gregtechceu.gtceu.common.data.GTMaterials;
-import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraftforge.fluids.FluidType;
import lombok.Getter;
-import javax.annotation.ParametersAreNonnullByDefault;
-
-@ParametersAreNonnullByDefault
-@MethodsReturnNonnullByDefault
+/**
+ * A singleblock machine with a steam tank.
+ */
public abstract class SteamMachine extends MetaMachine implements ITieredMachine {
public static final BooleanProperty STEEL_PROPERTY = GTMachineModelProperties.IS_STEEL_MACHINE;
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 5c55b48e2e0..68a90d4de2b 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
@@ -33,6 +33,9 @@
import java.util.*;
+/**
+ * A singleblock steam machine with recipe logic.
+ */
public abstract class SteamWorkableMachine extends SteamMachine
implements IRecipeLogicMachine, IMufflableMachine {
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 aa0caefc9bd..c6d8669b9b4 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
@@ -8,7 +8,6 @@
import com.gregtechceu.gtceu.common.machine.trait.AutoOutputTrait;
import com.gregtechceu.gtceu.common.machine.trait.CleanroomProviderTrait;
-import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.level.Level;
@@ -16,19 +15,23 @@
import lombok.Getter;
import lombok.Setter;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.function.Predicate;
/**
- * A machine trait represents a generic capability or behaviour that is attached to a machine.
+ * A machine trait represents a generic capability or behaviour that is attached to a machine.
+ *
* For example, machine traits may provide a recipe handler that can handle specific inputs/outputs of a recipe (e.g.
- * {@link NotifiableItemStackHandler for items}).
+ * {@link NotifiableItemStackHandler} for items).
* Machine traits can also attach additional behaviours to a machine (e.g. {@link AutoOutputTrait},
- * {@link CleanroomProviderTrait})
+ * {@link CleanroomProviderTrait})
+ *
+ * If a machine trait implements a capability interface, the trait will be returned by {@link MetaMachine#getCapability}
+ * if the machine trait's capability validator prediate is true for that side.
*/
-@MethodsReturnNonnullByDefault
public abstract class MachineTrait implements ISyncManaged {
@Getter
@@ -37,15 +40,15 @@ public abstract class MachineTrait implements ISyncManaged {
private @Nullable MetaMachine machine;
@Setter
protected Predicate<@Nullable Direction> capabilityValidator = $ -> true;
+
+ /**
+ * The trait's callback priority. Traits with a higher priority will have their events fired
+ * first, which may prevent traits with a lower priority from handling some events.
+ */
@Getter
@Setter
private int traitPriority = 1;
- public MachineTrait(MetaMachine machine) {
- this.capabilityValidator = side -> true;
- machine.getTraitHolder().attachTrait(this);
- }
-
public MachineTrait() {}
public MetaMachine getMachine() {
@@ -63,6 +66,7 @@ protected List> validMachineClasses() {
return List.of();
}
+ @ApiStatus.Internal
public void setMachine(MetaMachine machine) {
if (this.machine != null) throw new IllegalStateException("Machine trait already attached to a machine.");
if (!validMachineClasses().isEmpty() &&
@@ -117,11 +121,29 @@ public void scheduleRenderUpdate() {
getMachine().scheduleRenderUpdate();
}
+ /**
+ * Called when the machine is loaded. The entire world is not loaded when this method is called.
+ * To schedule code to run on the first full world tick, do
+ * {@code serverLevel.getServer().tell(new TickTask(0, CALLBACK))}
+ */
public void onMachineLoad() {}
+ /**
+ * Called when the machine is about to be unloaded.
+ */
public void onMachineUnload() {}
+ /**
+ * Called when the machine is destroyed.
+ */
public void onMachineDestroyed() {}
- public void onMachineNeighborChanged(Block block, BlockPos fromPos, boolean isMoving) {}
+ /**
+ * Called when a neighboring block is updated.
+ *
+ * @param neighborBlock The neighbor block type.
+ * @param neighborPos The neighbor position.
+ * @param isMoving If the neighbor block is moving (e.g. moved by a piston)
+ */
+ public void onMachineNeighborChanged(Block neighborBlock, BlockPos neighborPos, boolean isMoving) {}
}
diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTraitHolder.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTraitHolder.java
index 8447500dc54..decb4702f2e 100644
--- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTraitHolder.java
+++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTraitHolder.java
@@ -57,6 +57,8 @@ public T attachTrait(T trait) {
* @return The attached trait
*/
public T attachTrait(T trait, int callbackPriority) {
+ trait.setTraitPriority(callbackPriority);
+
var traitType = trait.getTraitType();
var list = traitsByType.computeIfAbsent(traitType, $ -> new ObjectArrayList<>(1));
diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTraitType.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTraitType.java
index aeb337615c7..b3a2fc7795b 100644
--- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTraitType.java
+++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTraitType.java
@@ -1,17 +1,15 @@
package com.gregtechceu.gtceu.api.machine.trait;
-import org.jetbrains.annotations.NotNull;
-
public final class MachineTraitType {
private final Class clazz;
private final boolean allowMultipleInstances;
- public MachineTraitType(@NotNull Class clazz) {
+ public MachineTraitType(Class clazz) {
this(clazz, true);
}
- public MachineTraitType(@NotNull Class clazz, boolean allowMultipleInstances) {
+ public MachineTraitType(Class clazz, boolean allowMultipleInstances) {
this.clazz = clazz;
this.allowMultipleInstances = allowMultipleInstances;
}
@@ -20,7 +18,7 @@ public boolean allowsMultipleInstances() {
return allowMultipleInstances;
}
- public @NotNull T castTrait(@NotNull MachineTrait trait) {
+ public T castTrait(MachineTrait trait) {
return clazz.cast(trait);
}
}
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 34d456bc761..0e3d5c0299a 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
@@ -50,11 +50,11 @@ public void serverTick() {
long amperesUsed = 0;
for (Direction side : GTUtil.DIRECTIONS) {
if (!outputsEnergy(side)) continue;
- BlockEntity tileEntity = getMachine().getLevel().getBlockEntity(getMachine().getBlockPos().relative(side));
+ BlockEntity be = getMachine().getLevel().getBlockEntity(getMachine().getBlockPos().relative(side));
Direction oppositeSide = side.getOpposite();
ILaserContainer laserContainer = GTCapabilityHelper.getLaser(getMachine().getLevel(),
getMachine().getBlockPos().relative(side), oppositeSide);
- if (tileEntity != null && laserContainer != null) {
+ if (be != null && laserContainer != null) {
if (!laserContainer.inputsEnergy(oppositeSide)) continue;
amperesUsed += laserContainer.acceptEnergyFromNetwork(oppositeSide, outputVoltage,
outputAmperes - amperesUsed);
diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/IFrontFacingTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/IFrontFacingTrait.java
index cff3a98b3fb..d3830476bb5 100644
--- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/IFrontFacingTrait.java
+++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/IFrontFacingTrait.java
@@ -9,6 +9,9 @@ public interface IFrontFacingTrait {
/**
* Returns if a machine can be rotated to be facing the given direction.
+ *
+ * @param direction The direction to check
+ * @return If the provided direction is a valid facing direction
*/
default boolean isValidFrontFace(Direction direction) {
return true;
diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/IInteractionTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/IInteractionTrait.java
index aa1b4601f9d..d5ae3ed82b8 100644
--- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/IInteractionTrait.java
+++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/IInteractionTrait.java
@@ -3,9 +3,13 @@
import com.gregtechceu.gtceu.api.item.tool.GTToolType;
import com.gregtechceu.gtceu.utils.ExtendedUseOnContext;
+import net.minecraft.core.Direction;
+import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
+import net.minecraft.world.entity.player.Player;
import com.mojang.datafixers.util.Pair;
+import org.jetbrains.annotations.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
@@ -13,15 +17,42 @@
* A machine trait that provides special interaction behaviour.
*/
@ParametersAreNonnullByDefault
-public interface IInteractionTrait extends ITraitFeature {
+public interface IInteractionTrait {
- /// Called when a player interacts with a machine without an item.
+ /**
+ * Called when a machine is right clicked without an item, or if this machine was clicked with an item but no
+ * item-specific interaction was performed.
+ *
+ * @param context The context which this interaction is being performed from.
+ * @return The result of this interaction callback.
+ */
default InteractionResult onUse(ExtendedUseOnContext context) {
return InteractionResult.PASS;
}
- /// Called when a player interacts with a machine with a tool.
- default Pair onToolClick(ExtendedUseOnContext context) {
+ /**
+ * Called when a player clicks this machine with a GT tool
+ *
+ * @param context The context of this interaction.
+ * @return A pair containing the type of the tool (if the interaction was successful), and the result of the
+ * interaction.
+ * {@link InteractionResult#sidedSuccess(boolean)} will play the tool sound (based on the first element of
+ * the pair) and consume
+ * durability.
+ */
+ default Pair<@Nullable GTToolType, InteractionResult> onToolClick(ExtendedUseOnContext context) {
return Pair.of(null, InteractionResult.PASS);
}
+
+ /**
+ * Called when a machine is left clicked.
+ *
+ * @param player Player that clicked
+ * @param hand Player hand
+ * @param face Clicked face
+ * @return true to cancel the click event, false to continue processing
+ */
+ default boolean onLeftClick(Player player, InteractionHand hand, @Nullable Direction face) {
+ return false;
+ }
}
diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/IRedstoneSignalTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/IRedstoneSignalTrait.java
new file mode 100644
index 00000000000..0a6698c59ce
--- /dev/null
+++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/IRedstoneSignalTrait.java
@@ -0,0 +1,48 @@
+package com.gregtechceu.gtceu.api.machine.trait.feature;
+
+import net.minecraft.core.Direction;
+
+import org.jetbrains.annotations.Nullable;
+
+// Trait for adding custom redstone signal outputs
+public interface IRedstoneSignalTrait {
+
+ /**
+ * Gets the redstone output signal at a specific side
+ *
+ * @param side Side
+ * @return Output signal
+ */
+ default int getOutputSignal(@Nullable Direction side) {
+ return 0;
+ }
+
+ /**
+ * Gets the direct output signal at a specific side
+ *
+ * @param side Side
+ * @return Direct output signal
+ */
+ default int getOutputDirectSignal(@Nullable Direction side) {
+ return 0;
+ }
+
+ /**
+ * Gets the analog (comparator) output signal
+ *
+ * @return Analog output signal.
+ */
+ default int getAnalogOutputSignal() {
+ return 0;
+ }
+
+ /**
+ * Returns if redstone can be connected to a specific side of this machine
+ *
+ * @param side The side to check
+ * @return If redstone can be connected
+ */
+ default boolean canConnectRedstone(Direction side) {
+ return false;
+ }
+}
diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/IRenderingTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/IRenderingTrait.java
index bdf175dd2b2..6a2dc1a9296 100644
--- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/IRenderingTrait.java
+++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/IRenderingTrait.java
@@ -9,22 +9,25 @@
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.state.BlockState;
-import net.minecraftforge.client.model.data.ModelData;
import org.jetbrains.annotations.Nullable;
import java.util.Set;
-import javax.annotation.ParametersAreNonnullByDefault;
-
/**
* A machine trait that overrides some of the default machine rendering behaviour.
*/
-@ParametersAreNonnullByDefault
-public interface IRenderingTrait extends ITraitFeature {
+public interface IRenderingTrait {
/**
- * Called when a player is looking at this machine, returns whether the grid overlay should be rendered.
+ * Called to determine if the grid overlay should be rendered on this machine.
+ *
+ * @param player Player looking at this machine
+ * @param pos Block pos
+ * @param state Block state
+ * @param held Item that player is holding
+ * @param toolTypes The GT tool types of the held item, if any
+ * @return If the grid overlay should be drawn on the machine.
*/
default boolean shouldRenderGridOverlay(Player player, BlockPos pos, BlockState state, ItemStack held,
Set toolTypes) {
@@ -34,12 +37,17 @@ default boolean shouldRenderGridOverlay(Player player, BlockPos pos, BlockState
/**
* Called when the machine grid overlay is being rendered to determine the icon to be rendered within the grid
* segment on a specifc side.
+ *
+ * @param player Player looking at this machine
+ * @param pos Block pos
+ * @param state Block state
+ * @param toolTypes The GT tool types of the held item, if any
+ * @param side The machine side which this grid segment correspond to
+ * @return The icon to be rendered, or null
*/
default @Nullable ResourceTexture getGridOverlayIcon(Player player, BlockPos pos, BlockState state,
Set toolTypes,
Direction side) {
return null;
}
-
- default void updateModelData(ModelData.Builder builder) {}
}
diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/ITraitFeature.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/ITraitFeature.java
deleted file mode 100644
index 93694f7d2ea..00000000000
--- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/ITraitFeature.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package com.gregtechceu.gtceu.api.machine.trait.feature;
-
-//// Represents an aspect of MetaMachine behaviour which this trait modifies.
-public interface ITraitFeature {}
diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/package-info.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/package-info.java
new file mode 100644
index 00000000000..678ae8f66f5
--- /dev/null
+++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/feature/package-info.java
@@ -0,0 +1,4 @@
+@NotNullByDefault
+package com.gregtechceu.gtceu.api.machine.trait.feature;
+
+import org.jetbrains.annotations.NotNullByDefault;
diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/multiblock/MultiblockMachineTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/multiblock/MultiblockMachineTrait.java
index 0b745590200..ebf65460b7a 100644
--- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/multiblock/MultiblockMachineTrait.java
+++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/multiblock/MultiblockMachineTrait.java
@@ -5,6 +5,9 @@
import java.util.List;
+/**
+ * A machine trait that is specific to multiblock controllers.
+ */
public abstract class MultiblockMachineTrait extends MachineTrait {
public MultiblockMachineTrait() {
@@ -21,7 +24,17 @@ protected List> validMachineClasses() {
return List.of(MultiblockControllerMachine.class);
}
+ /**
+ * Called when the multiblock structure is formed
+ *
+ * @see MultiblockControllerMachine#onStructureFormed()
+ */
public void onStructureFormed() {}
+ /**
+ * Called when the multiblock structure becomes invalid
+ *
+ * @see MultiblockControllerMachine#onStructureInvalid()
+ */
public void onStructureInvalid() {}
}
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 afe594b39f5..22664ab9ad8 100644
--- a/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java
+++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java
@@ -148,7 +148,7 @@ public boolean checkPatternAt(MultiblockState worldState, BlockPos centerPos, Di
}
}
boolean canPartShared = true;
- if (worldState.getTileEntity() instanceof IMultiPart part) { // add detected parts
+ if (worldState.getBlockEntity() instanceof IMultiPart part) { // add detected parts
if (!predicate.isAny()) {
if (part.isFormed() && !part.canShared() &&
!part.hasController(worldState.controllerPos)) { // check part can be shared
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 1cb071051bf..126686748a1 100644
--- a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java
+++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java
@@ -34,8 +34,8 @@ public class MultiblockState {
private BlockPos pos;
private BlockState blockState;
- private BlockEntity tileEntity;
- private boolean tileEntityInitialized;
+ private BlockEntity blockEntity;
+ private boolean blockEntityInitialized;
@Getter
private final PatternMatchContext matchContext;
@Getter
@@ -72,8 +72,8 @@ public void clean() {
public boolean update(BlockPos posIn, TraceabilityPredicate predicate) {
this.pos = posIn;
this.blockState = null;
- this.tileEntity = null;
- this.tileEntityInitialized = false;
+ this.blockEntity = null;
+ this.blockEntityInitialized = false;
this.predicate = predicate;
this.error = null;
if (!world.isLoaded(posIn)) {
@@ -116,16 +116,16 @@ public BlockState getBlockState() {
}
@Nullable
- public BlockEntity getTileEntity() {
+ public BlockEntity getBlockEntity() {
if (!getBlockState().hasBlockEntity()) {
return null;
}
- if (this.tileEntity == null && !this.tileEntityInitialized) {
- this.tileEntity = this.world.getBlockEntity(this.pos);
- this.tileEntityInitialized = true;
+ if (this.blockEntity == null && !this.blockEntityInitialized) {
+ this.blockEntity = this.world.getBlockEntity(this.pos);
+ this.blockEntityInitialized = true;
}
- return this.tileEntity;
+ return this.blockEntity;
}
public BlockPos getPos() {
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 fcbab48ad80..e81b9250100 100644
--- a/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java
+++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java
@@ -314,8 +314,8 @@ public static TraceabilityPredicate frames(Material... frameMaterials) {
.toArray(Block[]::new);
return blocks(frameBlocks)
.or(new TraceabilityPredicate(blockWorldState -> {
- BlockEntity tileEntity = blockWorldState.getTileEntity();
- if (!(tileEntity instanceof IPipeNode, ?> pipeNode)) {
+ BlockEntity blockEntity = blockWorldState.getBlockEntity();
+ if (!(blockEntity instanceof IPipeNode, ?> pipeNode)) {
return false;
}
return ArrayUtils.contains(frameMaterials, pipeNode.getFrameMaterial());
diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/predicates/SimplePredicate.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/predicates/SimplePredicate.java
index 552d450fed2..ab60fec77fc 100644
--- a/src/main/java/com/gregtechceu/gtceu/api/pattern/predicates/SimplePredicate.java
+++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/predicates/SimplePredicate.java
@@ -132,9 +132,9 @@ private boolean checkInnerConditions(MultiblockState blockWorldState) {
}
}
if (nbtParser != null && !blockWorldState.world.isClientSide) {
- BlockEntity te = blockWorldState.getTileEntity();
- if (te != null) {
- CompoundTag nbt = te.saveWithFullMetadata();
+ BlockEntity be = blockWorldState.getBlockEntity();
+ if (be != null) {
+ CompoundTag nbt = be.saveWithFullMetadata();
if (Pattern.compile(nbtParser).matcher(nbt.toString()).find()) {
return true;
}
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 17cea8f68f7..4ac73a8aeba 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
@@ -79,8 +79,8 @@ default boolean isOutput() {
@Nullable
static ILDEndpoint tryGet(LevelAccessor world, BlockPos pos) {
- BlockEntity te = world.getBlockEntity(pos);
- if (te instanceof ILDEndpoint endpoint) {
+ BlockEntity be = world.getBlockEntity(pos);
+ if (be instanceof ILDEndpoint endpoint) {
return endpoint;
}
return null;
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 c4bdbffa385..f690a0a418b 100644
--- a/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java
+++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java
@@ -432,7 +432,7 @@ private static void renderBlocks(TrackedDummyWorld level, PoseStack poseStack, B
BlockState state = level.getBlockState(pos);
FluidState fluidState = state.getFluidState();
Block block = state.getBlock();
- BlockEntity te = level.getBlockEntity(pos);
+ BlockEntity be = level.getBlockEntity(pos);
if (block == Blocks.AIR) continue;
diff --git a/src/main/java/com/gregtechceu/gtceu/common/blockentity/ItemPipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/common/blockentity/ItemPipeBlockEntity.java
index c756537a1a8..2faca820792 100644
--- a/src/main/java/com/gregtechceu/gtceu/common/blockentity/ItemPipeBlockEntity.java
+++ b/src/main/java/com/gregtechceu/gtceu/common/blockentity/ItemPipeBlockEntity.java
@@ -139,7 +139,7 @@ public void resetTransferred() {
* }
* }
*
- * if it was in a ticking TileEntity
+ * if it was in a ticking BlockEntity
*/
private void updateTransferredState() {
long currentTime = getLevelTime();
diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java
index e940e453965..4eec280e777 100644
--- a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java
+++ b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java
@@ -21,7 +21,6 @@
import net.minecraft.network.chat.Component;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
-import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.capability.IFluidHandler;
@@ -120,13 +119,6 @@ public InteractionResult onSoftMalletClick(ExtendedUseOnContext context) {
return InteractionResult.sidedSuccess(isRemote());
}
- // TODO: Decide grid behavior
- @Override
- public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, ItemStack held,
- Set toolTypes) {
- return super.shouldRenderGrid(player, pos, state, held, toolTypes);
- }
-
@Override
public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes,
Direction side) {
diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/ItemVoidingCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/ItemVoidingCover.java
index 1a7740d401a..2c2a672d5ca 100644
--- a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/ItemVoidingCover.java
+++ b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/ItemVoidingCover.java
@@ -116,13 +116,6 @@ public InteractionResult onSoftMalletClick(ExtendedUseOnContext context) {
return InteractionResult.sidedSuccess(isRemote());
}
- // TODO: Decide grid behavior
- @Override
- public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, ItemStack held,
- Set toolTypes) {
- return super.shouldRenderGrid(player, pos, state, held, toolTypes);
- }
-
@Override
public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes,
Direction side) {
diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/behavior/PortableScannerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/behavior/PortableScannerBehavior.java
index cd7e83e856c..54db194be9a 100644
--- a/src/main/java/com/gregtechceu/gtceu/common/item/behavior/PortableScannerBehavior.java
+++ b/src/main/java/com/gregtechceu/gtceu/common/item/behavior/PortableScannerBehavior.java
@@ -156,7 +156,7 @@ protected DisplayMode getMode(ItemStack stack) {
}
public int addScannerInfo(Player player, Level level, BlockPos pos, DisplayMode mode, List list) {
- BlockEntity tileEntity = level.getBlockEntity(pos);
+ BlockEntity blockEntity = level.getBlockEntity(pos);
int energyCost = 0;
BlockState state = level.getBlockState(pos);
@@ -195,7 +195,7 @@ public int addScannerInfo(Player player, Level level, BlockPos pos, DisplayMode
}
}
- if (tileEntity instanceof MetaMachine machine) {
+ if (blockEntity instanceof MetaMachine machine) {
list.add(Component.translatable(state.getBlock().getDescriptionId()).withStyle(ChatFormatting.BLUE));
@@ -216,7 +216,7 @@ public int addScannerInfo(Player player, Level level, BlockPos pos, DisplayMode
}
// Fluid tanks
- Optional fluidCap = tileEntity.getCapability(ForgeCapabilities.FLUID_HANDLER).resolve();
+ Optional fluidCap = blockEntity.getCapability(ForgeCapabilities.FLUID_HANDLER).resolve();
if (fluidCap.isPresent()) {
list.add(Component.translatable("behavior.portable_scanner.divider"));
IFluidHandler fluidHandler = fluidCap.get();
@@ -260,7 +260,7 @@ public int addScannerInfo(Player player, Level level, BlockPos pos, DisplayMode
if (mode == DisplayMode.SHOW_ALL || mode == DisplayMode.SHOW_ELECTRICAL_INFO) {
// Energy container
- Optional energyCap = tileEntity
+ Optional energyCap = blockEntity
.getCapability(GTCapability.CAPABILITY_ENERGY_CONTAINER).resolve();
if (energyCap.isPresent()) {
IEnergyContainer energyContainer = energyCap.get();
@@ -343,8 +343,8 @@ public int addScannerInfo(Player player, Level level, BlockPos pos, DisplayMode
// machine-specific info
IDataInfoProvider provider = null;
- if (tileEntity instanceof IDataInfoProvider)
- provider = (IDataInfoProvider) tileEntity;
+ if (blockEntity instanceof IDataInfoProvider)
+ provider = (IDataInfoProvider) blockEntity;
else if (machine instanceof IDataInfoProvider)
provider = (IDataInfoProvider) machine;
@@ -353,22 +353,22 @@ else if (machine instanceof IDataInfoProvider)
list.addAll(provider.getDataInfo(mode));
}
- } else if (tileEntity instanceof PipeBlockEntity, ?> pipe) {
+ } else if (blockEntity instanceof PipeBlockEntity, ?> pipe) {
// Pipes need special name handling
list.add(pipe.getPipeBlock().getName().withStyle(ChatFormatting.BLUE));
// Pipe-specific info
- if (tileEntity instanceof IDataInfoProvider dataInfoProvider) {
+ if (blockEntity instanceof IDataInfoProvider dataInfoProvider) {
list.add(Component.translatable("behavior.portable_scanner.divider"));
list.addAll(dataInfoProvider.getDataInfo(mode));
}
- if (tileEntity instanceof FluidPipeBlockEntity) {
+ if (blockEntity instanceof FluidPipeBlockEntity) {
// Getting fluid info always costs 500
energyCost += 500;
}
- } else if (tileEntity instanceof IDataInfoProvider dataInfoProvider) {
+ } else if (blockEntity instanceof IDataInfoProvider dataInfoProvider) {
list.add(Component.translatable("behavior.portable_scanner.divider"));
list.addAll(dataInfoProvider.getDataInfo(mode));
} else {
@@ -438,7 +438,7 @@ else if (machine instanceof IDataInfoProvider)
}
// Add optional debug info
- if (tileEntity instanceof IDataInfoProvider dataInfoProvider) {
+ if (blockEntity instanceof IDataInfoProvider dataInfoProvider) {
List debugInfo = dataInfoProvider.getDebugInfo(player, debugLevel, mode);
if (debugInfo != null) {
list.addAll(debugInfo);
@@ -446,7 +446,7 @@ else if (machine instanceof IDataInfoProvider)
}
if (mode == DisplayMode.SHOW_INTERNAL_JAVA_INFO &&
- tileEntity instanceof ManagedSyncBlockEntity syncBlockEntity) {
+ blockEntity instanceof ManagedSyncBlockEntity syncBlockEntity) {
MetaMachine machine = (syncBlockEntity instanceof MetaMachine m) ? m : null;
PipeBlockEntity, ?> pipe = (syncBlockEntity instanceof PipeBlockEntity, ?> p) ? p : null;
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 9c50b46bfb0..1753106e602 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
@@ -49,9 +49,9 @@ public boolean canPerformAction(ItemStack stack, ToolAction action) {
public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) {
Level level = context.getLevel();
BlockPos pos = context.getClickedPos();
- BlockEntity te = level.getBlockEntity(pos);
- // MTEs have special handling on rotation
- if (te instanceof MetaMachine) {
+ BlockEntity be = level.getBlockEntity(pos);
+ // Machines have special handling on rotation
+ if (be instanceof MetaMachine) {
return InteractionResult.PASS;
}
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 82966b9e9f7..b674b5520e0 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
@@ -409,7 +409,7 @@ protected TraceabilityPredicate innerPredicate() {
Set receivers = blockWorldState.getMatchContext().getOrCreate("cleanroomReceiver",
Sets::newHashSet);
// all non-GTMachines are allowed inside by default
- BlockEntity blockEntity = blockWorldState.getTileEntity();
+ BlockEntity blockEntity = blockWorldState.getBlockEntity();
if (blockEntity instanceof MetaMachine machine) {
if (isMachineBanned(machine)) {
return false;
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 be745807be5..9b6f0253233 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
@@ -67,12 +67,12 @@ public boolean isRecipeAvailable(@NotNull GTRecipe recipe, @NotNull Collection onToolClick(ExtendedUseOnContext context) {
+ public Pair<@Nullable GTToolType, InteractionResult> onToolClick(ExtendedUseOnContext context) {
var toolType = context.getToolType();
if (useDefaultToolHandlers) {
if (toolType.contains(GTToolType.WRENCH)) {
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 c6c0d31ed3b..963ac93d9cf 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
@@ -44,7 +44,7 @@ public BedrockOreMinerMachine getMachine() {
@Override
protected List> validMachineClasses() {
- return List.of(BedrockOreMinerLogic.class);
+ return List.of(BedrockOreMinerMachine.class);
}
@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 afb2f6edb14..b1af429b9ef 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
@@ -40,7 +40,6 @@
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import lombok.Getter;
import lombok.Setter;
-import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.*;
@@ -113,8 +112,7 @@ public class MinerLogic extends RecipeLogic implements IRecipeCapabilityHolder {
private final Map> capabilitiesProxy;
@Getter
protected final Map, List>>> capabilitiesFlat;
- private final ItemRecipeHandler inputItemHandler, outputItemHandler;
- private final IgnoreEnergyRecipeHandler inputEnergyHandler;
+ private @Nullable ItemRecipeHandler inputItemHandler, outputItemHandler;
@Setter
@Getter
private Direction dir = Direction.DOWN;
@@ -136,17 +134,6 @@ public MinerLogic(int fortune, int speed, int maximumRadius) {
this.pickaxeTool = GTMaterialItems.TOOL_ITEMS.get(GTMaterials.Neutronium, GTToolType.PICKAXE).get().get();
this.capabilitiesProxy = new EnumMap<>(IO.class);
this.capabilitiesFlat = new EnumMap<>(IO.class);
- this.inputItemHandler = new ItemRecipeHandler(IO.IN,
- getRLMachine().getRecipeType().getMaxInputs(ItemRecipeCapability.CAP));
- this.outputItemHandler = new ItemRecipeHandler(IO.OUT,
- getRLMachine().getRecipeType().getMaxOutputs(ItemRecipeCapability.CAP));
- this.inputEnergyHandler = new IgnoreEnergyRecipeHandler();
-
- RecipeHandlerList inHandlers = RecipeHandlerList.of(IO.IN, inputItemHandler, inputEnergyHandler);
- RecipeHandlerList outHandlers = RecipeHandlerList.of(IO.OUT, outputItemHandler);
-
- addHandlerList(inHandlers);
- addHandlerList(outHandlers);
}
@Override
@@ -159,6 +146,20 @@ protected List> validMachineClasses() {
return List.of(IMiner.class);
}
+ @Override
+ public void onMachineLoad() {
+ this.inputItemHandler = new ItemRecipeHandler(IO.IN,
+ getRLMachine().getRecipeType().getMaxInputs(ItemRecipeCapability.CAP));
+ this.outputItemHandler = new ItemRecipeHandler(IO.OUT,
+ getRLMachine().getRecipeType().getMaxOutputs(ItemRecipeCapability.CAP));
+
+ RecipeHandlerList inHandlers = RecipeHandlerList.of(IO.IN, inputItemHandler, new IgnoreEnergyRecipeHandler());
+ RecipeHandlerList outHandlers = RecipeHandlerList.of(IO.OUT, outputItemHandler);
+
+ addHandlerList(inHandlers);
+ addHandlerList(outHandlers);
+ }
+
@Override
public void resetRecipeLogic() {
super.resetRecipeLogic();
@@ -360,8 +361,8 @@ protected boolean doPostProcessing(NonNullList blockDrops, BlockState
if (oreDrop.isEmpty()) return false;
// create dummy recipe handler
- inputItemHandler.storage.setStackInSlot(0, oreDrop);
- outputItemHandler.storage.clear();
+ Objects.requireNonNull(inputItemHandler).storage.setStackInSlot(0, oreDrop);
+ Objects.requireNonNull(outputItemHandler).storage.clear();
var matches = getRLMachine().getRecipeType().searchRecipe(this,
r -> RecipeHelper.matchContents(this, r).isSuccess());
@@ -431,23 +432,21 @@ private void mineAndInsertItems(NonNullList blockDrops, ServerLevel w
// replace the ore block with cobblestone instead of breaking it to prevent mob spawning
// remove the ore block's position from the mining queue
var handler = getCachedItemHandler();
- if (handler != null) {
- if (GTTransferUtils.addItemsToItemHandler(handler, true, blockDrops)) {
- GTTransferUtils.addItemsToItemHandler(handler, false, blockDrops);
- var pos = blocksToMine.getFirst();
- world.setBlock(pos, findMiningReplacementBlock(world, pos), 3);
- mineX = pos.getX();
- mineZ = pos.getZ();
- mineY = pos.getY();
- blocksToMine.removeFirst();
- onMineOperation();
-
- // if the inventory was previously considered full, mark it as not since an item was able to fit
- isInventoryFull = false;
- } else {
- // the ore block was not able to fit, so the inventory is considered full
- isInventoryFull = true;
- }
+ if (GTTransferUtils.addItemsToItemHandler(handler, true, blockDrops)) {
+ GTTransferUtils.addItemsToItemHandler(handler, false, blockDrops);
+ var pos = blocksToMine.getFirst();
+ world.setBlock(pos, findMiningReplacementBlock(world, pos), 3);
+ mineX = pos.getX();
+ mineZ = pos.getZ();
+ mineY = pos.getY();
+ blocksToMine.removeFirst();
+ onMineOperation();
+
+ // if the inventory was previously considered full, mark it as not since an item was able to fit
+ isInventoryFull = false;
+ } else {
+ // the ore block was not able to fit, so the inventory is considered full
+ isInventoryFull = true;
}
}
@@ -457,7 +456,7 @@ private void mineAndInsertItems(NonNullList blockDrops, ServerLevel w
* @param pos the {@link BlockPos} of the miner itself
* @param currentRadius the currently set mining radius
*/
- public void initPos(@NotNull BlockPos pos, int currentRadius) {
+ public void initPos(BlockPos pos, int currentRadius) {
x = pos.getX() - currentRadius;
z = pos.getZ() - currentRadius;
if (dir == Direction.UP) {
@@ -581,7 +580,7 @@ private LinkedList getBlocksToMine() {
* @param values to find the mean of
* @return the mean value
*/
- private static long mean(@NotNull long[] values) {
+ private static long mean(long[] values) {
if (values.length == 0L)
return 0L;
@@ -595,7 +594,7 @@ private static long mean(@NotNull long[] values) {
* @param world the {@link Level} to get the average tick time of
* @return the mean tick time
*/
- private static double getMeanTickTime(@NotNull Level world) {
+ private static double getMeanTickTime(Level world) {
return mean(Objects.requireNonNull(world.getServer()).tickTimes) * 1.0E-6D;
}
diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java
index d06703ed5ec..091a1564988 100644
--- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java
+++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java
@@ -838,8 +838,6 @@ public static void init(RegistrateLangProvider provider) {
"Caused %s Lag Spike Warnings (anything taking longer than %sms) on the Server.");
provider.add("behavior.portable_scanner.debug_machine", "Meta-ID: %s");
provider.add("behavior.portable_scanner.debug_machine_invalid", " invalid!");
- provider.add("behavior.portable_scanner.debug_machine_invalid_null=invalid! MetaTileEntity =",
- " null!");
provider.add("behavior.portable_scanner.debug_machine_valid", " valid");
provider.add("behavior.portable_scanner.divider", "=========================");
provider.add("behavior.portable_scanner.energy_container_in", "Max IN: %s (%s) EU at %s A");
diff --git a/src/main/resources/assets/gtceu/lang/ja_jp.json b/src/main/resources/assets/gtceu/lang/ja_jp.json
index f1d64562414..b13bab7d1af 100644
--- a/src/main/resources/assets/gtceu/lang/ja_jp.json
+++ b/src/main/resources/assets/gtceu/lang/ja_jp.json
@@ -14,7 +14,6 @@
"behavior.portable_scanner.debug_lag_count": "サーバーで %s 件のラグスパイク警告が発生 (%smsを超過した全てのオブジェクトが対象)",
"behavior.portable_scanner.debug_machine": "メタ-ID: %s",
"behavior.portable_scanner.debug_machine_invalid": " 無効",
- "behavior.portable_scanner.debug_machine_invalid_null=invalid! MetaTileEntity =": " null",
"behavior.portable_scanner.debug_machine_valid": " 妥当",
"behavior.portable_scanner.divider": "=========================",
"behavior.portable_scanner.energy_container_in": "最大入力: %s (%s) EU at %s A",
diff --git a/src/main/resources/assets/gtceu/lang/pt_br.json b/src/main/resources/assets/gtceu/lang/pt_br.json
index 4d3180e18dd..a659a61fe59 100644
--- a/src/main/resources/assets/gtceu/lang/pt_br.json
+++ b/src/main/resources/assets/gtceu/lang/pt_br.json
@@ -14,7 +14,6 @@
"behavior.portable_scanner.debug_lag_count": "Causou %s Avisos de Pico de Lag (qualquer coisa demorando mais que %sms) no Servidor.",
"behavior.portable_scanner.debug_machine": "Meta-ID: %s",
"behavior.portable_scanner.debug_machine_invalid": " inválido!",
- "behavior.portable_scanner.debug_machine_invalid_null=invalid! MetaTileEntity =": " nulo!",
"behavior.portable_scanner.debug_machine_valid": " válido",
"behavior.portable_scanner.divider": "=========================",
"behavior.portable_scanner.energy_container_in": "ENTRADA Máx: %s (%s) EU a %s A",
diff --git a/src/main/resources/assets/gtceu/lang/ru_ru.json b/src/main/resources/assets/gtceu/lang/ru_ru.json
index 8c90eb4ae69..46c481010d8 100644
--- a/src/main/resources/assets/gtceu/lang/ru_ru.json
+++ b/src/main/resources/assets/gtceu/lang/ru_ru.json
@@ -4483,7 +4483,6 @@
"behavior.data_item.assemblyline.data": "- §a%s",
"behavior.data_item.assemblyline.title": "§nДанные для Сборочного конвейера:",
"behavior.portable_scanner.debug_machine_invalid": " неверный!",
- "behavior.portable_scanner.debug_machine_invalid_null=invalid! MetaTileEntity =": " null!",
"behavior.portable_scanner.debug_machine_valid": " верный",
"behavior.portable_scanner.divider": "=========================",
"behavior.portable_scanner.energy_container_out": "Макс. выход: %s (%s) EU при %s A",
diff --git a/src/main/resources/assets/gtceu/lang/uk_ua.json b/src/main/resources/assets/gtceu/lang/uk_ua.json
index d9acf9579b9..58d62ab4b4a 100644
--- a/src/main/resources/assets/gtceu/lang/uk_ua.json
+++ b/src/main/resources/assets/gtceu/lang/uk_ua.json
@@ -15,7 +15,6 @@
"behavior.portable_scanner.debug_lag_count": "Попередження про затримку %s (все, що триває довше, ніж %sмс) на сервері.",
"behavior.portable_scanner.debug_machine": "Мета-ID: %s",
"behavior.portable_scanner.debug_machine_invalid": " недійсний!",
- "behavior.portable_scanner.debug_machine_invalid_null=invalid! MetaTileEntity =": " null!",
"behavior.portable_scanner.debug_machine_valid": " дійсний",
"behavior.portable_scanner.divider": "=========================",
"behavior.portable_scanner.energy_container_in": "Макс. Вхід: %s (%s) EU з %s A",
diff --git a/src/main/resources/assets/gtceu/lang/zh_cn.json b/src/main/resources/assets/gtceu/lang/zh_cn.json
index f3a6663c821..3d375b7b9a6 100644
--- a/src/main/resources/assets/gtceu/lang/zh_cn.json
+++ b/src/main/resources/assets/gtceu/lang/zh_cn.json
@@ -14,7 +14,6 @@
"behavior.portable_scanner.debug_lag_count": "已在服务器中造成%s次延迟尖峰警告(任何大于%sms的情况)。",
"behavior.portable_scanner.debug_machine": "元ID:%s",
"behavior.portable_scanner.debug_machine_invalid": " 无效!",
- "behavior.portable_scanner.debug_machine_invalid_null=invalid! MetaTileEntity =": " null!",
"behavior.portable_scanner.debug_machine_valid": "无效!",
"behavior.portable_scanner.divider": "=========================",
"behavior.portable_scanner.energy_container_in": "输入上限:%s(%s)EU,%s A",
diff --git a/src/main/resources/assets/gtceu/lang/zh_tw.json b/src/main/resources/assets/gtceu/lang/zh_tw.json
index 15f79b5205b..527ecd8c330 100644
--- a/src/main/resources/assets/gtceu/lang/zh_tw.json
+++ b/src/main/resources/assets/gtceu/lang/zh_tw.json
@@ -14,7 +14,6 @@
"behavior.portable_scanner.debug_lag_count": "已在伺服器中造成%s次延遲尖峰警告(任何大於%sms的情況)。",
"behavior.portable_scanner.debug_machine": "元ID:%s",
"behavior.portable_scanner.debug_machine_invalid": " 無效!",
- "behavior.portable_scanner.debug_machine_invalid_null=invalid! MetaTileEntity =": " null!",
"behavior.portable_scanner.debug_machine_valid": "無效!",
"behavior.portable_scanner.divider": "=========================",
"behavior.portable_scanner.energy_container_in": "輸入上限:%s(%s)EU,%s A",