mirror of
https://github.com/GTNewHorizons/AE2FluidCraft-Rework.git
synced 2026-11-12 16:27:40 +00:00
Merge branch 'master' into stack-type-api
This commit is contained in:
commit
8c2c21360a
7 files changed
+125
-40
No files matched your search
@@ -7,10 +7,12 @@ import static com.glodblock.github.inventory.item.WirelessMagnet.modeKey;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
import com.glodblock.github.FluidCraft;
|
||||
import com.glodblock.github.client.gui.GuiFCImgButton;
|
||||
import com.glodblock.github.common.item.ItemWirelessUltraTerminal;
|
||||
import com.glodblock.github.inventory.item.WirelessMagnet;
|
||||
import com.glodblock.github.network.CPacketFluidPatternTermBtns;
|
||||
import com.glodblock.github.network.CPacketSwitchGuis;
|
||||
@@ -24,6 +26,8 @@ public class UltraTerminalButtons implements ICustomButtonDataObject {
|
||||
|
||||
public static String restockItems = "restock";
|
||||
|
||||
private ItemStack terminal;
|
||||
|
||||
private GuiFCImgButton CraftingTerminal;
|
||||
private GuiFCImgButton PatternTerminal;
|
||||
private GuiFCImgButton InterfaceTerminal;
|
||||
@@ -45,6 +49,10 @@ public class UltraTerminalButtons implements ICustomButtonDataObject {
|
||||
|
||||
private int offset;
|
||||
|
||||
public UltraTerminalButtons(ItemStack terminal) {
|
||||
this.terminal = terminal;
|
||||
}
|
||||
|
||||
public void initCustomButtons(int guiLeft, int guiTop, int xSize, int ySize, int xOffset, int yOffset,
|
||||
List<GuiButton> buttonList) {
|
||||
this.offset = yOffset;
|
||||
@@ -93,16 +101,21 @@ public class UltraTerminalButtons implements ICustomButtonDataObject {
|
||||
@Override
|
||||
public boolean actionPerformedCustomButtons(final GuiButton btn) {
|
||||
if (btn instanceof GuiFCImgButton) {
|
||||
UltraTerminalModes mode = null;
|
||||
if (btn == this.CraftingTerminal) {
|
||||
FluidCraft.proxy.netHandler.sendToServer(new CPacketSwitchGuis(UltraTerminalModes.CRAFTING, true));
|
||||
mode = UltraTerminalModes.CRAFTING;
|
||||
} else if (btn == this.PatternTerminal) {
|
||||
FluidCraft.proxy.netHandler.sendToServer(new CPacketSwitchGuis(UltraTerminalModes.PATTERN, true));
|
||||
mode = UltraTerminalModes.PATTERN;
|
||||
} else if (btn == this.InterfaceTerminal) {
|
||||
FluidCraft.proxy.netHandler.sendToServer(new CPacketSwitchGuis(UltraTerminalModes.INTERFACE, true));
|
||||
mode = UltraTerminalModes.INTERFACE;
|
||||
} else if (btn == this.LevelTerminal) {
|
||||
FluidCraft.proxy.netHandler.sendToServer(new CPacketSwitchGuis(UltraTerminalModes.LEVEL, true));
|
||||
mode = UltraTerminalModes.LEVEL;
|
||||
} else if (btn == this.PatternTerminalEx) {
|
||||
FluidCraft.proxy.netHandler.sendToServer(new CPacketSwitchGuis(UltraTerminalModes.PATTERN_EX, true));
|
||||
mode = UltraTerminalModes.PATTERN_EX;
|
||||
}
|
||||
if (mode != null) {
|
||||
ItemWirelessUltraTerminal.setMode(this.terminal, mode);
|
||||
FluidCraft.proxy.netHandler.sendToServer(new CPacketSwitchGuis(mode, true));
|
||||
}
|
||||
|
||||
if (btn == this.magnetOff || btn == this.magnetME || btn == this.magnetInv) {
|
||||
|
||||
@@ -226,6 +226,6 @@ public class ItemWirelessUltraTerminal extends ItemBaseWirelessTerminal
|
||||
|
||||
@Override
|
||||
public ICustomButtonDataObject getCustomDataObject(ICustomButtonProvider provider) {
|
||||
return new UltraTerminalButtons();
|
||||
return new UltraTerminalButtons(((IGuiItemObject) provider).getItemStack());
|
||||
}
|
||||
}
|
||||
@@ -33,42 +33,57 @@ public class TileCertusQuartzTank extends TileEntity implements IFluidHandler {
|
||||
return tankFluid == null || tankFluid.amount == 0 ? 0 : tankFluid.getFluid().getLuminosity(tankFluid);
|
||||
}
|
||||
|
||||
public FluidStack drain(FluidStack fluid, boolean doDrain, boolean findMainTank) {
|
||||
if (fluid == null || this.getFluid() == null || this.getFluid() != fluid.getFluid()) {
|
||||
public FluidStack drain(Fluid fluid, int amount, boolean doDrain, boolean findMainTank) {
|
||||
if (fluid != null && this.getFluid() != fluid) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (findMainTank) {
|
||||
// Main tank is the highest tank in the column with desired fluid
|
||||
TileCertusQuartzTank mainTank = this;
|
||||
TileCertusQuartzTank tankAbove;
|
||||
|
||||
while ((tankAbove = mainTank.getTankAbove()) != null) {
|
||||
// We can't drain tank with different or null fluid
|
||||
if (fluid.getFluid() != tankAbove.getFluid()) {
|
||||
break;
|
||||
if (this.tank.getFluid() != null) {
|
||||
// Current tank has a fluid, searching for the highest tank with this fluid
|
||||
TileCertusQuartzTank tankAbove;
|
||||
while ((tankAbove = mainTank.getTankAbove()) != null) {
|
||||
// We can't drain tank with different or null fluid
|
||||
if (tankAbove.getFluid() == null || mainTank.getFluid() != tankAbove.getFluid()) {
|
||||
break;
|
||||
}
|
||||
mainTank = tankAbove;
|
||||
}
|
||||
} else {
|
||||
// Current tank doesn't have a fluid, searching for the first non-empty tank below
|
||||
TileCertusQuartzTank tankBelow;
|
||||
while ((tankBelow = mainTank.getTankBelow()) != null) {
|
||||
// We can't drain tank with different fluid
|
||||
if (fluid != null && tankBelow.getFluid() != fluid) {
|
||||
break;
|
||||
}
|
||||
mainTank = tankBelow;
|
||||
if (tankBelow.getFluid() != null) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
mainTank = tankAbove;
|
||||
}
|
||||
|
||||
return mainTank.drain(fluid, doDrain, false);
|
||||
return mainTank.drain(fluid, amount, doDrain, false);
|
||||
}
|
||||
|
||||
FluidStack drainedFluid = this.tank.drain(fluid.amount, doDrain);
|
||||
FluidStack drainedFluid = this.tank.drain(amount, doDrain);
|
||||
int drained = drainedFluid != null ? drainedFluid.amount : 0;
|
||||
|
||||
if (drained > 0) {
|
||||
update();
|
||||
}
|
||||
|
||||
if (drained < fluid.amount) {
|
||||
if (drained < amount) {
|
||||
TileCertusQuartzTank tankBelow = this.getTankBelow();
|
||||
if (tankBelow != null) {
|
||||
FluidStack fluidToDrain = new FluidStack(fluid.getFluid(), fluid.amount - drained);
|
||||
FluidStack externallyDrained = tankBelow.drain(fluidToDrain, doDrain, false);
|
||||
FluidStack externallyDrained = tankBelow.drain(fluid, amount - drained, doDrain, false);
|
||||
|
||||
if (externallyDrained != null) {
|
||||
return new FluidStack(fluid.getFluid(), drained + externallyDrained.amount);
|
||||
return new FluidStack(fluid, drained + externallyDrained.amount);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -78,14 +93,14 @@ public class TileCertusQuartzTank extends TileEntity implements IFluidHandler {
|
||||
|
||||
@Override
|
||||
public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) {
|
||||
return drain(resource, doDrain, true);
|
||||
if (resource == null) return null;
|
||||
|
||||
return drain(resource.getFluid(), resource.amount, doDrain, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) {
|
||||
if (this.tank.getFluid() == null) return null;
|
||||
|
||||
return drain(from, new FluidStack(this.tank.getFluid(), maxDrain), doDrain);
|
||||
return drain(null, maxDrain, true, true);
|
||||
}
|
||||
|
||||
public int fill(FluidStack fluid, boolean doFill, boolean findMainTank) {
|
||||
@@ -174,14 +189,14 @@ public class TileCertusQuartzTank extends TileEntity implements IFluidHandler {
|
||||
}
|
||||
|
||||
final FluidStack tankFluidStack = this.tank.getFluid();
|
||||
final Fluid mainFluid = tankFluidStack != null ? tankFluidStack.getFluid() : null;
|
||||
Fluid mainFluid = tankFluidStack != null ? tankFluidStack.getFluid() : null;
|
||||
|
||||
int amount = tankFluidStack == null ? 0 : tankFluidStack.amount;
|
||||
int capacity = this.tank.getCapacity();
|
||||
|
||||
TileCertusQuartzTank tankAbove = this;
|
||||
while ((tankAbove = tankAbove.getTankAbove()) != null) {
|
||||
if (tankAbove.getFluid() == null || mainFluid != tankAbove.getFluid()) {
|
||||
if (tankAbove.getFluid() != null && mainFluid != tankAbove.getFluid()) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -192,7 +207,10 @@ public class TileCertusQuartzTank extends TileEntity implements IFluidHandler {
|
||||
|
||||
TileCertusQuartzTank tankBelow = this;
|
||||
while ((tankBelow = tankBelow.getTankBelow()) != null) {
|
||||
if (mainFluid == null || mainFluid != tankBelow.getFluid()) {
|
||||
if (mainFluid == null && tankBelow.getFluid() != null) {
|
||||
mainFluid = tankBelow.getFluid();
|
||||
}
|
||||
if (mainFluid != tankBelow.getFluid()) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
+5
-3
@@ -20,9 +20,11 @@ public class CertusQuartzTankWailaDataProvider extends BaseWailaDataProvider {
|
||||
TileEntity tileEntity = accessor.getTileEntity();
|
||||
if (tileEntity instanceof TileCertusQuartzTank quartzTank) {
|
||||
FluidTankInfo info = quartzTank.getTankInfo(true)[0];
|
||||
if (info.fluid != null) {
|
||||
currentToolTip
|
||||
.add(Tooltip.fluidFormat(info.fluid.getLocalizedName(), info.fluid.amount, info.capacity));
|
||||
if (info.fluid == null) {
|
||||
currentToolTip.add(Tooltip.tankEmptyFormat(info.capacity));
|
||||
} else {
|
||||
currentToolTip.add(
|
||||
Tooltip.tankWithFluidFormat(info.fluid.getLocalizedName(), info.fluid.amount, info.capacity));
|
||||
}
|
||||
}
|
||||
return currentToolTip;
|
||||
|
||||
@@ -15,14 +15,18 @@ public class Tooltip {
|
||||
return String.format("%s: %s mB", name, NumberFormat.getInstance().format(amount));
|
||||
}
|
||||
|
||||
public static String fluidFormat(String name, long amount, long capacity) {
|
||||
public static String tankWithFluidFormat(String fluidName, long amount, long capacity) {
|
||||
return String.format(
|
||||
"%s: %s mB / %s mB",
|
||||
name,
|
||||
fluidName,
|
||||
NumberFormat.getInstance().format(amount),
|
||||
NumberFormat.getInstance().format(capacity));
|
||||
}
|
||||
|
||||
public static String tankEmptyFormat(long capacity) {
|
||||
return String.format("0 mB / %s mB", NumberFormat.getInstance().format(capacity));
|
||||
}
|
||||
|
||||
public static String partFluidBusFormat(int amount) {
|
||||
return String
|
||||
.format("%s: %s mB/t", I18n.format(NameConst.WAILA_SPEED), NumberFormat.getInstance().format(amount));
|
||||
|
||||
@@ -9,8 +9,10 @@ import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
|
||||
import com.glodblock.github.FluidCraft;
|
||||
import com.glodblock.github.common.item.ItemWirelessUltraTerminal;
|
||||
import com.glodblock.github.network.CPacketSwitchGuis;
|
||||
import com.glodblock.github.network.CPacketValueConfig;
|
||||
import com.glodblock.github.util.UltraTerminalModes;
|
||||
import com.glodblock.github.util.Util;
|
||||
|
||||
import cpw.mods.fml.client.registry.ClientRegistry;
|
||||
@@ -24,13 +26,43 @@ import cpw.mods.fml.relauncher.SideOnly;
|
||||
public class KeybindLoader implements Runnable {
|
||||
|
||||
public static KeyBinding openTerminal;
|
||||
public static KeyBinding openCraftingTerminal;
|
||||
public static KeyBinding openLevelTerminal;
|
||||
public static KeyBinding openInterfaceTerminal;
|
||||
public static KeyBinding openPatternTerminal;
|
||||
public static KeyBinding openPatternExTerminal;
|
||||
public static KeyBinding restock;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
openTerminal = new KeyBinding(FluidCraft.MODID + ".key.OpenTerminal", Keyboard.CHAR_NONE, "itemGroup.ae2fc");
|
||||
openCraftingTerminal = new KeyBinding(
|
||||
FluidCraft.MODID + ".key.OpenCraftingTerminal",
|
||||
Keyboard.CHAR_NONE,
|
||||
"itemGroup.ae2fc");
|
||||
openLevelTerminal = new KeyBinding(
|
||||
FluidCraft.MODID + ".key.OpenLevelTerminal",
|
||||
Keyboard.CHAR_NONE,
|
||||
"itemGroup.ae2fc");
|
||||
openInterfaceTerminal = new KeyBinding(
|
||||
FluidCraft.MODID + ".key.OpenInterfaceTerminal",
|
||||
Keyboard.CHAR_NONE,
|
||||
"itemGroup.ae2fc");
|
||||
openPatternTerminal = new KeyBinding(
|
||||
FluidCraft.MODID + ".key.OpenPatternTerminal",
|
||||
Keyboard.CHAR_NONE,
|
||||
"itemGroup.ae2fc");
|
||||
openPatternExTerminal = new KeyBinding(
|
||||
FluidCraft.MODID + ".key.OpenPatternExTerminal",
|
||||
Keyboard.CHAR_NONE,
|
||||
"itemGroup.ae2fc");
|
||||
restock = new KeyBinding(FluidCraft.MODID + ".key.Restock", Keyboard.CHAR_NONE, "itemGroup.ae2fc");
|
||||
ClientRegistry.registerKeyBinding(openTerminal);
|
||||
ClientRegistry.registerKeyBinding(openCraftingTerminal);
|
||||
ClientRegistry.registerKeyBinding(openLevelTerminal);
|
||||
ClientRegistry.registerKeyBinding(openInterfaceTerminal);
|
||||
ClientRegistry.registerKeyBinding(openPatternTerminal);
|
||||
ClientRegistry.registerKeyBinding(openPatternExTerminal);
|
||||
ClientRegistry.registerKeyBinding(restock);
|
||||
FMLCommonHandler.instance().bus().register(this);
|
||||
}
|
||||
@@ -38,29 +70,40 @@ public class KeybindLoader implements Runnable {
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SubscribeEvent
|
||||
public void onKeyInput(InputEvent.KeyInputEvent event) {
|
||||
if (openTerminal.isPressed()) {
|
||||
handleOpenTerminalKey();
|
||||
} else if (restock.isPressed()) {
|
||||
handleRestockKey();
|
||||
}
|
||||
handleKeybindings();
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SubscribeEvent
|
||||
public void onMouseInput(InputEvent.MouseInputEvent event) {
|
||||
handleKeybindings();
|
||||
}
|
||||
|
||||
private void handleKeybindings() {
|
||||
if (openTerminal.isPressed()) {
|
||||
handleOpenTerminalKey();
|
||||
handleOpenTerminalKey(null);
|
||||
} else if (openCraftingTerminal.isPressed()) {
|
||||
handleOpenTerminalKey(UltraTerminalModes.CRAFTING);
|
||||
} else if (openLevelTerminal.isPressed()) {
|
||||
handleOpenTerminalKey(UltraTerminalModes.LEVEL);
|
||||
} else if (openInterfaceTerminal.isPressed()) {
|
||||
handleOpenTerminalKey(UltraTerminalModes.INTERFACE);
|
||||
} else if (openPatternTerminal.isPressed()) {
|
||||
handleOpenTerminalKey(UltraTerminalModes.PATTERN);
|
||||
} else if (openPatternExTerminal.isPressed()) {
|
||||
handleOpenTerminalKey(UltraTerminalModes.PATTERN_EX);
|
||||
} else if (restock.isPressed()) {
|
||||
handleRestockKey();
|
||||
}
|
||||
}
|
||||
|
||||
private void handleOpenTerminalKey() {
|
||||
private void handleOpenTerminalKey(UltraTerminalModes mode) {
|
||||
if (Minecraft.getMinecraft().currentScreen != null) return;
|
||||
EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
ImmutablePair<Integer, ItemStack> temp = Util.getUltraWirelessTerm(player);
|
||||
if (temp == null) return;
|
||||
FluidCraft.proxy.netHandler.sendToServer(new CPacketSwitchGuis(null, true));
|
||||
if (mode != null) ItemWirelessUltraTerminal.setMode(temp.getRight(), mode);
|
||||
FluidCraft.proxy.netHandler.sendToServer(new CPacketSwitchGuis(mode, true));
|
||||
}
|
||||
|
||||
private void handleRestockKey() {
|
||||
|
||||
@@ -219,6 +219,11 @@ ae2fc.gui.color.StateError=FFFF5555
|
||||
error.unknown=Unknown
|
||||
|
||||
ae2fc.key.OpenTerminal=Open Wireless Universal Terminal
|
||||
ae2fc.key.OpenCraftingTerminal=Open Wireless Universal Crafting Terminal
|
||||
ae2fc.key.OpenLevelTerminal=Open Wireless Universal Level Terminal
|
||||
ae2fc.key.OpenInterfaceTerminal=Open Wireless Universal Interface Terminal
|
||||
ae2fc.key.OpenPatternTerminal=Open Wireless Universal Pattern Terminal
|
||||
ae2fc.key.OpenPatternExTerminal=Open Wireless Universal Processing Pattern Terminal
|
||||
ae2fc.key.Restock=Toggle Restock
|
||||
|
||||
itemGroup.ae2fc=Fluid Craft For AE2
|
||||
|
||||
Reference in new issue
Block a user