diff --git a/build.gradle b/build.gradle index c351373..48824d0 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.18p3' +String versionOverride = '0.0.18p5' 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/block/TileIOHub.java b/src/main/java/reobf/proghatches/block/TileIOHub.java index a8adff2..d1003f0 100644 --- a/src/main/java/reobf/proghatches/block/TileIOHub.java +++ b/src/main/java/reobf/proghatches/block/TileIOHub.java @@ -411,10 +411,13 @@ public Object[] swap(final Context context, final Arguments args) { final TileIOHub.OCApi database = (TileIOHub.OCApi) env; database.markDirty(); // do not directly swap ref just in case... - ItemStack[] ia = Arrays.stream(inv).map(ItemStack::copy).toArray(ItemStack[]::new); + ItemStack[] ia = inv.clone(); + for(int i=0;i s.writeToNBT(new NBTTagCompound())) .toArray(NBTTagCompound[]::new); - ItemStack[] ib = Arrays.stream(database.TileIOHubthis().inv).map(ItemStack::copy).toArray(ItemStack[]::new); + //ItemStack[] ib = Arrays.stream(database.TileIOHubthis().inv).map(ItemStack::copy).toArray(ItemStack[]::new); + ItemStack[] ib =database.TileIOHubthis().inv.clone(); + for(int i=0;i s.writeToNBT(new NBTTagCompound())).toArray(NBTTagCompound[]::new); @@ -726,7 +729,9 @@ public IInventory inventory() { public int optSlot(Arguments args, int n) { return InventoryAware$class.optSlot(this, args, n); } - + public int selectedSlotIndex() { + return slotselected-1; + } @Override public int selectedSlot() { @@ -771,7 +776,9 @@ public boolean haveSameFluidType(FluidStack arg0, FluidStack arg1) { public int optTank(Arguments arg0, int arg1) { return TankAware$class.optTank(this, arg0, arg1); } - + public int selectedTankIndex() { + return tankselected-1; + } @Override public int selectedTank() { @@ -1035,7 +1042,7 @@ public Object[] sendItems(final Context context, final Arguments args) { if (invRobot.getSizeInventory() <= 0) { return new Object[] { 0 }; } - final ItemStack stack = invRobot.getStackInSlot(selectedSlot()); + final ItemStack stack = invRobot.getStackInSlot(selectedSlotIndex()); final IMEMonitor inv = this.getItemInventory(); if (stack == null || inv == null) { return new Object[] { 0 }; @@ -1050,17 +1057,17 @@ public Object[] sendItems(final Context context, final Arguments args) { if (notInjected == null) { stack.stackSize -= amount; if (stack.stackSize <= 0) { - invRobot.setInventorySlotContents(selectedSlot(), (ItemStack) null); + invRobot.setInventorySlotContents(selectedSlotIndex(), (ItemStack) null); } else { - invRobot.setInventorySlotContents(selectedSlot(), stack); + invRobot.setInventorySlotContents(selectedSlotIndex(), stack); } array = new Object[] { amount }; } else { stack.stackSize = stack.stackSize - amount + (int) notInjected.getStackSize(); if (stack.stackSize <= 0) { - invRobot.setInventorySlotContents(selectedSlot(), (ItemStack) null); + invRobot.setInventorySlotContents(selectedSlotIndex(), (ItemStack) null); } else { - invRobot.setInventorySlotContents(selectedSlot(), stack); + invRobot.setInventorySlotContents(selectedSlotIndex(), stack); } array = new Object[] { stack2.stackSize - notInjected.getStackSize() }; } @@ -1074,7 +1081,7 @@ public Object[] requestItems(final Context context, final Arguments args) { final String address = args.checkString(0); final int entry = args.checkInteger(1); final int amount = args.optInteger(2, 64); - final int selected = selectedSlot(); + final int selected = selectedSlotIndex(); final IInventory invRobot = TileIOHub.this; if (invRobot.getSizeInventory() <= 0) { return new Object[] { 0 }; @@ -1150,7 +1157,7 @@ public IMEMonitor getFluidInventory() { @Callback(doc = "function([number:amount]):number -- Transfer selected fluid to your ae system.") public Object[] sendFluids(final Context context, final Arguments args) { markDirty(); - final int selected = selectedTank(); + final int selected = selectedTankIndex(); final MultiTank tanks = tank(); if (tanks.tankCount() <= 0) { return new Object[] { 0 }; @@ -1186,7 +1193,7 @@ public Object[] requestFluids(final Context context, final Arguments args) { final int entry = args.checkInteger(1); final int amount = args.optInteger(2, 1000); final MultiTank tanks = tank(); - final int selected = selectedTank(); + final int selected = selectedTankIndex(); if (tanks.tankCount() <= 0) { return new Object[] { 0 }; } @@ -1347,11 +1354,15 @@ public boolean isItemValidForSlot(int index, ItemStack stack) { return true; } - + private boolean sameFluid(FluidStack fs1,FluidStack fs2){ + if(fs1==null||fs2==null){return false;} + + return fs1.getFluid()==fs2.getFluid(); + } @Override public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { for (FluidTank f : ft) { - if (f.getFluid().getFluid() == resource.getFluid()) { + if (sameFluid(f.getFluid(), resource)) { int suc = f.fill(resource, doFill); if (suc > 0) return suc; @@ -1371,7 +1382,7 @@ public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrai int suc = 0; int todo = resource.amount; for (FluidTank f : ft) { - if (f.getFluid().getFluid() == resource.getFluid()) { + if (sameFluid(f.getFluid(), resource)) { int tmp; suc += (tmp = f.drain(todo, doDrain).amount); todo -= tmp; diff --git a/src/main/java/reobf/proghatches/gt/metatileentity/SuperTankME.java b/src/main/java/reobf/proghatches/gt/metatileentity/SuperTankME.java index 1ab8629..6d594e4 100644 --- a/src/main/java/reobf/proghatches/gt/metatileentity/SuperTankME.java +++ b/src/main/java/reobf/proghatches/gt/metatileentity/SuperTankME.java @@ -744,10 +744,11 @@ public void chanRender(final MENetworkChannelsChanged changedChannels) { public void updateChannels(final MENetworkChannelsChanged changedChannels) { this.updateStatus(); } +static MENetworkCellArrayUpdate event=new MENetworkCellArrayUpdate(); protected void updateStatus() { try { - this.getProxy().getGrid().postEvent(new MENetworkCellArrayUpdate()); + this.getProxy().getGrid().postEvent(event); } catch (GridAccessException e) { e.printStackTrace(); diff --git a/src/main/java/reobf/proghatches/main/Config.java b/src/main/java/reobf/proghatches/main/Config.java index 4d24290..f15e8ba 100644 --- a/src/main/java/reobf/proghatches/main/Config.java +++ b/src/main/java/reobf/proghatches/main/Config.java @@ -6,6 +6,7 @@ import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; +import java.lang.reflect.InvocationTargetException; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedList; @@ -72,8 +73,12 @@ public static void get(GT_Multiblock_Tooltip_Builder obj, String key, boolean de try (InputStream in = (defaulted ? getInputEN : getInput).apply(key)) { if (in == null) { if (defaulted) { - obj.addMachineType("!!!error!!! failed to translate") - .toolTipFinisher("do not remove en_US folder!"); + obj.addMachineType("!!!error!!! failed to translate"); + obj.getClass().getMethod("toolTipFinisher", String.class).invoke(obj,"do not remove en_US folder!"); + + + + return; } get(obj, key, true); @@ -109,7 +114,14 @@ public static void get(GT_Multiblock_Tooltip_Builder obj, String key, boolean de } if (Config.appendAddedBy) - obj.toolTipFinisher(LangManager.translateToLocal("programmable_hatches.addedby")); + try { + + obj.getClass().getMethod("toolTipFinisher", String.class).invoke(obj,LangManager.translateToLocal("programmable_hatches.addedby")); + + } catch (Exception e) { + + e.printStackTrace(); + } ; } diff --git a/src/main/java/reobf/proghatches/main/mixin/MixinPlugin.java b/src/main/java/reobf/proghatches/main/mixin/MixinPlugin.java index 1e5f514..a1df809 100644 --- a/src/main/java/reobf/proghatches/main/mixin/MixinPlugin.java +++ b/src/main/java/reobf/proghatches/main/mixin/MixinPlugin.java @@ -175,6 +175,8 @@ public List getMixins() { if(ff)retLate.add("MixinNoFuzzyForProgrammingCircuit"); if(ff)retLate.add("MixinHandleProgrammingOnRecipeStart"); retLate.add("MixinCraftFromPatternTaskPatch"); + retLate.add("MixinGloemCore"); + if (FMLLaunchHandler.side().isClient()) { if (!"true".equals(pp.get("noAEItemSortMixins"))) diff --git a/src/main/java/reobf/proghatches/main/mixin/mixins/MixinGloemCore.java b/src/main/java/reobf/proghatches/main/mixin/mixins/MixinGloemCore.java new file mode 100644 index 0000000..478b675 --- /dev/null +++ b/src/main/java/reobf/proghatches/main/mixin/mixins/MixinGloemCore.java @@ -0,0 +1,50 @@ +package reobf.proghatches.main.mixin.mixins; + +import java.util.List; + +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.CallbackInfo; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import thaumcraft.common.entities.golems.ItemGolemCore; + +@Mixin(value=ItemGolemCore.class,remap=false) +public class MixinGloemCore { + @Shadow + public IIcon[] icon; + + + + + @Inject(method = "registerIcons", at = @At("HEAD"),remap=false) + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister ir,CallbackInfo c) { + icon=new IIcon[icon.length+1]; + this.icon[12] = ir.registerIcon("thaumcraft:golem_core_fish"); + + } + + @Inject(method = "getSubItems", at = @At("HEAD"),remap=false) + + @SideOnly(Side.CLIENT) + public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List par3List,CallbackInfo c) { + + + } + + + + +} diff --git a/src/main/java/reobf/proghatches/main/registration/PHRecipes.java b/src/main/java/reobf/proghatches/main/registration/PHRecipes.java index ad4e42a..ffe7d1e 100644 --- a/src/main/java/reobf/proghatches/main/registration/PHRecipes.java +++ b/src/main/java/reobf/proghatches/main/registration/PHRecipes.java @@ -67,11 +67,11 @@ public class PHRecipes implements Runnable { { Infinite }, { Bio }, { Optical/*,Nano,*/ }, - { Piko/*,Exotic,*/ }, + { Piko/*,Exotic,*/ },//dreamcraft circuit { Quantum/*,Cosmic,*/ }, - { Quantum /*Transcendent*/ } };//Transcendent circuit is not craftable + { Quantum /*Transcendent*/ } }; - /*Materials[][] matNH = { + Materials[][] matNewVersion = { { Primitive }, { Basic }, { Good }, @@ -83,12 +83,12 @@ public class PHRecipes implements Runnable { { SuperconductorUHV }, { Infinite }, { Bio }, - { Nano }, - { Piko }, - { Quantum }, - { Transcendent } }; */ - + { Optical }, + { Exotic }, + { Cosmic }, + { Cosmic/*Transcendent*/ }}; + ItemList[] multi = { null, null, null, null, Hatch_Input_Multi_2x2_EV, Hatch_Input_Multi_2x2_IV, Hatch_Input_Multi_2x2_LuV, Hatch_Input_Multi_2x2_ZPM, Hatch_Input_Multi_2x2_UV, Hatch_Input_Multi_2x2_UHV, Hatch_Input_Multi_2x2_UEV, @@ -101,6 +101,18 @@ public void run() { if(Config.skipRecipeAdding)return; +if( +GameRegistry.findItem("dreamcraft","item.PolychromePikoCircuit")!=null +){ + MyMod.LOG.info("Found new dreamcraft Nano-Piko-Quantum circuit, use oredict: Exotic-Cosmic-Transcendent."); + mat=matNewVersion;} +else{ + MyMod.LOG.info("Old version."); + +} +//You just like breaking changes, isn't that true, GTNH dev? + + IRecipe rec = new ShapedOreRecipe(new ItemStack(MyMod.plunger),"CRR","TSR","Q F", 'R',"plateAnyRubber", 'C',"craftingToolWireCutter",