mirror of
https://github.com/GTNewHorizons/AE2FluidCraft-Rework.git
synced 2026-11-15 17:44:46 +00:00
less often sync gui data
change item return logic drop cell on break fix gui not display last fluid slot fix not all fluids cell provide capacity
This commit is contained in:
1 parent
e92d524e36
commit
c07455c5c1
3 files changed
+54
-38
No files matched your search
@@ -75,7 +75,7 @@ public class GuiSuperStoker extends AEBaseGui {
|
||||
int slotInt = slotIn.slotNumber;
|
||||
if (itemstack != null) {
|
||||
String s = "0%";
|
||||
if (slotInt > 0 && slotInt < 9) {
|
||||
if (slotInt > 0 && slotInt < 10) {
|
||||
IAEStack<?> aeStack = list.get(slotInt - 1);
|
||||
if (aeStack != null)
|
||||
s = (int) (((float) aeStack.getStackSize() / ItemFluidPacket.getFluidAmount(itemstack)) * 100)
|
||||
|
||||
@@ -6,12 +6,13 @@ import java.util.Map;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.ICrafting;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import com.glodblock.github.FluidCraft;
|
||||
import com.glodblock.github.common.item.ItemBasicFluidStorageCell;
|
||||
import com.glodblock.github.common.item.FCBaseItemCell;
|
||||
import com.glodblock.github.common.tile.TileSuperStoker;
|
||||
import com.glodblock.github.inventory.slot.OptionalFluidSlotFake;
|
||||
import com.glodblock.github.network.SPacketSuperStokerUpdate;
|
||||
@@ -26,9 +27,9 @@ import appeng.items.storage.ItemBasicStorageCell;
|
||||
public class ContainerSuperStoker extends AEBaseContainer implements IOptionalSlotHost {
|
||||
|
||||
private final TileSuperStoker tile;
|
||||
private IInventory configFluids;
|
||||
private IInventory configItems;
|
||||
private Map<Integer, IAEStack<?>> list;
|
||||
private final IInventory configFluids;
|
||||
private final IInventory configItems;
|
||||
private int lastUpdated = 0;
|
||||
|
||||
public ContainerSuperStoker(InventoryPlayer ipl, TileSuperStoker tile) {
|
||||
super(ipl, tile);
|
||||
@@ -76,21 +77,35 @@ public class ContainerSuperStoker extends AEBaseContainer implements IOptionalSl
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCraftingToCrafters(ICrafting p_75132_1_) {
|
||||
super.addCraftingToCrafters(p_75132_1_);
|
||||
lastUpdated = 24;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void detectAndSendChanges() {
|
||||
super.detectAndSendChanges();
|
||||
Map<Integer, IAEStack<?>> tmp = new HashMap<>();
|
||||
for (int i = 0; i < tile.getInternalFluid().getSlots(); i++) {
|
||||
tmp.put(i, tile.getInternalFluid().getFluidInSlot(i));
|
||||
}
|
||||
for (int i = 0; i < tile.getInternalInventory().getSizeInventory(); i++) {
|
||||
tmp.put(i + 100, tile.getInternalAEInventory().getAEStackInSlot(i));
|
||||
}
|
||||
for (final Object g : this.crafters) {
|
||||
if (g instanceof EntityPlayer) {
|
||||
FluidCraft.proxy.netHandler.sendTo(new SPacketSuperStokerUpdate(tmp), (EntityPlayerMP) g);
|
||||
|
||||
if (lastUpdated > 20) {
|
||||
lastUpdated = 0;
|
||||
Map<Integer, IAEStack<?>> tmp = new HashMap<>();
|
||||
|
||||
for (int i = 0; i < tile.getInternalFluid().getSlots(); i++) {
|
||||
tmp.put(i, tile.getInternalFluid().getFluidInSlot(i));
|
||||
}
|
||||
|
||||
for (int i = 0; i < tile.getInternalInventory().getSizeInventory(); i++) {
|
||||
tmp.put(i + 100, tile.getInternalAEInventory().getAEStackInSlot(i));
|
||||
}
|
||||
|
||||
for (final Object g : this.crafters) {
|
||||
if (g instanceof EntityPlayer) {
|
||||
FluidCraft.proxy.netHandler.sendTo(new SPacketSuperStokerUpdate(tmp), (EntityPlayerMP) g);
|
||||
}
|
||||
}
|
||||
}
|
||||
lastUpdated++;
|
||||
}
|
||||
|
||||
private boolean isConfigurated() {
|
||||
@@ -111,18 +126,18 @@ public class ContainerSuperStoker extends AEBaseContainer implements IOptionalSl
|
||||
public boolean isValidForSlot(Slot s, ItemStack is) {
|
||||
if (s.slotNumber == 0 && s.getHasStack() && isConfigurated()) {
|
||||
long currentBytes = 0;
|
||||
long newBytes = 0;
|
||||
long newBytes = -1;
|
||||
|
||||
if (s.getStack().getItem() instanceof ItemBasicStorageCell ibsc) {
|
||||
currentBytes = ibsc.getBytesLong(is);
|
||||
} else if (s.getStack().getItem() instanceof ItemBasicFluidStorageCell ibfsc) {
|
||||
currentBytes = ibfsc.getBytes(is);
|
||||
} else if (s.getStack().getItem() instanceof FCBaseItemCell fcbic) {
|
||||
currentBytes = fcbic.getBytes(is);
|
||||
}
|
||||
|
||||
if (is.getItem() instanceof ItemBasicStorageCell ibsc) {
|
||||
newBytes = ibsc.getBytesLong(is);
|
||||
} else if (is.getItem() instanceof ItemBasicFluidStorageCell ibfsc) {
|
||||
newBytes = ibfsc.getBytes(is);
|
||||
} else if (is.getItem() instanceof FCBaseItemCell fcbic) {
|
||||
newBytes = fcbic.getBytes(is);
|
||||
}
|
||||
|
||||
if (currentBytes > newBytes) {
|
||||
|
||||
@@ -15,7 +15,7 @@ import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.FluidTankInfo;
|
||||
import net.minecraftforge.fluids.IFluidHandler;
|
||||
|
||||
import com.glodblock.github.common.item.ItemBasicFluidStorageCell;
|
||||
import com.glodblock.github.common.item.FCBaseItemCell;
|
||||
import com.glodblock.github.common.item.ItemFluidPacket;
|
||||
import com.glodblock.github.inventory.AEFluidInventory;
|
||||
import com.glodblock.github.inventory.IAEFluidInventory;
|
||||
@@ -99,7 +99,7 @@ public class TileSuperStoker extends AENetworkInvTile
|
||||
if (configItem != null) {
|
||||
IAEItemStack is = configItem.copy();
|
||||
if (invItem == null) requestItem(is, i);
|
||||
else if (invItem.getItem() == is.getItem()) {
|
||||
else if (invItem.equals(is)) {
|
||||
if (invItem.getStackSize() < is.getStackSize() / 2) {
|
||||
is.setStackSize(is.getStackSize() - invItem.getStackSize());
|
||||
requestItem(is, i);
|
||||
@@ -125,7 +125,7 @@ public class TileSuperStoker extends AENetworkInvTile
|
||||
.injectItems(ias, Actionable.MODULATE, this.source);
|
||||
if (notInserted != null) {
|
||||
invFluids.fill(index, notInserted, true);
|
||||
storedFluidCount += ias.getStackSize();
|
||||
storedFluidCount += notInserted.getStackSize();
|
||||
}
|
||||
} catch (final GridAccessException ignored) {}
|
||||
}
|
||||
@@ -146,22 +146,24 @@ public class TileSuperStoker extends AENetworkInvTile
|
||||
|
||||
private void returnItem(int index, long amount) {
|
||||
try {
|
||||
IAEItemStack ias = invItems.getAEStackInSlot(index);
|
||||
IAEItemStack ais = invItems.getAEStackInSlot(index);
|
||||
long originalSize = ais.getStackSize();
|
||||
if (amount != Long.MAX_VALUE) {
|
||||
ias.decStackSize(amount);
|
||||
ias = ias.copy();
|
||||
ias.setStackSize(amount);
|
||||
ais.decStackSize(amount);
|
||||
ais = ais.copy();
|
||||
ais.setStackSize(amount);
|
||||
} else {
|
||||
amount = ias.getStackSize();
|
||||
amount = ais.getStackSize();
|
||||
invItems.setInventorySlotContents(index, null);
|
||||
}
|
||||
storedItemCount -= amount;
|
||||
IAEItemStack notInserted = this.getProxy().getStorage().getItemInventory()
|
||||
.injectItems(ias, Actionable.MODULATE, this.source);
|
||||
.injectItems(ais, Actionable.MODULATE, this.source);
|
||||
if (notInserted != null) {
|
||||
long notInsertedAmount = notInserted.getStackSize();
|
||||
invItems.setInventorySlotContents(index, notInserted.getItemStack());
|
||||
invItems.getAEStackInSlot(index).setStackSize(notInserted.getStackSize());
|
||||
storedItemCount += notInserted.getStackSize();
|
||||
invItems.getAEStackInSlot(index).setStackSize(originalSize - (amount - notInsertedAmount));
|
||||
storedItemCount += notInsertedAmount;
|
||||
}
|
||||
} catch (final GridAccessException ignored) {}
|
||||
}
|
||||
@@ -253,8 +255,8 @@ public class TileSuperStoker extends AENetworkInvTile
|
||||
if (inv == cell && added != null) {
|
||||
if (added.getItem() instanceof ItemBasicStorageCell ibsc) {
|
||||
totalBytes = ibsc.getBytesLong(added);
|
||||
} else if (added.getItem() instanceof ItemBasicFluidStorageCell ibfsc) {
|
||||
totalBytes = ibfsc.getBytes(added);
|
||||
} else if (added.getItem() instanceof FCBaseItemCell fcbic) {
|
||||
totalBytes = fcbic.getBytes(added);
|
||||
}
|
||||
getProxy().setIdlePowerUsage(Math.sqrt(Math.pow(totalBytes, 0.576D)));
|
||||
}
|
||||
@@ -267,9 +269,7 @@ public class TileSuperStoker extends AENetworkInvTile
|
||||
if (inv == invItems && invItems.getAEStackInSlot(slot) != null)
|
||||
invItems.getAEStackInSlot(slot).decStackSize(removed.stackSize);
|
||||
}
|
||||
case markDirty -> {
|
||||
|
||||
}
|
||||
case markDirty -> {}
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -284,19 +284,20 @@ public class TileSuperStoker extends AENetworkInvTile
|
||||
public void fullRefund() {
|
||||
for (int i = 0; i < 9; i++) {
|
||||
if (invFluids.getFluidStackInSlot(i) != null) {
|
||||
returnFluid(i, Integer.MAX_VALUE);
|
||||
returnFluid(i, Long.MAX_VALUE);
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 63; i++) {
|
||||
if (invItems.getAEStackInSlot(i) != null) {
|
||||
returnItem(i, Integer.MAX_VALUE);
|
||||
returnItem(i, Long.MAX_VALUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getDrops(World w, int x, int y, int z, List<ItemStack> drops) {
|
||||
if (cell.getStackInSlot(0) != null) drops.add(cell.getStackInSlot(0));
|
||||
for (int i = 0; i < 9; i++) {
|
||||
ItemStack ifp = ItemFluidPacket.newStack(invFluids.getFluidStackInSlot(i));
|
||||
if (ifp != null) drops.add(ifp);
|
||||
|
||||
Reference in new issue
Block a user