aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/metatileentity/CommonMetaTileEntity.java
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2022-11-26 01:45:28 +0900
committerGitHub <noreply@github.com>2022-11-25 17:45:28 +0100
commit9a2741128a78bb52eba50a631126e090a5a2abd8 (patch)
treea90f47aa94951acb4050e45dc3ed60698e79cf32 /src/main/java/gregtech/api/metatileentity/CommonMetaTileEntity.java
parent51537482fefc4f9c6d3fbd93d119c333a63dcd7b (diff)
downloadGT5-Unofficial-9a2741128a78bb52eba50a631126e090a5a2abd8.tar.gz
GT5-Unofficial-9a2741128a78bb52eba50a631126e090a5a2abd8.tar.bz2
GT5-Unofficial-9a2741128a78bb52eba50a631126e090a5a2abd8.zip
Rewrite GUIs with ModularUI (#1381)
* Base work for ModularUI compat * Remove useless interface * Add almost all the widgets * Invert method * Refactor NEI stack placement positions * NEI handlers on ModularUI * Add some more docs * AdvDebugStructureWriter * Fix NEI progressbar not working * PrimitiveBlastFurnace * clean * derp * clean * spotlessApply * Boilers * Buffers * clean * N by N slots containers * Fix boilers not having bucket interaction Put opening UI to individual MetaTEs * Maintenance Hatch * clean * spotlessApply * Add dependency * IndustrialApiary * Adapt to ModularUI change * Base work for covers & fix crash with MP * Fix crash with server * Rewrite base work for covers * Send initial cover data on cover GUI open so that the time of showing incorrect data will be eliminated * Covers part 1 * Rename package: ModularUI -> modularui * Rename class: GT_UIInfo -> GT_UIInfos * Fix build * Covers part2 * Fix missing client check with tile UI & fix title overlap * CoverTabLine * Move cover window creators to inner class * Fix crash with null base TE * Close GUI when tile is broken * Color cover window with tile colorization * Change signature of addUIWidgets * FluidFilter cover, FluidDisplaySlotWidget, BasicTank, BasicGenerator, Output Hatch, MicrowaveEnergyTransmitter, Teleporter, DigitalChest, DigitalTank * Add title tab * Move package: modularui -> modularui/widget * Programmed circuit + IConfigurationCircuitSupport * clean * VolumetricFlask * Remove integrated circuit overlay from recipe input slots * Input Hatch & Quadruple Input Hatch * Multiblock * Deprecate old cover GUI * BasicMachines * Finish BasicMachine & NEI * Expand DTPF NEI to 9 slots * Fix ME input bus on MP * Move AESlotWidget to public class * Move GT_Recipe_Map constructors with mNEIUnificateOutput to setter method * Move SteamTexture.Variant to outer enum * Switch to remote repository * oops * Update MUI * Update MUI * Minor refactor for change amount buttons * Display items and fluids that exceed usual count * blah * use +=, why didn't I do this * Update MUI * Move ModularUI to Base (#1510) * Move ModularUI to Base * Move most of the ModularUI functionality to `BaseTileEntity` (and `CoverableTileEntity`) * `CommonMetaTileEntity` delegates ato the MetaTileEntity * Added several interfaces (with defaults) to indicate if a tile/metatile override/implement certain behaviors. * Moved `IConfigurationCircuitSupport` interface such that it will work with BaseTileEntity or a MetaTileEntity * Address reviews Co-authored-by: miozune <miozune@gmail.com> * Update MUI * Minor changes to NEI * Return :facepalm: * IGetTabIconSet override * Some more changes to NEI * Merge texture getter interfaces to new class GUITextureSet * Remove BBF structure picture as it's auto-buildable now * Make unified title tab style of texture angular * Expose some boiler texture getters for addon * Fix crash with cover GUI on pipe * Lower the number of recipe per page for DTPF & update MUI * Update MUI * Fix crash with middle-clicking slot on circuit selection GUI * Fix circuit selection window not syncing item from base machine * Merge GT_NEI_AssLineHandler into GT_NEI_DefaultHandler * Update MUI * Add in TecTech multi message * Allow changing the way of binding player inventory * Update MUI * Update MUI * Update MUI * Update MUI * Update MUI * Make MUI non-transitive to allow addons to use their own version * Force enable mixin * Format fluid amount tooltip * Add GUITextureSet.STEAM * Add guard against null ModularWindow creation * Add constructors for Muffler Hatch with inventory * Fix output slot on digital chest and tank allowing insertion * Don't log null ModularWindow * Add default implementation for IHasWorldObjectAndCoords#openGUI * Make openGTTileEntityUI accept MultiTE & cleanup Co-authored-by: Jason Mitchell <mitchej@gmail.com>
Diffstat (limited to 'src/main/java/gregtech/api/metatileentity/CommonMetaTileEntity.java')
-rw-r--r--src/main/java/gregtech/api/metatileentity/CommonMetaTileEntity.java128
1 files changed, 128 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/CommonMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/CommonMetaTileEntity.java
index bf835b51bb..e2860d6292 100644
--- a/src/main/java/gregtech/api/metatileentity/CommonMetaTileEntity.java
+++ b/src/main/java/gregtech/api/metatileentity/CommonMetaTileEntity.java
@@ -2,9 +2,18 @@ package gregtech.api.metatileentity;
import static gregtech.GT_Mod.GT_FML_LOGGER;
+import com.gtnewhorizons.modularui.api.forge.ItemStackHandler;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
+import gregtech.api.gui.modularui.GUITextureSet;
+import gregtech.api.interfaces.IConfigurationCircuitSupport;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.modularui.IAddGregtechLogo;
+import gregtech.api.interfaces.modularui.IAddUIWidgets;
+import gregtech.api.interfaces.modularui.IBindPlayerInventoryUI;
+import gregtech.api.interfaces.modularui.IGetTitleColor;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.objects.GT_ItemStack;
import gregtech.api.util.GT_Log;
@@ -167,4 +176,123 @@ public abstract class CommonMetaTileEntity extends CoverableTileEntity implement
final IMetaTileEntity meta = getMetaTileEntity();
return meta != null && meta.shouldJoinIc2Enet();
}
+
+ /*
+ * Modular UI Support
+ */
+
+ @Override
+ public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
+ if (hasValidMetaTileEntity() && getMetaTileEntity() instanceof IAddUIWidgets) {
+ ((IAddUIWidgets) getMetaTileEntity()).addUIWidgets(builder, buildContext);
+ return;
+ }
+ super.addUIWidgets(builder, buildContext);
+ }
+
+ @Override
+ public void bindPlayerInventoryUI(ModularWindow.Builder builder, UIBuildContext buildContext) {
+ if (hasValidMetaTileEntity() && getMetaTileEntity() instanceof IBindPlayerInventoryUI) {
+ ((IBindPlayerInventoryUI) getMetaTileEntity()).bindPlayerInventoryUI(builder, buildContext);
+ return;
+ }
+ super.bindPlayerInventoryUI(builder, buildContext);
+ }
+
+ @Override
+ public IConfigurationCircuitSupport getConfigurationCircuitSupport() {
+ if (hasValidMetaTileEntity() && getMetaTileEntity() instanceof IConfigurationCircuitSupport) {
+ return (IConfigurationCircuitSupport) getMetaTileEntity();
+ }
+ return null;
+ }
+
+ @Override
+ public ItemStackHandler getInventoryHandler() {
+ if (hasValidMetaTileEntity()) {
+ return getMetaTileEntity().getInventoryHandler();
+ }
+ return null;
+ }
+
+ @Override
+ public boolean useModularUI() {
+ return hasValidMetaTileEntity() && getMetaTileEntity().useModularUI();
+ }
+
+ @Override
+ public String getLocalName() {
+ if (hasValidMetaTileEntity()) return getMetaTileEntity().getLocalName();
+ return super.getLocalName();
+ }
+
+ @Override
+ protected int getGUIWidth() {
+ if (hasValidMetaTileEntity()) return getMetaTileEntity().getGUIWidth();
+
+ return super.getGUIWidth();
+ }
+
+ @Override
+ protected int getGUIHeight() {
+ if (hasValidMetaTileEntity()) return getMetaTileEntity().getGUIHeight();
+
+ return super.getGUIHeight();
+ }
+
+ @Override
+ protected boolean doesBindPlayerInventory() {
+ if (hasValidMetaTileEntity()) return getMetaTileEntity().doesBindPlayerInventory();
+
+ return super.doesBindPlayerInventory();
+ }
+
+ @Override
+ public void addGregTechLogo(ModularWindow.Builder builder) {
+ if (hasValidMetaTileEntity() && getMetaTileEntity() instanceof IAddGregtechLogo) {
+ ((IAddGregtechLogo) getMetaTileEntity()).addGregTechLogo(builder);
+ return;
+ }
+ super.addGregTechLogo(builder);
+ }
+
+ @Override
+ public ItemStack getStackForm(long aAmount) {
+ if (hasValidMetaTileEntity()) {
+ return getMetaTileEntity().getStackForm(aAmount);
+ }
+ return super.getStackForm(aAmount);
+ }
+
+ @Override
+ public int getTitleColor() {
+ if (hasValidMetaTileEntity() && getMetaTileEntity() instanceof IGetTitleColor) {
+ return ((IGetTitleColor) getMetaTileEntity()).getTitleColor();
+ }
+ return super.getTitleColor();
+ }
+
+ @Override
+ public int getGUIColorization() {
+ if (hasValidMetaTileEntity()) {
+ return getMetaTileEntity().getGUIColorization();
+ }
+ return super.getGUIColorization();
+ }
+
+ @Override
+ protected int getTextColorOrDefault(String textType, int defaultColor) {
+ if (hasValidMetaTileEntity()) {
+ return getMetaTileEntity().getTextColorOrDefault(textType, defaultColor);
+ }
+ return defaultColor;
+ }
+
+ @Override
+ public GUITextureSet getGUITextureSet() {
+ if (hasValidMetaTileEntity()) {
+ return getMetaTileEntity().getGUITextureSet();
+ }
+ return super.getGUITextureSet();
+ }
}