From c9ed833e591e1b83504a2a210f16dff5d29d4e81 Mon Sep 17 00:00:00 2001 From: GlodBlock <1356392126@qq.com> Date: Sat, 9 Jul 2022 18:21:17 +0800 Subject: [PATCH] optimize tick a bit --- .../common/tile/TileFluidInterface.java | 82 ++++++++++--------- 1 file changed, 44 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/glodblock/github/common/tile/TileFluidInterface.java b/src/main/java/com/glodblock/github/common/tile/TileFluidInterface.java index 416a3237..7b9ece7c 100644 --- a/src/main/java/com/glodblock/github/common/tile/TileFluidInterface.java +++ b/src/main/java/com/glodblock/github/common/tile/TileFluidInterface.java @@ -43,6 +43,7 @@ public class TileFluidInterface extends TileInterface implements IFluidHandler, private final boolean[] tickState = new boolean[]{true, true, true, true, true, true}; private final int[] tickCount = new int[]{0, 0, 0, 0, 0, 0}; + private int tickMain = 0; private IMEMonitor getFluidGrid() { try { @@ -207,56 +208,61 @@ public class TileFluidInterface extends TileInterface implements IFluidHandler, @TileEvent( TileEventType.TICK ) public void updateTick() { //Very Hacky thing. - for (int i = 0; i < 6; i ++) { + if (tickMain % 20 == 0) { + tickMain = 0; + for (int i = 0; i < 6; i ++) { - FluidStack configFluid = ItemFluidPacket.getFluidStack(config.getStackInSlot(i)); - FluidStack storedFluid = invFluids.getFluidInSlot(i) == null ? null : invFluids.getFluidInSlot(i).getFluidStack(); + FluidStack configFluid = ItemFluidPacket.getFluidStack(config.getStackInSlot(i)); + FluidStack storedFluid = invFluids.getFluidInSlot(i) == null ? null : invFluids.getFluidInSlot(i).getFluidStack(); - if (!Util.areFluidsEqual(configFluid, storedFluid)) { - if (storedFluid != null) { - int ori = storedFluid.amount; - int filled = fill(ForgeDirection.UNKNOWN, storedFluid, false); - if (ori == filled) { - fill(ForgeDirection.UNKNOWN, storedFluid, true); - invFluids.setFluidInSlot(i, null); - } - else { - tickState[i] = false; - } - } - } - - if (configFluid != null) { - if (tickState[i]) { - if (getFluidGrid() != null) { - FluidStack configCopy = configFluid.copy(); - configCopy.amount = Math.min(8000, getLeftSpace(storedFluid, configCopy)); - IAEFluidStack fluidDrain = getFluidGrid().extractItems(AEFluidStack.create(configCopy), Actionable.MODULATE, ownActionSource); - if (fluidDrain != null && fluidDrain.getStackSize() != 0) { - invFluids.fill(i, fluidDrain.getFluidStack(), true); - } else { + if (!Util.areFluidsEqual(configFluid, storedFluid)) { + if (storedFluid != null) { + int ori = storedFluid.amount; + int filled = fill(ForgeDirection.UNKNOWN, storedFluid, false); + if (ori == filled) { + fill(ForgeDirection.UNKNOWN, storedFluid, true); + invFluids.setFluidInSlot(i, null); + tickState[i] = true; + } + else { tickState[i] = false; } } } - else if (tickCount[i] % 40 == 0) { - if (getFluidGrid() != null) { - FluidStack configCopy = configFluid.copy(); - configCopy.amount = Math.min(8000, getLeftSpace(storedFluid, configCopy)); - IAEFluidStack fluidDrain = getFluidGrid().extractItems(AEFluidStack.create(configCopy), Actionable.MODULATE, ownActionSource); - if (fluidDrain != null && fluidDrain.getStackSize() != 0) { - invFluids.fill(i, fluidDrain.getFluidStack(), true); - tickState[i] = true; + + if (configFluid != null) { + if (tickState[i]) { + if (getFluidGrid() != null) { + FluidStack configCopy = configFluid.copy(); + configCopy.amount = Math.min(8000, getLeftSpace(storedFluid, configCopy)); + IAEFluidStack fluidDrain = getFluidGrid().extractItems(AEFluidStack.create(configCopy), Actionable.MODULATE, ownActionSource); + if (fluidDrain != null && fluidDrain.getStackSize() != 0) { + invFluids.fill(i, fluidDrain.getFluidStack(), true); + } else { + tickState[i] = false; + } + } + } + else if (tickCount[i] % 5 == 0) { + if (getFluidGrid() != null) { + FluidStack configCopy = configFluid.copy(); + configCopy.amount = Math.min(8000, getLeftSpace(storedFluid, configCopy)); + IAEFluidStack fluidDrain = getFluidGrid().extractItems(AEFluidStack.create(configCopy), Actionable.MODULATE, ownActionSource); + if (fluidDrain != null && fluidDrain.getStackSize() != 0) { + invFluids.fill(i, fluidDrain.getFluidStack(), true); + tickState[i] = true; + } } } } - } - tickCount[i] ++; - if (tickCount[i] > 500) { - tickCount[i] = 1; + tickCount[i] ++; + if (tickCount[i] > 500) { + tickCount[i] = 1; + } } } + tickMain ++; } private int getLeftSpace(FluidStack stored, FluidStack req) {