aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kubatech/api')
-rw-r--r--src/main/java/kubatech/api/helpers/ReflectionHelper.java10
-rw-r--r--src/main/java/kubatech/api/implementations/KubaTechGTMultiBlockBase.java47
2 files changed, 51 insertions, 6 deletions
diff --git a/src/main/java/kubatech/api/helpers/ReflectionHelper.java b/src/main/java/kubatech/api/helpers/ReflectionHelper.java
index 404d1de5f9..19b8ecd026 100644
--- a/src/main/java/kubatech/api/helpers/ReflectionHelper.java
+++ b/src/main/java/kubatech/api/helpers/ReflectionHelper.java
@@ -18,8 +18,8 @@ public class ReflectionHelper {
private static class _FieldsMethods {
- HashMap<String, Field> fields = new HashMap<>();
- HashMap<String, Method> methods = new HashMap<>();
+ final HashMap<String, Field> fields = new HashMap<>();
+ final HashMap<String, Method> methods = new HashMap<>();
}
private static final HashMap<String, _FieldsMethods> classes = new HashMap<>();
@@ -35,7 +35,7 @@ public class ReflectionHelper {
if (f == null) return defaultvalue;
return (T) f.get(obj);
}
- boolean exceptionDetected = false;
+ boolean exceptionDetected;
Field f = null;
do {
exceptionDetected = false;
@@ -66,7 +66,7 @@ public class ReflectionHelper {
f.set(obj, value);
return true;
}
- boolean exceptionDetected = false;
+ boolean exceptionDetected;
Field f = null;
do {
exceptionDetected = false;
@@ -110,7 +110,7 @@ public class ReflectionHelper {
if (m == null) return defaultValue;
return (T) m.invoke(obj, args);
}
- boolean exceptionDetected = false;
+ boolean exceptionDetected;
Method m = null;
do {
exceptionDetected = false;
diff --git a/src/main/java/kubatech/api/implementations/KubaTechGTMultiBlockBase.java b/src/main/java/kubatech/api/implementations/KubaTechGTMultiBlockBase.java
index 0b31c27011..732dbba88a 100644
--- a/src/main/java/kubatech/api/implementations/KubaTechGTMultiBlockBase.java
+++ b/src/main/java/kubatech/api/implementations/KubaTechGTMultiBlockBase.java
@@ -8,17 +8,62 @@ import java.util.Arrays;
import java.util.function.Function;
import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fluids.FluidStack;
import com.gtnewhorizons.modularui.api.drawable.IDrawable;
+import com.gtnewhorizons.modularui.api.screen.ITileWithModularUI;
+import com.gtnewhorizons.modularui.api.screen.ModularUIContext;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
import com.gtnewhorizons.modularui.api.widget.Widget;
+import com.gtnewhorizons.modularui.common.builder.UIBuilder;
+import com.gtnewhorizons.modularui.common.builder.UIInfo;
+import com.gtnewhorizons.modularui.common.internal.wrapper.ModularGui;
+import com.gtnewhorizons.modularui.common.internal.wrapper.ModularUIContainer;
import gregtech.api.gui.modularui.GT_UITextures;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.metatileentity.BaseMetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_ExtendedPowerMultiBlockBase;
public abstract class KubaTechGTMultiBlockBase<T extends GT_MetaTileEntity_ExtendedPowerMultiBlockBase<T>>
extends GT_MetaTileEntity_ExtendedPowerMultiBlockBase<T> {
+ @SuppressWarnings("unchecked")
+ protected static <K extends KubaTechGTMultiBlockBase<?>> UIInfo<?, ?> createKTMetaTileEntityUI(
+ KTContainerConstructor<K> containerConstructor) {
+ return UIBuilder.of().container((player, world, x, y, z) -> {
+ TileEntity te = world.getTileEntity(x, y, z);
+ if (te instanceof BaseMetaTileEntity) {
+ IMetaTileEntity mte = ((BaseMetaTileEntity) te).getMetaTileEntity();
+ if (!(mte instanceof KubaTechGTMultiBlockBase)) return null;
+ final UIBuildContext buildContext = new UIBuildContext(player);
+ final ModularWindow window = ((ITileWithModularUI) te).createWindow(buildContext);
+ return containerConstructor.of(new ModularUIContext(buildContext, te::markDirty), window, (K) mte);
+ }
+ return null;
+ }).gui(((player, world, x, y, z) -> {
+ if (!world.isRemote) return null;
+ TileEntity te = world.getTileEntity(x, y, z);
+ if (te instanceof BaseMetaTileEntity) {
+ IMetaTileEntity mte = ((BaseMetaTileEntity) te).getMetaTileEntity();
+ if (!(mte instanceof KubaTechGTMultiBlockBase)) return null;
+ final UIBuildContext buildContext = new UIBuildContext(player);
+ final ModularWindow window = ((ITileWithModularUI) te).createWindow(buildContext);
+ return new ModularGui(
+ containerConstructor.of(new ModularUIContext(buildContext, null), window, (K) mte));
+ }
+ return null;
+ })).build();
+ }
+
+ @FunctionalInterface
+ protected interface KTContainerConstructor<T extends KubaTechGTMultiBlockBase<?>> {
+
+ ModularUIContainer of(ModularUIContext context, ModularWindow mainWindow, T multiBlock);
+ }
+
protected KubaTechGTMultiBlockBase(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);
}
@@ -30,7 +75,7 @@ public abstract class KubaTechGTMultiBlockBase<T extends GT_MetaTileEntity_Exten
/**
* Enables infinite overclocking (will give more outputs with more energy past 1 tick) Currently doesn't support
* recipe inputs
- *
+ *
* @return If this supports infinite overclock
*/
protected boolean isOverclockingInfinite() {