aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/common')
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java134
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java10
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java7
3 files changed, 113 insertions, 38 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java
index 34f038b2ea..1e7dc28e91 100644
--- a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java
+++ b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java
@@ -3,7 +3,8 @@ package gregtech.common.tileentities.machines;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_ME_INPUT_HATCH;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_ME_INPUT_HATCH_ACTIVE;
-import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.EnumSet;
import java.util.Iterator;
import java.util.List;
@@ -16,20 +17,20 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
-import com.google.common.collect.ImmutableList;
+import com.gtnewhorizons.modularui.api.ModularUITextures;
import com.gtnewhorizons.modularui.api.drawable.IDrawable;
-import com.gtnewhorizons.modularui.api.drawable.UITexture;
import com.gtnewhorizons.modularui.api.math.Alignment;
import com.gtnewhorizons.modularui.api.math.Color;
import com.gtnewhorizons.modularui.api.math.Size;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
+import com.gtnewhorizons.modularui.common.internal.wrapper.BaseSlot;
import com.gtnewhorizons.modularui.common.widget.ButtonWidget;
import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
@@ -48,6 +49,7 @@ import appeng.api.networking.security.MachineSource;
import appeng.api.storage.IMEMonitor;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.util.AECableType;
+import appeng.core.localization.WailaText;
import appeng.me.GridAccessException;
import appeng.me.helpers.AENetworkProxy;
import appeng.me.helpers.IGridProxyable;
@@ -61,6 +63,10 @@ import gregtech.api.interfaces.modularui.IAddUIWidgets;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase;
+import gregtech.api.recipe.check.CheckRecipeResult;
+import gregtech.api.recipe.check.CheckRecipeResultRegistry;
+import gregtech.api.recipe.check.SimpleCheckRecipeResult;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_Utility;
import gregtech.common.gui.modularui.widget.AESlotWidget;
@@ -140,9 +146,9 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch
public void setAdditionalConnectionOption() {
if (additionalConnection) {
- gridProxy.setValidSides(EnumSet.complementOf(EnumSet.of(ForgeDirection.UNKNOWN)));
+ getProxy().setValidSides(EnumSet.complementOf(EnumSet.of(ForgeDirection.UNKNOWN)));
} else {
- gridProxy.setValidSides(EnumSet.of(getBaseMetaTileEntity().getFrontFacing()));
+ getProxy().setValidSides(EnumSet.of(getBaseMetaTileEntity().getFrontFacing()));
}
}
@@ -176,9 +182,6 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch
}
@Override
- public void gridChanged() {}
-
- @Override
public boolean isPowered() {
return getProxy() != null && getProxy().isPowered();
}
@@ -260,7 +263,9 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch
@Override
public void onScrewdriverRightClick(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) {
setAutoPullItemList(!autoPullItemList);
- GT_Utility.sendChatToPlayer(aPlayer, "Automatic Item Pull " + autoPullItemList);
+ aPlayer.addChatMessage(
+ new ChatComponentTranslation(
+ "GT5U.machines.stocking_bus.auto_pull_toggle." + (autoPullItemList ? "enabled" : "disabled")));
}
@Override
@@ -295,7 +300,7 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch
}
setInventorySlotContents(getCircuitSlot(), circuit);
setAdditionalConnectionOption();
- aPlayer.addChatMessage(new ChatComponentText("Loaded Config From Data Stick"));
+ aPlayer.addChatMessage(new ChatComponentTranslation("GT5U.machines.stocking_bus.loaded"));
return true;
}
@@ -323,7 +328,7 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch
}
dataStick.stackTagCompound = tag;
dataStick.setStackDisplayName("Stocking Input Bus Configuration");
- aPlayer.addChatMessage(new ChatComponentText("Saved Config to Data Stick"));
+ aPlayer.addChatMessage(new ChatComponentTranslation("GT5U.machines.stocking_bus.saved"));
}
private int getManualSlot() {
@@ -435,7 +440,8 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch
}
@Override
- public void endRecipeProcessing() {
+ public CheckRecipeResult endRecipeProcessing(GT_MetaTileEntity_MultiBlockBase controller) {
+ CheckRecipeResult checkRecipeResult = CheckRecipeResultRegistry.SUCCESSFUL;
for (int i = 0; i < SLOT_COUNT; ++i) {
if (savedStackSizes[i] != 0) {
ItemStack oldStack = shadowInventory[i];
@@ -445,11 +451,17 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch
IMEMonitor<IAEItemStack> sg = proxy.getStorage()
.getItemInventory();
IAEItemStack request = AEItemStack.create(mInventory[i]);
- request.setStackSize(savedStackSizes[i] - (oldStack == null ? 0 : oldStack.stackSize));
- sg.extractItems(request, Actionable.MODULATE, getRequestSource());
+ int toExtract = savedStackSizes[i] - (oldStack == null ? 0 : oldStack.stackSize);
+ request.setStackSize(toExtract);
+ IAEItemStack result = sg.extractItems(request, Actionable.MODULATE, getRequestSource());
proxy.getEnergy()
.extractAEPower(request.getStackSize(), Actionable.MODULATE, PowerMultiplier.CONFIG);
setInventorySlotContents(i + SLOT_COUNT, oldStack);
+ if (result == null || result.getStackSize() != toExtract) {
+ controller.criticalStopMachine();
+ checkRecipeResult = SimpleCheckRecipeResult
+ .ofFailurePersistOnShutdown("stocking_bus_fail_extraction");
+ }
} catch (final GridAccessException ignored) {}
}
savedStackSizes[i] = 0;
@@ -457,6 +469,7 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch
}
}
processingRecipe = false;
+ return checkRecipeResult;
}
public ItemStack updateInformationSlot(int aIndex, ItemStack aStack) {
@@ -490,6 +503,11 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch
}
@Override
+ public int getGUIHeight() {
+ return 179;
+ }
+
+ @Override
public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
final SlotWidget[] aeSlotWidgets = new SlotWidget[16];
buildContext.addSyncedWindow(CONFIG_WINDOW_ID, this::createStackSizeConfigurationWindow);
@@ -498,12 +516,18 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch
.startFromSlot(0)
.endAtSlot(15)
.phantom(true)
- .background(getGUITextureSet().getItemSlot(), GT_UITextures.OVERLAY_SLOT_ARROW_ME)
- .widgetCreator(slot -> new SlotWidget(slot) {
+ .slotCreator(index -> new BaseSlot(inventoryHandler, index, true) {
+
+ @Override
+ public boolean isEnabled() {
+ return !autoPullItemList && super.isEnabled();
+ }
+ })
+ .widgetCreator(slot -> (SlotWidget) new SlotWidget(slot) {
@Override
protected void phantomClick(ClickData clickData, ItemStack cursorStack) {
- if (clickData.mouseButton != 0 || autoPullItemList) return;
+ if (clickData.mouseButton != 0 || !getMcSlot().isEnabled()) return;
final int aSlotIndex = getMcSlot().getSlotIndex();
if (cursorStack == null) {
getMcSlot().putStack(null);
@@ -518,13 +542,43 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch
}
}
+ @Override
+ public IDrawable[] getBackground() {
+ IDrawable slot;
+ if (autoPullItemList) {
+ slot = GT_UITextures.SLOT_DARK_GRAY;
+ } else {
+ slot = ModularUITextures.ITEM_SLOT;
+ }
+ return new IDrawable[] { slot, GT_UITextures.OVERLAY_SLOT_ARROW_ME };
+ }
+
+ @Override
+ public List<String> getExtraTooltip() {
+ if (autoPullItemList) {
+ return Collections.singletonList(
+ StatCollector.translateToLocal("GT5U.machines.stocking_bus.cannot_set_slot"));
+ } else {
+ return Collections
+ .singletonList(StatCollector.translateToLocal("modularui.phantom.single.clear"));
+ }
+ }
+
private boolean containsSuchStack(ItemStack tStack) {
for (int i = 0; i < 16; ++i) {
if (GT_Utility.areStacksEqual(mInventory[i], tStack, false)) return true;
}
return false;
}
+ }.dynamicTooltip(() -> {
+ if (autoPullItemList) {
+ return Collections.singletonList(
+ StatCollector.translateToLocal("GT5U.machines.stocking_bus.cannot_set_slot"));
+ } else {
+ return Collections.emptyList();
+ }
})
+ .setUpdateTooltipEveryTick(true))
.build()
.setPos(7, 9))
.widget(
@@ -549,26 +603,37 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch
.openSyncedWindow(CONFIG_WINDOW_ID);
}
})
- .setPlayClickSound(true)
.setBackground(() -> {
- List<UITexture> ret = new ArrayList<>();
- ret.add(GT_UITextures.BUTTON_STANDARD);
- if (autoPullItemList) ret.add(GT_UITextures.OVERLAY_BUTTON_AUTOPULL_ME);
- else ret.add(GT_UITextures.OVERLAY_BUTTON_AUTOPULL_ME_DISABLED);
- return ret.toArray(new IDrawable[0]);
+ if (autoPullItemList) {
+ return new IDrawable[] { GT_UITextures.BUTTON_STANDARD_PRESSED,
+ GT_UITextures.OVERLAY_BUTTON_AUTOPULL_ME };
+ } else {
+ return new IDrawable[] { GT_UITextures.BUTTON_STANDARD,
+ GT_UITextures.OVERLAY_BUTTON_AUTOPULL_ME_DISABLED };
+ }
})
.addTooltips(
- ImmutableList.of(
- "Click to toggle automatic item pulling from ME.",
- "Right-Click to edit minimum stack size for item pulling."))
+ Arrays.asList(
+ StatCollector.translateToLocal("GT5U.machines.stocking_bus.auto_pull.tooltip"),
+ StatCollector.translateToLocal("GT5U.machines.stocking_bus.auto_pull.tooltip.1")))
.setSize(16, 16)
.setPos(80, 10))
.widget(new FakeSyncWidget.BooleanSyncer(() -> autoPullItemList, this::setAutoPullItemList))
+ .widget(TextWidget.dynamicString(() -> {
+ boolean isActive = isActive();
+ boolean isPowered = isPowered();
+ boolean isBooting = isBooting();
+ EnumChatFormatting color = (isActive && isPowered) ? EnumChatFormatting.GREEN
+ : EnumChatFormatting.DARK_RED;
+ return color + WailaText.getPowerState(isActive, isPowered, isBooting);
+ })
+ .setTextAlignment(Alignment.Center)
+ .setSize(90, 9)
+ .setPos(43, 84))
.widget(
new SlotWidget(inventoryHandler, getManualSlot())
// ghost slots are prioritized over manual slot
.setShiftClickPriority(11)
- .setBackground(getGUITextureSet().getItemSlot())
.setPos(79, 45));
}
@@ -587,7 +652,8 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch
Alignment.TopRight.getAlignedPos(new Size(PARENT_WIDTH, PARENT_HEIGHT), new Size(WIDTH, HEIGHT))
.add(WIDTH - 3, 0)));
builder.widget(
- new TextWidget("Min Stack Size").setPos(3, 2)
+ TextWidget.localised("GT5U.machines.stocking_bus.min_stack_size")
+ .setPos(3, 2)
.setSize(74, 14))
.widget(
new TextFieldWidget().setSetterInt(val -> minAutoPullStackSize = val)
@@ -616,8 +682,14 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch
NBTTagCompound tag = accessor.getNBTData();
boolean autopull = tag.getBoolean("autoPull");
int minSize = tag.getInteger("minStackSize");
- currenttip.add(String.format("Auto-Pull from ME: %s", autopull ? "Enabled" : "Disabled"));
- if (autopull) currenttip.add(String.format("Minimum Stack Size: %d", minSize));
+ currenttip.add(
+ StatCollector.translateToLocal("GT5U.waila.stocking_bus.auto_pull." + (autopull ? "enabled" : "disabled")));
+ if (autopull) {
+ currenttip.add(
+ StatCollector.translateToLocalFormatted(
+ "GT5U.waila.stocking_bus.min_stack_size",
+ GT_Utility.formatNumbers(minSize)));
+ }
super.getWailaBody(itemStack, currenttip, accessor, config);
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java
index 6470065923..e884922710 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java
@@ -845,9 +845,10 @@ public abstract class GT_MetaTileEntity_DrillerBase
.setBackground(() -> {
if (mChunkLoadingEnabled) {
return new IDrawable[] { GT_UITextures.BUTTON_STANDARD_PRESSED,
- GT_UITextures.OVERLAY_CHUNK_LOADING };
+ GT_UITextures.OVERLAY_BUTTON_CHUNK_LOADING };
}
- return new IDrawable[] { GT_UITextures.BUTTON_STANDARD, GT_UITextures.OVERLAY_CHUNK_LOADING_OFF };
+ return new IDrawable[] { GT_UITextures.BUTTON_STANDARD,
+ GT_UITextures.OVERLAY_BUTTON_CHUNK_LOADING_OFF };
})
.attachSyncer(
new FakeSyncWidget.BooleanSyncer(
@@ -869,9 +870,10 @@ public abstract class GT_MetaTileEntity_DrillerBase
.setBackground(() -> {
if (workState == STATE_ABORT) {
return new IDrawable[] { GT_UITextures.BUTTON_STANDARD_PRESSED,
- GT_UITextures.OVERLAY_RETRACT_PIPE, GT_UITextures.OVERLAY_BUTTON_LOCKED };
+ GT_UITextures.OVERLAY_BUTTON_RETRACT_PIPE, GT_UITextures.OVERLAY_BUTTON_LOCKED };
}
- return new IDrawable[] { GT_UITextures.BUTTON_STANDARD, GT_UITextures.OVERLAY_RETRACT_PIPE };
+ return new IDrawable[] { GT_UITextures.BUTTON_STANDARD,
+ GT_UITextures.OVERLAY_BUTTON_RETRACT_PIPE };
})
.attachSyncer(
new FakeSyncWidget.IntegerSyncer(() -> workState, (newInt) -> workState = newInt),
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java
index a48bb1dee8..935c8c0032 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java
@@ -638,7 +638,7 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile
(ButtonWidget) new GT_LockedWhileActiveButton(this.getBaseMetaTileEntity(), builder)
.setOnClick((clickData, widget) -> adjustChunkRadius(clickData.mouseButton == 0))
.setPlayClickSound(true)
- .setBackground(GT_UITextures.BUTTON_STANDARD, GT_UITextures.OVERLAY_WORK_AREA)
+ .setBackground(GT_UITextures.BUTTON_STANDARD, GT_UITextures.OVERLAY_BUTTON_WORK_AREA)
.attachSyncer(
new FakeSyncWidget.IntegerSyncer(() -> chunkRadiusConfig, (val) -> chunkRadiusConfig = val),
builder,
@@ -657,9 +657,10 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile
.setBackground(() -> {
if (replaceWithCobblestone) {
return new IDrawable[] { GT_UITextures.BUTTON_STANDARD_PRESSED,
- GT_UITextures.OVERLAY_REPLACE_COBBLE_ON };
+ GT_UITextures.OVERLAY_BUTTON_REPLACE_COBBLE_ON };
}
- return new IDrawable[] { GT_UITextures.BUTTON_STANDARD, GT_UITextures.OVERLAY_REPLACE_COBBLE_OFF };
+ return new IDrawable[] { GT_UITextures.BUTTON_STANDARD,
+ GT_UITextures.OVERLAY_BUTTON_REPLACE_COBBLE_OFF };
})
.attachSyncer(
new FakeSyncWidget.BooleanSyncer(