diff --git a/src/main/java/com/glodblock/github/client/gui/GuiSuperStoker.java b/src/main/java/com/glodblock/github/client/gui/GuiSuperStoker.java index 8c566ddf..7be7a2e6 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiSuperStoker.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiSuperStoker.java @@ -1,11 +1,8 @@ package com.glodblock.github.client.gui; -import appeng.api.storage.data.IAEStack; -import appeng.util.Platform; -import appeng.util.item.AEStack; -import com.glodblock.github.client.gui.container.ContainerFluidAutoFiller; -import com.glodblock.github.common.item.ItemFluidPacket; -import com.glodblock.github.inventory.slot.OptionalFluidSlotFake; +import java.util.HashMap; +import java.util.Map; + import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; @@ -15,11 +12,12 @@ import org.lwjgl.opengl.GL11; import com.glodblock.github.FluidCraft; import com.glodblock.github.client.gui.container.ContainerSuperStoker; +import com.glodblock.github.common.item.ItemFluidPacket; import com.glodblock.github.common.tile.TileSuperStoker; import com.glodblock.github.network.CPacketInventoryAction; -import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEItemStack; +import appeng.api.storage.data.IAEStack; import appeng.client.gui.AEBaseGui; import appeng.container.AEBaseContainer; import appeng.container.slot.SlotFake; @@ -27,10 +25,6 @@ import appeng.core.localization.GuiText; import appeng.helpers.InventoryAction; import appeng.util.item.AEItemStack; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; - public class GuiSuperStoker extends AEBaseGui { private static final ResourceLocation TEX_BG = FluidCraft.resource("textures/gui/superStoker.png"); @@ -83,8 +77,10 @@ public class GuiSuperStoker extends AEBaseGui { String s = "0%"; if (slotInt > 0 && slotInt < 9) { IAEStack aeStack = list.get(slotInt - 1); - if (aeStack != null) s = (int) (((float) aeStack.getStackSize() / ItemFluidPacket.getFluidAmount(itemstack)) * 100) + "%"; - } else if (slotInt > 9 && slotInt < 73){ + if (aeStack != null) + s = (int) (((float) aeStack.getStackSize() / ItemFluidPacket.getFluidAmount(itemstack)) * 100) + + "%"; + } else if (slotInt > 9 && slotInt < 73) { IAEStack aeStack = list.get(slotInt + 90); if (aeStack != null && itemstack.stackSize > 0) { long i = aeStack.getStackSize(); @@ -97,10 +93,7 @@ public class GuiSuperStoker extends AEBaseGui { float shiftY = 1; final float inverseScaleFactor = 1.0f / scale; - final int X = (int) (((float) offsetX - shiftX - + 16.0f - + 1.0f - - this.fontRendererObj.getStringWidth(s) * scale) * inverseScaleFactor); + final int X = (int) (((float) offsetX - shiftX + 10.0f) * inverseScaleFactor); final int Y = (int) (((float) offsetY - shiftY + 16.0f - 7.0f * scale) * inverseScaleFactor); GL11.glTranslatef(0.0f, 0.0f, 200.0f); GL11.glScaled(scale, scale, scale); diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerSuperStoker.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerSuperStoker.java index 11159da5..feacf186 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerSuperStoker.java +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerSuperStoker.java @@ -3,8 +3,6 @@ package com.glodblock.github.client.gui.container; import java.util.HashMap; import java.util.Map; -import appeng.api.storage.data.IAEStack; -import com.glodblock.github.network.SPacketSuperStokerUpdate; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; @@ -14,18 +12,16 @@ import net.minecraft.item.ItemStack; import com.glodblock.github.FluidCraft; import com.glodblock.github.common.item.ItemBasicFluidStorageCell; -import com.glodblock.github.common.item.ItemFluidPacket; import com.glodblock.github.common.tile.TileSuperStoker; import com.glodblock.github.inventory.slot.OptionalFluidSlotFake; -import com.glodblock.github.network.SPacketFluidUpdate; +import com.glodblock.github.network.SPacketSuperStokerUpdate; -import appeng.api.storage.data.IAEFluidStack; +import appeng.api.storage.data.IAEStack; import appeng.container.AEBaseContainer; import appeng.container.slot.IOptionalSlotHost; import appeng.container.slot.SlotPatternOutputs; import appeng.container.slot.SlotRestrictedInput; import appeng.items.storage.ItemBasicStorageCell; -import appeng.util.item.AEFluidStack; public class ContainerSuperStoker extends AEBaseContainer implements IOptionalSlotHost { @@ -88,9 +84,7 @@ public class ContainerSuperStoker extends AEBaseContainer implements IOptionalSl tmp.put(i, tile.getInternalFluid().getFluidInSlot(i)); } for (int i = 0; i < tile.getInternalInventory().getSizeInventory(); i++) { - tmp.put( - i + 100, - tile.getInternalAEInventory().getAEStackInSlot(i)); + tmp.put(i + 100, tile.getInternalAEInventory().getAEStackInSlot(i)); } for (final Object g : this.crafters) { if (g instanceof EntityPlayer) { diff --git a/src/main/java/com/glodblock/github/common/block/BlockSuperStoker.java b/src/main/java/com/glodblock/github/common/block/BlockSuperStoker.java index bcb72944..6bdb6ea0 100644 --- a/src/main/java/com/glodblock/github/common/block/BlockSuperStoker.java +++ b/src/main/java/com/glodblock/github/common/block/BlockSuperStoker.java @@ -1,10 +1,8 @@ package com.glodblock.github.common.block; -import appeng.tile.crafting.TileCraftingTile; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -13,16 +11,15 @@ import com.glodblock.github.common.tile.TileSuperStoker; import com.glodblock.github.inventory.InventoryHandler; import com.glodblock.github.inventory.gui.GuiType; import com.glodblock.github.util.BlockPos; +import com.glodblock.github.util.NameConst; import appeng.block.AEBaseItemBlock; import cpw.mods.fml.common.registry.GameRegistry; -import java.util.ArrayList; - public class BlockSuperStoker extends FCBaseBlock { public BlockSuperStoker() { - super(Material.iron, "SuperStoker"); + super(Material.web, NameConst.BLOCK_SUPER_STOKER); setTileEntity(TileSuperStoker.class); setOpaque(false); setFullBlock(false); @@ -61,8 +58,8 @@ public class BlockSuperStoker extends FCBaseBlock { @Override public BlockSuperStoker register() { - GameRegistry.registerBlock(this, AEBaseItemBlock.class, "SuperStoker"); - GameRegistry.registerTileEntity(TileSuperStoker.class, "SuperStoker"); + GameRegistry.registerBlock(this, AEBaseItemBlock.class, NameConst.BLOCK_SUPER_STOKER); + GameRegistry.registerTileEntity(TileSuperStoker.class, NameConst.BLOCK_SUPER_STOKER); setCreativeTab(FluidCraftingTabs.INSTANCE); return this; } diff --git a/src/main/java/com/glodblock/github/common/tile/TileSuperStoker.java b/src/main/java/com/glodblock/github/common/tile/TileSuperStoker.java index b2a77235..61c0ccd7 100644 --- a/src/main/java/com/glodblock/github/common/tile/TileSuperStoker.java +++ b/src/main/java/com/glodblock/github/common/tile/TileSuperStoker.java @@ -1,12 +1,10 @@ package com.glodblock.github.common.tile; -import java.io.IOException; import java.util.List; import java.util.stream.IntStream; import javax.annotation.Nonnull; -import appeng.tile.inventory.AppEngInternalAEInventory; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -40,16 +38,16 @@ import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEItemStack; import appeng.api.util.AECableType; import appeng.api.util.DimensionalCoord; +import appeng.core.AELog; import appeng.items.storage.ItemBasicStorageCell; import appeng.me.GridAccessException; import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkInvTile; +import appeng.tile.inventory.AppEngInternalAEInventory; import appeng.tile.inventory.AppEngInternalInventory; import appeng.tile.inventory.InvOperation; import appeng.util.item.AEFluidStack; -import appeng.util.item.AEItemStack; -import cpw.mods.fml.common.network.ByteBufUtils; import io.netty.buffer.ByteBuf; public class TileSuperStoker extends AENetworkInvTile @@ -67,7 +65,7 @@ public class TileSuperStoker extends AENetworkInvTile private long storedItemCount; public TileSuperStoker() { - getProxy().setIdlePowerUsage(2D); + getProxy().setIdlePowerUsage(4D); getProxy().setFlags(GridFlags.REQUIRE_CHANNEL); this.source = new MachineSource(this); } @@ -115,6 +113,7 @@ public class TileSuperStoker extends AENetworkInvTile returnItem(i, Long.MAX_VALUE); } } + return TickRateModulation.SAME; } @@ -176,7 +175,10 @@ public class TileSuperStoker extends AENetworkInvTile .extractItems(is, Actionable.MODULATE, this.source); if (extracted != null) { if (invItems.getAEStackInSlot(index) != null) invItems.getAEStackInSlot(index).add(extracted); - else { invItems.setInventorySlotContents(index, extracted.getItemStack()); invItems.getAEStackInSlot(index).setStackSize(extracted.getStackSize()); } + else { + invItems.setInventorySlotContents(index, extracted.getItemStack()); + invItems.getAEStackInSlot(index).setStackSize(extracted.getStackSize()); + } storedItemCount += extracted.getStackSize(); } } catch (final GridAccessException ignored) {} @@ -210,7 +212,8 @@ public class TileSuperStoker extends AENetworkInvTile } public long getFreeBytes() { - return totalBytes - (((storedItemCount + getUnusedItemCount()) / 8) + ((storedFluidCount + getUnusedFluidCount()) / 2048)); + return totalBytes - (((storedItemCount + getUnusedItemCount()) / 8) + + ((storedFluidCount + getUnusedFluidCount()) / 2048)); } public long getRemainingFluidCount() { @@ -247,28 +250,40 @@ public class TileSuperStoker extends AENetworkInvTile public void onChangeInventory(IInventory inv, int slot, InvOperation mc, ItemStack removed, ItemStack added) { switch (mc) { case setInventorySlotContents -> { - if (inv == cell) { + 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); } + getProxy().setIdlePowerUsage(Math.sqrt(Math.pow(totalBytes, 0.576D))); } } case decreaseStackSize -> { - if (inv == cell) totalBytes = 0; - if (inv == invItems && invItems.getAEStackInSlot(slot) != null) invItems.getAEStackInSlot(slot).decStackSize(removed.stackSize); + if (inv == cell) { + totalBytes = 0; + getProxy().setIdlePowerUsage(4d); + } + if (inv == invItems && invItems.getAEStackInSlot(slot) != null) + invItems.getAEStackInSlot(slot).decStackSize(removed.stackSize); } case markDirty -> { } } + + try { + getProxy().getTick().alertDevice(getProxy().getNode()); + } catch (GridAccessException e) { + AELog.error(e, "Couldn't wake up level emitter for delayed updates"); + } + markForUpdate(); } public void fullRefund() { for (int i = 0; i < 9; i++) { - if ( invFluids.getFluidStackInSlot(i) != null) { + if (invFluids.getFluidStackInSlot(i) != null) { returnFluid(i, Integer.MAX_VALUE); } } @@ -283,8 +298,8 @@ public class TileSuperStoker extends AENetworkInvTile @Override public void getDrops(World w, int x, int y, int z, List drops) { for (int i = 0; i < 9; i++) { - ItemStack ifp = ItemFluidPacket.newStack(invFluids.getFluidStackInSlot(i)); - if (ifp != null) drops.add(ifp); + ItemStack ifp = ItemFluidPacket.newStack(invFluids.getFluidStackInSlot(i)); + if (ifp != null) drops.add(ifp); } super.getDrops(w, x, y, z, drops); } @@ -296,7 +311,7 @@ public class TileSuperStoker extends AENetworkInvTile @Override public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { - return invFluids.fill(from, resource, doFill); + return 0; } @Override @@ -309,7 +324,6 @@ public class TileSuperStoker extends AENetworkInvTile return invFluids.drain(from, maxDrain, doDrain); } - @Override public boolean canFill(ForgeDirection from, Fluid fluid) { return false; @@ -336,26 +350,16 @@ public class TileSuperStoker extends AENetworkInvTile return this.invFluids; } - @TileEvent(TileEventType.NETWORK_WRITE) - protected void writeToStream(ByteBuf data) throws IOException { - for (int i = 0; i < invItems.getSizeInventory(); i++) { - ByteBufUtils.writeItemStack(data, invItems.getStackInSlot(i)); - } - this.invFluids.writeToBuf(data); + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TileSuperStoker(final ByteBuf data) { + final boolean oldPower = isPowered; + isPowered = data.readBoolean(); + return isPowered != oldPower; } - @TileEvent(TileEventType.NETWORK_READ) - protected boolean readFromStream(ByteBuf data) throws IOException { - boolean changed = false; - for (int i = 0; i < invItems.getSizeInventory(); i++) { - ItemStack stack = ByteBufUtils.readItemStack(data); - if (!ItemStack.areItemStacksEqual(stack, invItems.getStackInSlot(i))) { - invItems.setInventorySlotContents(i, stack); - changed = true; - } - } - changed |= this.invFluids.readFromBuf(data); - return changed; + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TileSuperStoker(final ByteBuf data) { + data.writeBoolean(isActive()); } @TileEvent(TileEventType.WORLD_NBT_READ) @@ -368,6 +372,7 @@ public class TileSuperStoker extends AENetworkInvTile totalBytes = data.getLong("totalBytes"); storedFluidCount = data.getLong("storedFluidCount"); storedItemCount = data.getLong("storedItemCount"); + getProxy().setIdlePowerUsage(data.getDouble("powerDraw")); } @TileEvent(TileEventType.WORLD_NBT_WRITE) @@ -380,6 +385,7 @@ public class TileSuperStoker extends AENetworkInvTile data.setLong("totalBytes", totalBytes); data.setLong("storedFluidCount", storedFluidCount); data.setLong("storedItemCount", storedItemCount); + data.setDouble("powerDraw", getProxy().getIdlePowerUsage()); return data; } diff --git a/src/main/java/com/glodblock/github/loader/ChannelLoader.java b/src/main/java/com/glodblock/github/loader/ChannelLoader.java index d902bff0..8f212cdb 100644 --- a/src/main/java/com/glodblock/github/loader/ChannelLoader.java +++ b/src/main/java/com/glodblock/github/loader/ChannelLoader.java @@ -1,6 +1,5 @@ package com.glodblock.github.loader; -import com.glodblock.github.network.SPacketSuperStokerUpdate; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.Packet; import net.minecraft.world.World; @@ -26,6 +25,7 @@ import com.glodblock.github.network.SPacketMEFluidInvUpdate; import com.glodblock.github.network.SPacketMEItemInvUpdate; import com.glodblock.github.network.SPacketSetItemAmount; import com.glodblock.github.network.SPacketStringUpdate; +import com.glodblock.github.network.SPacketSuperStokerUpdate; import com.glodblock.github.network.SPacketSwitchBack; import com.glodblock.github.network.wrapper.FCNetworkWrapper; @@ -60,7 +60,11 @@ public class ChannelLoader implements Runnable { netHandler.registerMessage(new CPacketTransferRecipe.Handler(), CPacketTransferRecipe.class, id++, Side.SERVER); netHandler.registerMessage(new CPacketDumpTank.Handler(), CPacketDumpTank.class, id++, Side.SERVER); netHandler.registerMessage(new SPacketFluidUpdate.Handler(), SPacketFluidUpdate.class, id++, Side.CLIENT); - netHandler.registerMessage(new SPacketSuperStokerUpdate.Handler(), SPacketSuperStokerUpdate.class, id++, Side.CLIENT); + netHandler.registerMessage( + new SPacketSuperStokerUpdate.Handler(), + SPacketSuperStokerUpdate.class, + id++, + Side.CLIENT); netHandler .registerMessage(new CPacketPatternValueSet.Handler(), CPacketPatternValueSet.class, id++, Side.SERVER); netHandler.registerMessage(new CPacketValueConfig.Handler(), CPacketValueConfig.class, id++, Side.SERVER); diff --git a/src/main/java/com/glodblock/github/network/SPacketSuperStokerUpdate.java b/src/main/java/com/glodblock/github/network/SPacketSuperStokerUpdate.java index 66422c71..9bbf01f8 100644 --- a/src/main/java/com/glodblock/github/network/SPacketSuperStokerUpdate.java +++ b/src/main/java/com/glodblock/github/network/SPacketSuperStokerUpdate.java @@ -1,33 +1,21 @@ package com.glodblock.github.network; -import appeng.api.storage.data.IAEFluidStack; -import appeng.api.storage.data.IAEItemStack; -import appeng.api.storage.data.IAEStack; -import appeng.util.Platform; -import appeng.util.item.AEItemStack; -import appeng.util.item.AEStack; -import com.glodblock.github.client.gui.GuiEssentiaTerminal; -import com.glodblock.github.client.gui.GuiFluidIO; -import com.glodblock.github.client.gui.GuiFluidInterface; -import com.glodblock.github.client.gui.GuiFluidLevelEmitter; -import com.glodblock.github.client.gui.GuiFluidStorageBus; -import com.glodblock.github.client.gui.GuiFluidTerminal; -import com.glodblock.github.client.gui.GuiIngredientBuffer; -import com.glodblock.github.client.gui.GuiLargeIngredientBuffer; -import com.glodblock.github.client.gui.GuiSuperStoker; -import com.glodblock.github.util.Util; -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.item.ItemStack; - import java.io.IOException; import java.util.HashMap; import java.util.Map; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; + +import com.glodblock.github.client.gui.GuiSuperStoker; +import com.glodblock.github.util.Util; + +import appeng.api.storage.data.IAEStack; +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; + public class SPacketSuperStokerUpdate implements IMessage { private Map> list; diff --git a/src/main/java/com/glodblock/github/util/NameConst.java b/src/main/java/com/glodblock/github/util/NameConst.java index e6e46040..2152a5d8 100644 --- a/src/main/java/com/glodblock/github/util/NameConst.java +++ b/src/main/java/com/glodblock/github/util/NameConst.java @@ -21,6 +21,7 @@ public class NameConst { public static final String BLOCK_OC_PATTERN_EDITOR = "oc_pattern_editor"; public static final String BLOCK_LEVEL_MAINTAINER = "level_maintainer"; public static final String BLOCK_WALRUS = "walrus"; + public static final String BLOCK_SUPER_STOKER = "super_stoker"; public static final String ITEM_FLUID_DROP = "fluid_drop"; public static final String ITEM_FLUID_ENCODED_PATTERN = "fluid_encoded_pattern"; public static final String ITEM_PART_FLUID_STORAGE_MONITOR = "part_fluid_storage_monitor"; diff --git a/src/main/java/com/glodblock/github/util/Util.java b/src/main/java/com/glodblock/github/util/Util.java index 6f8d713e..e89ffab3 100644 --- a/src/main/java/com/glodblock/github/util/Util.java +++ b/src/main/java/com/glodblock/github/util/Util.java @@ -9,9 +9,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import appeng.api.storage.data.IAEStack; -import appeng.util.item.AEItemStack; -import appeng.util.item.AEStack; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.init.Items; @@ -51,6 +48,7 @@ import appeng.api.parts.IPart; import appeng.api.storage.IMEInventoryHandler; import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEFluidStack; +import appeng.api.storage.data.IAEStack; import appeng.api.util.DimensionalCoord; import appeng.api.util.WorldCoord; import appeng.container.AEBaseContainer; @@ -60,6 +58,7 @@ import appeng.tile.networking.TileCableBus; import appeng.tile.networking.TileWireless; import appeng.util.Platform; import appeng.util.item.AEFluidStack; +import appeng.util.item.AEItemStack; import baubles.api.BaublesApi; import codechicken.nei.recipe.StackInfo; import cpw.mods.fml.common.ModContainer; diff --git a/src/main/resources/assets/ae2fc/lang/en_US.lang b/src/main/resources/assets/ae2fc/lang/en_US.lang index fe0fa11a..1bf918fe 100644 --- a/src/main/resources/assets/ae2fc/lang/en_US.lang +++ b/src/main/resources/assets/ae2fc/lang/en_US.lang @@ -75,6 +75,7 @@ tile.oc_pattern_editor.name=OC Pattern Editor tile.level_maintainer.name=ME Level Maintainer tile.fluid_buffer.name=ME Fluid Buffer tile.walrus.name=Walrus +tile.super_stoker.name=Super Stoker tile.fluid_auto_filler.name=ME Fluid Auto Filler tile.certus_quartz_tank.name=Certus Quartz Tank - %s tile.certus_quartz_tank_empty.name=Certus Quartz Tank diff --git a/src/main/resources/assets/ae2fc/textures/blocks/super_stoker.png b/src/main/resources/assets/ae2fc/textures/blocks/super_stoker.png new file mode 100644 index 00000000..94ce2f83 Binary files /dev/null and b/src/main/resources/assets/ae2fc/textures/blocks/super_stoker.png differ