diff --git a/build.gradle b/build.gradle index 53c4771..2969a17 100644 --- a/build.gradle +++ b/build.gradle @@ -373,7 +373,7 @@ catch (Exception ignored) { // Pulls version first from the VERSION env and then git tag String identifiedVersion = null -String versionOverride = '0.0.16p1' +String versionOverride = '0.0.16p2' try { // Produce a version based on the tag, or for branches something like 0.2.2-configurable-maven-and-extras.38+43090270b6-dirty if (versionOverride == null) { diff --git a/src/main/java/reobf/proghatches/eucrafting/AECover.java b/src/main/java/reobf/proghatches/eucrafting/AECover.java index 59a4c27..8468f5e 100644 --- a/src/main/java/reobf/proghatches/eucrafting/AECover.java +++ b/src/main/java/reobf/proghatches/eucrafting/AECover.java @@ -540,6 +540,9 @@ protected boolean onCoverRightClickImpl(ForgeDirection side, int aCoverID, Data return false; }; + + + @Override protected boolean onCoverShiftRightClickImpl(ForgeDirection side, int aCoverID, Data aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer) { @@ -549,10 +552,10 @@ protected boolean onCoverShiftRightClickImpl(ForgeDirection side, int aCoverID, ; if (aCoverVariable.hasAEGUI() && !aPlayer.worldObj.isRemote) { - NW.sendPacketToAllPlayersInRange(aPlayer.getEntityWorld(), + /*NW.sendPacketToAllPlayersInRange(aPlayer.getEntityWorld(), new GT_Packet_SendCoverData(side, aCoverID, aCoverVariable, aTileEntity), aTileEntity.getXCoord(), aTileEntity.getZCoord()); - +*/ aPlayer.openGui(MyMod.instance, side.ordinal(), aPlayer.getEntityWorld(), aTileEntity.getXCoord(), aTileEntity.getYCoord(), aTileEntity.getZCoord()); } diff --git a/src/main/java/reobf/proghatches/eucrafting/IIdleStateProvider.java b/src/main/java/reobf/proghatches/eucrafting/IIdleStateProvider.java new file mode 100644 index 0000000..12a6bf0 --- /dev/null +++ b/src/main/java/reobf/proghatches/eucrafting/IIdleStateProvider.java @@ -0,0 +1,7 @@ +package reobf.proghatches.eucrafting; + +public interface IIdleStateProvider { + + public int getIdle(); + public boolean failThisTick(); +} diff --git a/src/main/java/reobf/proghatches/eucrafting/InterfaceData.java b/src/main/java/reobf/proghatches/eucrafting/InterfaceData.java index 1d8eb92..10203b4 100644 --- a/src/main/java/reobf/proghatches/eucrafting/InterfaceData.java +++ b/src/main/java/reobf/proghatches/eucrafting/InterfaceData.java @@ -1,5 +1,7 @@ package reobf.proghatches.eucrafting; +import static gregtech.api.enums.GT_Values.NW; + import java.util.ArrayList; import java.util.EnumSet; import com.google.common.collect.ImmutableSet; @@ -39,8 +41,10 @@ import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import gregtech.api.gui.modularui.GT_CoverUIBuildContext; +import gregtech.api.net.GT_Packet_SendCoverData; import gregtech.api.util.ISerializableObject; import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Items; import net.minecraft.inventory.IInventory; @@ -52,6 +56,7 @@ import net.minecraftforge.common.util.ForgeDirection; import reobf.proghatches.eucrafting.AECover.Data; import reobf.proghatches.main.FakeHost; +import reobf.proghatches.main.MyMod; public class InterfaceData implements Data, IInterfaceHost, IGridTickable, IUpgradeableHost, ICustomNameObject, IConfigurableObject, IPriorityHost, @@ -376,7 +381,7 @@ public void loadDataFromNBT(NBTBase aNBT) { @Override public TickingRequest getTickingRequest(IGridNode node) { - // + return duality.getTickingRequest(node); } @@ -387,6 +392,12 @@ public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall) return duality.tickingRequest(node, TicksSinceLastCall); } + + + + + + public String getCustomName() { if (name != null&&name.length()>0){ @@ -468,7 +479,11 @@ public TileEntity fakeTile() { } @Override public void addUIWidgets(Builder builder, GT_CoverUIBuildContext gt_CoverUIBuildContext) { - + if (hasAEGUI() && !gt_CoverUIBuildContext.getPlayer().getEntityWorld().isRemote) { + gt_CoverUIBuildContext.getPlayer() + .openGui(MyMod.instance, side.ordinal(), + gt_CoverUIBuildContext.getPlayer().getEntityWorld(), this.getPos().x, + this.getPos().y, this.getPos().z);} } diff --git a/src/main/java/reobf/proghatches/eucrafting/InterfaceP2PData.java b/src/main/java/reobf/proghatches/eucrafting/InterfaceP2PData.java index 91d992e..e429289 100644 --- a/src/main/java/reobf/proghatches/eucrafting/InterfaceP2PData.java +++ b/src/main/java/reobf/proghatches/eucrafting/InterfaceP2PData.java @@ -11,6 +11,8 @@ import com.glodblock.github.loader.ItemAndBlockHolder; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; +import com.gtnewhorizons.modularui.api.screen.ModularWindow.Builder; + import appeng.api.config.Actionable; import appeng.api.config.Upgrades; import appeng.api.exceptions.FailedConnection; @@ -51,6 +53,7 @@ import appeng.util.Platform; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; +import gregtech.api.gui.modularui.GT_CoverUIBuildContext; import gregtech.api.interfaces.tileentity.ICoverable; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; @@ -482,7 +485,7 @@ public void update(ICoverable aTileEntity) { }; - @Override + /*@Override public TickingRequest getTickingRequest(IGridNode node) { // return duality.getTickingRequest(node); @@ -493,17 +496,18 @@ public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall) if (first) return TickRateModulation.SAME; - - /*ItemStack is=new ItemStack(Items.apple); - is.setTagCompound(this.getTag()); - is.setStackDisplayName( - duality.hasCustomName()? - duality.getCustomName():""); - this.setTag(is.getTagCompound()); - */ - + return duality.tickingRequest(node, TicksSinceLastCall); + }*/@Override + public TickingRequest getTickingRequest(IGridNode node) { + + return new TickingRequest(100, 100, false, false); + } + + @Override + public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall) { + return TickRateModulation.SAME; } public String getCustomName() { if(duality.hasCustomName())return duality.getCustomName(); @@ -710,6 +714,13 @@ public String name() { if(duality.hasCustomName())return duality.getCustomName(); return null; } - + @Override + public void addUIWidgets(Builder builder, GT_CoverUIBuildContext gt_CoverUIBuildContext) { + if (hasAEGUI() && !gt_CoverUIBuildContext.getPlayer().getEntityWorld().isRemote) { + gt_CoverUIBuildContext.getPlayer() + .openGui(MyMod.instance, side.ordinal(), + gt_CoverUIBuildContext.getPlayer().getEntityWorld(), this.getPos().x, + this.getPos().y, this.getPos().z);} + } } diff --git a/src/main/java/reobf/proghatches/eucrafting/InterfaceP2PEUData.java b/src/main/java/reobf/proghatches/eucrafting/InterfaceP2PEUData.java index 0cde028..005d728 100644 --- a/src/main/java/reobf/proghatches/eucrafting/InterfaceP2PEUData.java +++ b/src/main/java/reobf/proghatches/eucrafting/InterfaceP2PEUData.java @@ -520,7 +520,7 @@ public void update(ICoverable aTileEntity) { } ; - +/* if (worksensitive && (aTileEntity instanceof IMachineProgress)) { boolean on = (((IMachineProgress) aTileEntity).hasThingsToDo()); boolean delayon = value > 0; @@ -561,11 +561,11 @@ public void update(ICoverable aTileEntity) { duality.redstoneOverride = false; } - +*/ }; private int value; - +/* @Override public TickingRequest getTickingRequest(IGridNode node) { // @@ -578,6 +578,16 @@ public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall) return TickRateModulation.SAME; return duality.tickingRequest(node, TicksSinceLastCall); + }*/ + @Override + public TickingRequest getTickingRequest(IGridNode node) { + + return new TickingRequest(100, 100, false, false); + } + + @Override + public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall) { + return TickRateModulation.SAME; } public String getCustomName() { if(duality.hasCustomName())return duality.getCustomName(); diff --git a/src/main/java/reobf/proghatches/eucrafting/InterfaceP2PNoFluidData.java b/src/main/java/reobf/proghatches/eucrafting/InterfaceP2PNoFluidData.java index 27b0ddb..00bed0f 100644 --- a/src/main/java/reobf/proghatches/eucrafting/InterfaceP2PNoFluidData.java +++ b/src/main/java/reobf/proghatches/eucrafting/InterfaceP2PNoFluidData.java @@ -8,6 +8,8 @@ import java.util.Set; import com.glodblock.github.loader.ItemAndBlockHolder; import com.google.common.collect.ImmutableSet; +import com.gtnewhorizons.modularui.api.screen.ModularWindow.Builder; + import appeng.api.config.Actionable; import appeng.api.config.Upgrades; import appeng.api.exceptions.FailedConnection; @@ -48,6 +50,7 @@ import appeng.util.Platform; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; +import gregtech.api.gui.modularui.GT_CoverUIBuildContext; import gregtech.api.interfaces.tileentity.ICoverable; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; @@ -476,7 +479,7 @@ public void update(ICoverable aTileEntity) { ; }; - +/* @Override public TickingRequest getTickingRequest(IGridNode node) { // @@ -489,6 +492,16 @@ public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall) return TickRateModulation.SAME; return duality.tickingRequest(node, TicksSinceLastCall); + }*/ + @Override + public TickingRequest getTickingRequest(IGridNode node) { + + return new TickingRequest(100, 100, false, false); + } + + @Override + public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall) { + return TickRateModulation.SAME; } public String getCustomName() { if(duality.hasCustomName())return duality.getCustomName(); @@ -678,5 +691,12 @@ public boolean requireChannel() { public ForgeDirection getActualSide() { // TODO Auto-generated method stub return side; + }@Override + public void addUIWidgets(Builder builder, GT_CoverUIBuildContext gt_CoverUIBuildContext) { + if (hasAEGUI() && !gt_CoverUIBuildContext.getPlayer().getEntityWorld().isRemote) { + gt_CoverUIBuildContext.getPlayer() + .openGui(MyMod.instance, side.ordinal(), + gt_CoverUIBuildContext.getPlayer().getEntityWorld(), this.getPos().x, + this.getPos().y, this.getPos().z);} } } diff --git a/src/main/java/reobf/proghatches/eucrafting/PartEUP2PInterface.java b/src/main/java/reobf/proghatches/eucrafting/PartEUP2PInterface.java index 7193a1c..16c456e 100644 --- a/src/main/java/reobf/proghatches/eucrafting/PartEUP2PInterface.java +++ b/src/main/java/reobf/proghatches/eucrafting/PartEUP2PInterface.java @@ -84,6 +84,7 @@ import appeng.api.storage.IStorageMonitorable; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEItemStack; +import appeng.api.util.DimensionalCoord; import appeng.api.util.IConfigManager; import appeng.helpers.DualityInterface; import appeng.helpers.IInterfaceHost; @@ -107,7 +108,9 @@ import gregtech.api.GregTech_API; import gregtech.api.enums.GT_Values; import gregtech.api.gui.modularui.GT_UITextures; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IEnergyConnected; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.util.GT_Utility; import gregtech.common.gui.modularui.widget.CoverCycleButtonWidget; import ic2.api.energy.tile.IEnergySink; @@ -299,7 +302,6 @@ public void gridChanged() { @Override public boolean onPartActivate(final EntityPlayer player, final Vec3 pos) { - if (player.isSneaking()) { TileEntity t = this.getTile(); if (!t.getWorldObj().isRemote) { @@ -409,17 +411,17 @@ public boolean redstone() { } public boolean refund(IMEInventory inv, IMEInventory recver) { - IAEItemStack ret = inv.extractItems(AEItemStack.create(token).setStackSize(amp) + IAEItemStack ret = inv.extractItems(AEItemStack.create(token).setStackSize(Integer.MAX_VALUE) , Actionable.SIMULATE, new MachineSource(this)); if (ret != null) { - if (ret.getStackSize() == amp) { - inv.extractItems(AEItemStack.create(token).setStackSize(amp), Actionable.MODULATE, + if (ret.getStackSize() >0) { + inv.extractItems(AEItemStack.create(token).setStackSize(ret.getStackSize()), Actionable.MODULATE, new MachineSource(this)); - recver.injectItems(AEItemStack.create(blank_token).setStackSize(amp), Actionable.MODULATE, + recver.injectItems(AEItemStack.create(blank_token).setStackSize(ret.getStackSize()), Actionable.MODULATE, new MachineSource(this)); return true; @@ -430,18 +432,47 @@ public boolean refund(IMEInventory inv, IMEInventory } boolean prevPower; + public IMetaTileEntity getTargetTile(){ + + TileEntity te; + if(data!=null){ + DimensionalCoord pos = data.getPos(); + te= data.getTile().getWorldObj().getTileEntity(pos.x,pos.y,pos.z); + }else{ + int x=this.host.getTile().xCoord; + int y=this.host.getTile().yCoord; + int z=this.host.getTile().zCoord; + ForgeDirection fd = this.getSide(); + te=this.host.getTile().getWorldObj().getTileEntity( + x+fd.offsetX,y+fd.offsetY,z+fd.offsetZ); + } + if(te==null) + return null; + + if(te instanceof IGregTechTileEntity){ + + return ((IGregTechTileEntity) te).getMetaTileEntity(); + + + } + return null; + + } + int fails; + boolean pass; + private void resetIdleCheckStatus(boolean check) { + fails=0; + pass=false; + + } @Override public TickRateModulation tickingRequest(IGridNode node, int ticksSinceLastCall) { returnItems(); - /* - * if(redstone()){ if(this.isOutput()) Optional.ofNullable( - * this.getInput()).ifPresent( s->s.redstoneticks++ ); else - * this.redstoneticks++; } - */ + duality.tickingRequest(node, ticksSinceLastCall); boolean ok = false; - if (!this.isOutput()) { + /* if (!this.isOutput()) { boolean red = this.redstone(); try { @@ -461,9 +492,44 @@ public TickRateModulation tickingRequest(IGridNode node, int ticksSinceLastCall) prevPower = red; } + + */ArrayList all = new ArrayList<>(); + if (!this.isOutput()&&>0) { + boolean[] hasFail=new boolean[1]; + + + all.add(this); + try { + this.getOutputs().forEach(all::add); + } catch (GridAccessException e) {} + all.forEach(s->{ + IMetaTileEntity t = s.getTargetTile(); + if(t!=null&&t instanceof IIdleStateProvider){ + if(s.pass)return; + if(((IIdleStateProvider) t).getIdle()==1){ + s.pass=true; + } + if(((IIdleStateProvider) t).failThisTick()){ + if(s.fails++==2){s.pass=true;};//fail 2 times, so assume no valid inputs, just pass it + } + {hasFail[0]=true;} + } + + }); + + if(!hasFail[0]){ok=true;} + + } + + - if (ok || redstoneticks > 0) { + + + + + if (ok || redstoneticks > 0) { + all.forEach(s->s.resetIdleCheckStatus(false)); try { IMEMonitor store = getProxy().getStorage().getItemInventory(); @@ -826,6 +892,7 @@ public boolean pushPattern(ICraftingPatternDetails patternDetails, InventoryCraf returnItems(); if (patternDetails instanceof SISOPatternDetail) { is.add(((SISOPatternDetail) patternDetails).out); + // do not call returnItems() here, or items returned will not be // considered // as output @@ -853,8 +920,16 @@ public boolean pushPattern(ICraftingPatternDetails patternDetails, InventoryCraf } boolean succ = duality.pushPattern(p.original, table); if (succ) { - if (face != null) + if (face != null){ face.amp = Math.max(face.amp, count[0]); + + face.resetIdleCheckStatus(true); + try { + getOutputs().forEach(s->s.resetIdleCheckStatus(true)); + } catch (GridAccessException e) { + + } + } is.add(p.extraOut0); } @@ -864,6 +939,8 @@ public boolean pushPattern(ICraftingPatternDetails patternDetails, InventoryCraf } + + @Override public boolean isBusy() { return duality.isBusy(); @@ -905,6 +982,8 @@ public void readFromNBT(NBTTagCompound data) { redstoneticks = data.getInteger("redstoneticks"); expectedamp = data.getLong("expectedamp"); redstoneOverride = data.getBoolean("redstoneOverride"); + fails=data.getInteger("fails"); + pass=data.getBoolean("pass"); is.clear(); IntStream.range(0, data.getInteger("pending_size")).forEach(s -> { @@ -920,6 +999,7 @@ public void readFromNBT(NBTTagCompound data) { @Override public void writeToNBT(NBTTagCompound data) { super.writeToNBT(data); + if(customName!=null) data.setString("customName", customName); duality.writeToNBT(data); ProghatchesUtil.ser(data, id, "EUFI"); @@ -932,6 +1012,8 @@ public void writeToNBT(NBTTagCompound data) { data.setInteger("redstoneticks", redstoneticks); data.setLong("expectedamp", expectedamp); data.setBoolean("redstoneOverride", redstoneOverride); + data.setInteger("fails", fails); + data.setBoolean("pass", pass); for (int i = 0; i < is.size(); i++) { data.setTag("pending_" + i, is.get(i).writeToNBT(new NBTTagCompound())); } diff --git a/src/main/java/reobf/proghatches/gt/metatileentity/SuperChestME.java b/src/main/java/reobf/proghatches/gt/metatileentity/SuperChestME.java index c3ac7ec..96522d4 100644 --- a/src/main/java/reobf/proghatches/gt/metatileentity/SuperChestME.java +++ b/src/main/java/reobf/proghatches/gt/metatileentity/SuperChestME.java @@ -3,6 +3,7 @@ import static gregtech.api.metatileentity.BaseTileEntity.TOOLTIP_DELAY; import static gregtech.api.objects.XSTR.XSTR_INSTANCE; +import java.io.IOException; import java.util.ArrayList; import java.util.EnumSet; import java.util.HashMap; @@ -34,6 +35,7 @@ import appeng.api.config.AccessRestriction; import appeng.api.config.Actionable; +import appeng.api.config.FuzzyMode; import appeng.api.implementations.tiles.IColorableTile; import appeng.api.networking.GridFlags; import appeng.api.networking.IGridNode; @@ -48,6 +50,7 @@ import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEStack; +import appeng.api.storage.data.IAETagCompound; import appeng.api.storage.data.IItemList; import appeng.api.util.AEColor; import appeng.api.util.DimensionalCoord; @@ -70,11 +73,13 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus; import gregtech.api.util.GT_Utility; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -314,8 +319,8 @@ public IAEItemStack extractItems(IAEItemStack input, Actionable type, BaseAction ItemStack in=input.getItemStack(); ItemStack thiz=mInventory[0]; - if(thiz!=null&&!Platform.isSameItem(in, thiz))return input; - if(thiz==null){thiz=in.copy(); } + if(thiz!=null&&!Platform.isSameItem(in, thiz))return null; + if(thiz==null){return null;}//thiz=in.copy(); } int transfer=Math.min(in.stackSize,thiz.stackSize); if(transfer==0)return null; if(type==Actionable.SIMULATE){ @@ -334,7 +339,6 @@ public IAEItemStack extractItems(IAEItemStack input, Actionable type, BaseAction return null; } - @Override public IItemList getAvailableItems(IItemList out) { out.addStorage(AEItemStack.create(mInventory[0])); diff --git a/src/main/java/reobf/proghatches/main/mixin/MixinPlugin.java b/src/main/java/reobf/proghatches/main/mixin/MixinPlugin.java index 2f6094b..8e3a9e3 100644 --- a/src/main/java/reobf/proghatches/main/mixin/MixinPlugin.java +++ b/src/main/java/reobf/proghatches/main/mixin/MixinPlugin.java @@ -134,7 +134,8 @@ public List getMixins() { if (!"true".equals(pp.get("noFixRecursiveCraft"))) retLate.add("eucrafting." + "MixinCraftingRecursiveWorkaround"); if (!"true".equals(pp.get("noEUCraftingMixins"))) { - + retLate.add("eucrafting." + "MixinMachineIdle"); + retLate.add("eucrafting." + "MixinMachineIdle2"); retLate.add("eucrafting." + "MixinCpuClusterEUAutoRequest"); retLate.add("eucrafting." + "MixinRemoveExcessiveEU"); retLate.add("eucrafting." + "MixinCoverInsertion"); diff --git a/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinInvTracker.java b/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinInvTracker.java index bcf55e3..21e4a2f 100644 --- a/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinInvTracker.java +++ b/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinInvTracker.java @@ -43,7 +43,8 @@ public void check(long idx, IInterfaceViewable machine, boolean online,CallbackI public void check(Object machine){ if(machine instanceof IActualSideProvider){ - + //use msb to indicate it is a cover + //dirty hack, hope it will not break something side=((IActualSideProvider) machine).getActualSide(); id=id|Long.MIN_VALUE; } diff --git a/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinMachineIdle.java b/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinMachineIdle.java new file mode 100644 index 0000000..9cab60c --- /dev/null +++ b/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinMachineIdle.java @@ -0,0 +1,61 @@ +package reobf.proghatches.main.mixin.mixins.eucrafting; + +import javax.annotation.Nonnull; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; +import gregtech.api.recipe.check.CheckRecipeResult; +import gregtech.api.recipe.check.CheckRecipeResultRegistry; +import reobf.proghatches.eucrafting.IIdleStateProvider; + + +@Mixin(value=GT_MetaTileEntity_MultiBlockBase.class,remap=false) +public class MixinMachineIdle implements IIdleStateProvider{ +private boolean hasJob; +@Shadow int mMaxProgresstime; +@Shadow private CheckRecipeResult checkRecipeResult ; + public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { + hasJob=mMaxProgresstime>0; + if(jobdone>0)jobdone--; + fail=false; +} +int jobdone; +boolean fail; + + @Inject(remap=false,method="checkRecipe", at = { @At("RETURN") }) + public void check(CallbackInfoReturnable c){ + + if(hasJob&&!checkRecipeResult.wasSuccessful()){ + jobdone=10; + } + if(!checkRecipeResult.wasSuccessful()){ + + fail=true; + } + + } + + +@Override +public int getIdle() { + return jobdone; +} + + +@Override +public boolean failThisTick() { + + return fail; +} + + + + + +} diff --git a/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinMachineIdle2.java b/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinMachineIdle2.java new file mode 100644 index 0000000..aebd120 --- /dev/null +++ b/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinMachineIdle2.java @@ -0,0 +1,62 @@ +package reobf.proghatches.main.mixin.mixins.eucrafting; + +import javax.annotation.Nonnull; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; +import gregtech.api.recipe.check.CheckRecipeResult; +import gregtech.api.recipe.check.CheckRecipeResultRegistry; +import reobf.proghatches.eucrafting.IIdleStateProvider; + + +@Mixin(value=GT_MetaTileEntity_BasicMachine.class,remap=false) +public class MixinMachineIdle2 implements IIdleStateProvider{ +private boolean hasJob; +@Shadow int mMaxProgresstime; + + public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { + hasJob=mMaxProgresstime>0; + if(jobdone>0)jobdone--; + fail=false; +} +int jobdone; + + + @Inject(remap=false,method="checkRecipe", at = { @At("RETURN") }) + public void check(CallbackInfoReturnable c){ + + if(hasJob&&!(mMaxProgresstime>0)){ + jobdone=1; + } + if(!(mMaxProgresstime>0)){ + + fail=true; + } + + } +boolean fail; + +@Override +public int getIdle() { + return jobdone; +} + + +@Override +public boolean failThisTick() { + + return fail; +} + + + + + +} diff --git a/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinWirelessRename.java b/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinWirelessRename.java index 92ddce8..604177f 100644 --- a/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinWirelessRename.java +++ b/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinWirelessRename.java @@ -48,7 +48,7 @@ public void ctor(GuiInterfaceWireless parent,long idx, String name, int rows, i if((id&Long.MIN_VALUE)!=0){ isCover=true; - id=id&Long.MAX_VALUE; + //id=id&Long.MAX_VALUE; }