aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/goodgenerator/blocks/tileEntity/MTEEssentiaOutputHatchME.java
diff options
context:
space:
mode:
authorNotAPenguin <michiel.vandeginste@gmail.com>2024-09-02 23:17:17 +0200
committerGitHub <noreply@github.com>2024-09-02 23:17:17 +0200
commit1b820de08a05070909a267e17f033fcf58ac8710 (patch)
tree02831a025986a06b20f87e5bcc69d1e0c639a342 /src/main/java/goodgenerator/blocks/tileEntity/MTEEssentiaOutputHatchME.java
parentafd3fd92b6a6ab9ab0d0dc3214e6bc8ff7a86c9b (diff)
downloadGT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.gz
GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.bz2
GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.zip
The Great Renaming (#3014)
* move kekztech to a single root dir * move detrav to a single root dir * move gtnh-lanthanides to a single root dir * move tectech and delete some gross reflection in gt++ * remove more reflection inside gt5u * delete more reflection in gt++ * fix imports * move bartworks and bwcrossmod * fix proxies * move galactigreg and ggfab * move gtneioreplugin * try to fix gt++ bee loader * apply the rename rules to BW * apply rename rules to bwcrossmod * apply rename rules to detrav scanner mod * apply rename rules to galacticgreg * apply rename rules to ggfab * apply rename rules to goodgenerator * apply rename rules to gtnh-lanthanides * apply rename rules to gt++ * apply rename rules to kekztech * apply rename rules to kubatech * apply rename rules to tectech * apply rename rules to gt apply the rename rules to gt * fix tt import * fix mui hopefully * fix coremod except intergalactic * rename assline recipe class * fix a class name i stumbled on * rename StructureUtility to GTStructureUtility to prevent conflict with structurelib * temporary rename of GTTooltipDataCache to old name * fix gt client/server proxy names
Diffstat (limited to 'src/main/java/goodgenerator/blocks/tileEntity/MTEEssentiaOutputHatchME.java')
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/MTEEssentiaOutputHatchME.java150
1 files changed, 150 insertions, 0 deletions
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/MTEEssentiaOutputHatchME.java b/src/main/java/goodgenerator/blocks/tileEntity/MTEEssentiaOutputHatchME.java
new file mode 100644
index 0000000000..4e8bba61ec
--- /dev/null
+++ b/src/main/java/goodgenerator/blocks/tileEntity/MTEEssentiaOutputHatchME.java
@@ -0,0 +1,150 @@
+package goodgenerator.blocks.tileEntity;
+
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraftforge.common.util.ForgeDirection;
+
+import appeng.api.config.Actionable;
+import appeng.api.networking.GridFlags;
+import appeng.api.networking.IGrid;
+import appeng.api.networking.IGridNode;
+import appeng.api.networking.security.IActionHost;
+import appeng.api.networking.security.MachineSource;
+import appeng.api.util.AECableType;
+import appeng.api.util.DimensionalCoord;
+import appeng.me.helpers.AENetworkProxy;
+import appeng.me.helpers.IGridProxyable;
+import appeng.tile.TileEvent;
+import appeng.tile.events.TileEventType;
+import goodgenerator.util.ItemRefer;
+import thaumcraft.api.aspects.Aspect;
+import thaumcraft.api.aspects.AspectList;
+import thaumicenergistics.api.grid.IEssentiaGrid;
+import thaumicenergistics.api.grid.IMEEssentiaMonitor;
+
+public class MTEEssentiaOutputHatchME extends MTEEssentiaOutputHatch implements IActionHost, IGridProxyable {
+
+ private AENetworkProxy gridProxy = null;
+ private IMEEssentiaMonitor monitor = null;
+ private MachineSource asMachineSource = new MachineSource(this);
+
+ @Override
+ public void updateEntity() {
+ getProxy();
+ super.updateEntity();
+ }
+
+ @Override
+ public void invalidate() {
+ super.invalidate();
+ this.invalidateAE();
+ }
+
+ @Override
+ public void onChunkUnload() {
+ super.onChunkUnload();
+ this.onChunkUnloadAE();
+ }
+
+ @TileEvent(TileEventType.WORLD_NBT_READ)
+ public void readFromNBT_AENetwork(final NBTTagCompound data) {
+ AENetworkProxy gp = getProxy();
+ if (gp != null) getProxy().readFromNBT(data);
+ }
+
+ @TileEvent(TileEventType.WORLD_NBT_WRITE)
+ public void writeToNBT_AENetwork(final NBTTagCompound data) {
+ AENetworkProxy gp = getProxy();
+ if (gp != null) gp.writeToNBT(data);
+ }
+
+ void onChunkUnloadAE() {
+ AENetworkProxy gp = getProxy();
+ if (gp != null) gp.onChunkUnload();
+ }
+
+ void invalidateAE() {
+ AENetworkProxy gp = getProxy();
+ if (gp != null) gp.invalidate();
+ }
+
+ @Override
+ public IGridNode getGridNode(ForgeDirection forgeDirection) {
+ AENetworkProxy gp = getProxy();
+ return gp != null ? gp.getNode() : null;
+ }
+
+ @Override
+ public void gridChanged() {}
+
+ @Override
+ public AECableType getCableConnectionType(ForgeDirection forgeDirection) {
+ return AECableType.SMART;
+ }
+
+ @Override
+ public void securityBreak() {}
+
+ @Override
+ public AENetworkProxy getProxy() {
+ if (gridProxy == null) {
+ gridProxy = new AENetworkProxy(this, "proxy", ItemRefer.Essentia_Output_Hatch_ME.get(1), true);
+ gridProxy.onReady();
+ gridProxy.setFlags(GridFlags.REQUIRE_CHANNEL);
+ }
+ return this.gridProxy;
+ }
+
+ @Override
+ public DimensionalCoord getLocation() {
+ return new DimensionalCoord(this.worldObj, this.xCoord, this.yCoord, this.zCoord);
+ }
+
+ @Override
+ public IGridNode getActionableNode() {
+ AENetworkProxy gp = getProxy();
+ return gp != null ? gp.getNode() : null;
+ }
+
+ @Override
+ public boolean takeFromContainer(AspectList aspects) {
+ return false;
+ }
+
+ @Override
+ public boolean takeFromContainer(Aspect aspect, int amount) {
+ return false;
+ }
+
+ @Override
+ public int addEssentia(Aspect aspect, int amount, ForgeDirection side) {
+ return this.addEssentia(aspect, amount, side, Actionable.MODULATE);
+ }
+
+ public int addEssentia(Aspect aspect, int amount, ForgeDirection side, Actionable mode) {
+ long rejectedAmount = amount;
+ if (this.getEssentiaMonitor()) {
+ rejectedAmount = this.monitor.injectEssentia(aspect, amount, mode, this.getMachineSource(), true);
+ }
+
+ long acceptedAmount = (long) amount - rejectedAmount;
+ return (int) acceptedAmount;
+ }
+
+ protected boolean getEssentiaMonitor() {
+ IMEEssentiaMonitor essentiaMonitor = null;
+ IGrid grid = null;
+ IGridNode node = this.getProxy()
+ .getNode();
+
+ if (node != null) {
+ grid = node.getGrid();
+ if (grid != null) essentiaMonitor = grid.getCache(IEssentiaGrid.class);
+ }
+ this.monitor = essentiaMonitor;
+ return (this.monitor != null);
+ }
+
+ public MachineSource getMachineSource() {
+ return this.asMachineSource;
+ }
+}