diff --git a/src/main/java/reobf/proghatches/ae/BlockStockingCircuitRequestInterceptor.java b/src/main/java/reobf/proghatches/ae/BlockStockingCircuitRequestInterceptor.java index 5e372ba..5356c20 100644 --- a/src/main/java/reobf/proghatches/ae/BlockStockingCircuitRequestInterceptor.java +++ b/src/main/java/reobf/proghatches/ae/BlockStockingCircuitRequestInterceptor.java @@ -4,8 +4,12 @@ import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import reobf.proghatches.block.INameAndTooltips; @@ -20,12 +24,45 @@ public BlockStockingCircuitRequestInterceptor() { setBlockName("proghatches.circuit_interceptor"); setBlockTextureName("proghatches:circuit_interceptor"); } +@Override +public boolean onBlockActivated(World worldIn, int x, int y, int z, EntityPlayer player, int side, float subX, + float subY, float subZ) { + if(worldIn.getBlockMetadata(x,y,z)==1){ + if(!worldIn.isRemote){ + TileStockingCircuitRequestInterceptor te=(TileStockingCircuitRequestInterceptor) worldIn.getTileEntity(x, y, z); + te.mark[0]=player.getCurrentEquippedItem(); + if(te.mark[0]!=null)te.mark[0]=te.mark[0].copy(); + }else{ + if(player.getCurrentEquippedItem()==null) + player.addChatMessage(new ChatComponentTranslation("tile.proghatches.circuit_interceptor.change", + player.getCurrentEquippedItem().getDisplayName() + )); + else{ + player.addChatMessage(new ChatComponentTranslation("tile.proghatches.circuit_interceptor.change", + "None" + )); + + + } + + } + + + } + + return super.onBlockActivated(worldIn, x, y, z, player, side, subX, subY, subZ); +} +@Override +public int damageDropped(int meta) { + return (meta); +} @Override public TileEntity createNewTileEntity(World worldIn, int meta) { - return new TileStockingCircuitRequestInterceptor(); + return new TileStockingCircuitRequestInterceptor(meta); } + @Override public void addInformation(ItemStack p_77624_1_, List l) { diff --git a/src/main/java/reobf/proghatches/ae/IIsExtractFromInvAllowed.java b/src/main/java/reobf/proghatches/ae/IIsExtractFromInvAllowed.java index 9624108..4334b8a 100644 --- a/src/main/java/reobf/proghatches/ae/IIsExtractFromInvAllowed.java +++ b/src/main/java/reobf/proghatches/ae/IIsExtractFromInvAllowed.java @@ -1,5 +1,7 @@ package reobf.proghatches.ae; +import appeng.api.storage.data.IAEStack; + public interface IIsExtractFromInvAllowed { -public boolean isAllowed(); +public boolean isAllowed(IAEStack stack); } diff --git a/src/main/java/reobf/proghatches/ae/TileStockingCircuitRequestInterceptor.java b/src/main/java/reobf/proghatches/ae/TileStockingCircuitRequestInterceptor.java index 42e2147..7d93ec9 100644 --- a/src/main/java/reobf/proghatches/ae/TileStockingCircuitRequestInterceptor.java +++ b/src/main/java/reobf/proghatches/ae/TileStockingCircuitRequestInterceptor.java @@ -1,13 +1,54 @@ package reobf.proghatches.ae; import appeng.api.networking.GridFlags; +import appeng.api.storage.data.IAEStack; import appeng.tile.grid.AENetworkTile; +import appeng.util.item.AEItemStack; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import reobf.proghatches.main.MyMod; public class TileStockingCircuitRequestInterceptor extends AENetworkTile { public TileStockingCircuitRequestInterceptor() { this.getProxy().setFlags(GridFlags.REQUIRE_CHANNEL); } - + public TileStockingCircuitRequestInterceptor(int type) { + this.getProxy().setFlags(GridFlags.REQUIRE_CHANNEL); + this.type=type; + } + int type; + public boolean isAllowed(IAEStack stack) { + if(stack==null)return true; + if(type==0) + return !(stack.isItem()&& + ((AEItemStack)stack).getItem()==MyMod.progcircuit); + + + if(type==1&&mark[0]!=null){ + return !stack.equals(mark[0]); + } + + + return true; + } + + ItemStack[] mark=new ItemStack[1]; + + + + + + +@Override +public void writeToNBT_AENetwork(NBTTagCompound data) { + data.setInteger("Interceptor_type", type); + super.writeToNBT_AENetwork(data); +} +@Override +public void readFromNBT_AENetwork(NBTTagCompound data) { + type=data.getInteger("Interceptor_type" ); + super.readFromNBT_AENetwork(data); +} } diff --git a/src/main/java/reobf/proghatches/gt/metatileentity/RemoteInputBus.java b/src/main/java/reobf/proghatches/gt/metatileentity/RemoteInputBus.java index 3abb3bd..47d60e9 100644 --- a/src/main/java/reobf/proghatches/gt/metatileentity/RemoteInputBus.java +++ b/src/main/java/reobf/proghatches/gt/metatileentity/RemoteInputBus.java @@ -577,6 +577,7 @@ public void removePhantom() { for (int i = 0; i < size; i++) { if(a.getStackInSlot(i)!=null + &&a.getStackInSlot(i).stackSize>0 &&i!=index )// a.decrStackSize(i, 0);// remove 0-sized phantom item diff --git a/src/main/java/reobf/proghatches/gt/metatileentity/SuperChestME.java b/src/main/java/reobf/proghatches/gt/metatileentity/SuperChestME.java index f29c7c3..e329188 100644 --- a/src/main/java/reobf/proghatches/gt/metatileentity/SuperChestME.java +++ b/src/main/java/reobf/proghatches/gt/metatileentity/SuperChestME.java @@ -383,6 +383,7 @@ public UnlimitedWrapper() { @Override public IAEItemStack injectItems(IAEItemStack input, Actionable type, BaseActionSource src) { + post(); try{ long l=input.getStackSize(); long compl=0; @@ -413,7 +414,7 @@ public IAEItemStack injectItems(IAEItemStack input, Actionable type, BaseActionS return null;}finally{ - + last=AEItemStack.create(mInventory[0]); if(voidOverflow&&(mInventory[0]!=null&& ItemStack.areItemStackTagsEqual(mInventory[0],input.getItemStack())&& mInventory[0].getItem()==input.getItem()&& @@ -425,7 +426,7 @@ public IAEItemStack injectItems(IAEItemStack input, Actionable type, BaseActionS @Override public IAEItemStack extractItems(IAEItemStack input, Actionable type, BaseActionSource src) { - + try{post(); ItemStack in=input.getItemStack(); ItemStack thiz=mInventory[0]; if(thiz!=null&&!Platform.isSameItem(in, thiz))return null; @@ -446,7 +447,10 @@ public IAEItemStack extractItems(IAEItemStack input, Actionable type, BaseAction } - return null; + return null;}finally{ + + last=AEItemStack.create(mInventory[0]); + } } @Override public IItemList getAvailableItems(IItemList out) { @@ -543,6 +547,8 @@ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { boolean active=this.getProxy().isActive(); if(!aBaseMetaTileEntity.getWorld().isRemote){ + if(aTick%40==1){post();} + if(rep>0){rep--;update=true;} if(this.getBaseMetaTileEntity().hasInventoryBeenModified()){ update=true; @@ -917,13 +923,31 @@ public void setItemNBT(NBTTagCompound aNBT) { tTag.setInteger("Count", tStack.stackSize); tItemList.appendTag(tTag); } - } - aNBT.setTag("Inventory", tItemList); + } aNBT.setTag("Inventory", tItemList); + + aNBT.setInteger("piority", piority); + aNBT.setBoolean("sticky", sticky); + aNBT.setBoolean("autoUnlock",autoUnlock); + aNBT.setBoolean("suppressSticky",suppressSticky); + if(cachedFilter[0]!=null){ + NBTTagCompound tag=new NBTTagCompound(); + cachedFilter[0].writeToNBT(tag); + aNBT.setTag("cahcedFilter", tag); + } + aNBT.setBoolean("voidFull", voidFull); + aNBT.setBoolean("voidOverflow", voidOverflow); + if(capOverride!=0)aNBT.setInteger("capOverride", capOverride); + /* if(cachedFilter[0]!=null){ + NBTTagCompound tag=new NBTTagCompound(); + cachedFilter[0].writeToNBT(tag); + aNBT.setTag("cahcedFilter", tag); + } + if(piority!=0)aNBT.setInteger("piority", piority); if(sticky)aNBT.setBoolean("sticky", sticky); if(voidFull)aNBT.setBoolean("voidFull", voidFull); if(voidOverflow)aNBT.setBoolean("voidOverflow", voidOverflow); - if(capOverride!=0)aNBT.setInteger("capOverride", capOverride); + if(capOverride!=0)aNBT.setInteger("capOverride", capOverride);*/ } @Override public boolean shouldDropItemAt(int index) { diff --git a/src/main/java/reobf/proghatches/gt/metatileentity/SuperTankME.java b/src/main/java/reobf/proghatches/gt/metatileentity/SuperTankME.java index a8bf746..859d141 100644 --- a/src/main/java/reobf/proghatches/gt/metatileentity/SuperTankME.java +++ b/src/main/java/reobf/proghatches/gt/metatileentity/SuperTankME.java @@ -384,6 +384,8 @@ public UnlimitedWrapper() { @Override public IAEFluidStack injectItems(IAEFluidStack input, Actionable type, BaseActionSource src) { + post(); + try{ int acc=content.fill(input.getFluidStack(), type==Actionable.MODULATE); IAEFluidStack ret = input.copy(); ret.decStackSize(acc); @@ -391,15 +393,24 @@ public IAEFluidStack injectItems(IAEFluidStack input, Actionable type, BaseActio ){return null;} if(ret.getStackSize()==0)return null; return ret; + }finally{ + last=AEFluidStack.create(content.getFluid()); + } + } @Override public IAEFluidStack extractItems(IAEFluidStack input, Actionable type, BaseActionSource src) { - if(content.getFluid()!=null&&content.getFluid().getFluid()!=input.getFluid() + post(); + try{ + if(content.getFluid()!=null&&content.getFluid().getFluid()!=input.getFluid() ){return null;} FluidStack suck= content.drain((int) Math.min(Integer.MAX_VALUE,input.getStackSize()), type==Actionable.MODULATE); if(suck!=null&&suck.amount==0)return null; return AEFluidStack.create(suck); + }finally{ + last=AEFluidStack.create(content.getFluid()); + } } @Override @@ -577,7 +588,10 @@ int cap(){ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { if(!aBaseMetaTileEntity.getWorld().isRemote) - { if(rep>0){rep--;update=true;} + { + if(aTick%40==1){post();} + + if(rep>0){rep--;update=true;} if(this.getBaseMetaTileEntity().hasInventoryBeenModified()){ update=true; rep=1; @@ -973,11 +987,27 @@ public void saveNBTData(NBTTagCompound aNBT) { @Override public void setItemNBT(NBTTagCompound aNBT) { content.writeToNBT(aNBT); - if(piority!=0)aNBT.setInteger("piority", piority); + /* if(piority!=0)aNBT.setInteger("piority", piority); if(sticky)aNBT.setBoolean("sticky", sticky); if(voidFull)aNBT.setBoolean("voidFull", voidFull); if(voidOverflow)aNBT.setBoolean("voidOverflow", voidOverflow); if(capOverride!=0)aNBT.setInteger("capOverride", capOverride); + if(autoUnlock)aNBT.setBoolean("autoUnlock",autoUnlock); + if(suppressSticky)aNBT.setBoolean("suppressSticky",suppressSticky);*/ + aNBT.setInteger("piority", piority); + aNBT.setBoolean("sticky", sticky); + aNBT.setBoolean("autoUnlock",autoUnlock); + aNBT.setBoolean("suppressSticky",suppressSticky); + if(cachedFilter!=null){ + NBTTagCompound tag=new NBTTagCompound(); + cachedFilter.writeToNBT(tag); + aNBT.setTag("cahcedFilter", tag); + } + + aNBT.setBoolean("voidFull", voidFull); + aNBT.setBoolean("voidOverflow", voidOverflow); + + if(capOverride!=0)aNBT.setInteger("capOverride", capOverride); } @Override public boolean shouldDropItemAt(int index) { diff --git a/src/main/java/reobf/proghatches/gt/metatileentity/multi/IngredientDistributor.java b/src/main/java/reobf/proghatches/gt/metatileentity/multi/IngredientDistributor.java index baee60d..3696617 100644 --- a/src/main/java/reobf/proghatches/gt/metatileentity/multi/IngredientDistributor.java +++ b/src/main/java/reobf/proghatches/gt/metatileentity/multi/IngredientDistributor.java @@ -45,8 +45,10 @@ import appeng.api.AEApi; import appeng.api.config.Actionable; import appeng.api.networking.security.BaseActionSource; +import appeng.api.storage.IMEMonitor; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEItemStack; +import appeng.api.storage.data.IAEStack; import appeng.api.storage.data.IItemList; import appeng.me.GridAccessException; import appeng.util.item.AEFluidStack; @@ -995,6 +997,15 @@ private boolean isAllMEOutputEmpty(){ } catch (Exception e) { e.printStackTrace(); }} + +private static > T verifyForRealExistance(T tocheck,IMEMonitor tocheckfrom){ + + if(tocheck==null)return tocheck; + + return tocheckfrom.extractItems(tocheck, Actionable.SIMULATE, fakeSource); + + } + @SuppressWarnings({ "unchecked", "unused" }) private TransferCheckResult checkMEBus(MTEHatchOutputBusME bus,ItemStack check,int index){ @@ -1009,10 +1020,11 @@ private TransferCheckResult checkMEBus(MTEHatchOutputBusME bus,ItemStack check,i return TransferCheckResult.ofFail("cache.diff.bus",index,cp(next),cp(check)); } } - itr = bus.getProxy().getStorage().getItemInventory().getStorageList().iterator(); + IMEMonitor itemInventory = bus.getProxy().getStorage().getItemInventory(); + itr = itemInventory.getStorageList().iterator(); //if(check!=null) while(itr.hasNext()){IAEItemStack next; - if((next=itr.next()).isSameType(check)==false&&next.getStackSize()>0){ + if((next=verifyForRealExistance(itr.next(),itemInventory)).isSameType(check)==false&&next.getStackSize()>0){ if(check==null) return TransferCheckResult.ofFail("net.diff.bus.null",index,cp(next)); return TransferCheckResult.ofFail("net.diff.bus",index,cp(next),cp(check)); @@ -1050,11 +1062,11 @@ private TransferCheckResult checkMEHatch(MTEHatchOutputME bus,FluidStack check,i return TransferCheckResult.ofFail("cache.diff.hatch",index,cp(next),cp(check)); } } - - itr = bus.getProxy().getStorage().getFluidInventory().getStorageList().iterator(); + IMEMonitor itemInventory = bus.getProxy().getStorage().getFluidInventory(); + itr = itemInventory.getStorageList().iterator(); //if(check!=null) while(itr.hasNext()){IAEFluidStack next; - if(!sameType(next=itr.next(),(check))&&next.getStackSize()>0){ + if(!sameType(next=verifyForRealExistance(itr.next(),itemInventory),(check))&&next.getStackSize()>0){ if(check==null) return TransferCheckResult.ofFail("net.diff.hatch.null",index,cp(next)); return TransferCheckResult.ofFail("net.diff.hatch",index,cp(next),cp(check)); @@ -1130,6 +1142,7 @@ private static boolean sameType(IAEFluidStack a,FluidStack b){ private boolean moveToOutpus(IDualInputInventory opt,boolean checkSpace) { ItemStack[] i = opt.getItemInputs(); + i=Arrays.stream(i).filter(s->s.stackSize>0).toArray(ItemStack[]::new); FluidStack[] f = opt.getFluidInputs(); boolean anyDiff=false; if(i.length>mOutputBusses.size()){ diff --git a/src/main/java/reobf/proghatches/main/MyMod.java b/src/main/java/reobf/proghatches/main/MyMod.java index 486339e..2633605 100644 --- a/src/main/java/reobf/proghatches/main/MyMod.java +++ b/src/main/java/reobf/proghatches/main/MyMod.java @@ -202,6 +202,10 @@ public class MyMod { public static MyMod instance; { + + + + if((Boolean)Launch.blackboard.get("fml.deobfuscatedEnvironment") ){ DualityInterface.class.getDeclaredFields(); /*CraftingCPUCluster.class.getDeclaredFields(); @@ -280,11 +284,13 @@ public int getItemStackLimit() { public static Block submitter; public static Item cpu; public static Block reader; - + { + FMLCommonHandler.instance().bus().register(this); + MinecraftForge.EVENT_BUS.register(this); + + } @Mod.EventHandler - // preInit "Run before anything else. Read your config, create blocks, - // items, etc, and register them with the - // GameRegistry." (Remove if not needed) + public void preInit(FMLPreInitializationEvent event) { FluidConvertingInventoryAdaptor.class.getFields(); net.registerMessage(new OpenPartGuiMessage.Handler(), OpenPartGuiMessage.class, 0, Side.CLIENT); @@ -316,8 +322,7 @@ public void init(FMLInitializationEvent event) { "reobf.proghatches.eucrafting.ILazer"); AEApi.instance().partHelper().registerNewLayer("reobf.proghatches.fmp.LayerCraftingMachine", "appeng.api.implementations.tiles.ICraftingMachine"); - FMLCommonHandler.instance().bus().register(this); - MinecraftForge.EVENT_BUS.register(this); + OCApi.put(iohub, TileIOHub.OCApi.class); OCApi.put(oc_api, ItemAPICard.APIEnv.class); @@ -382,6 +387,7 @@ public void join(PlayerLoggedInEvent e) { return; } p.get = true; + /*EntityItem entityitem = e.player.dropPlayerItemWithRandomChoice( Optional.of(tutorial("programmable_hatches.eucreafting.tutorial")).map(s -> { s.stackTagCompound.setString("proghatchesSpecialTag", "true"); @@ -719,14 +725,16 @@ public static class Prop implements IExtendedEntityProperties { public int alert_mask; @Override - public void saveNBTData(NBTTagCompound compound) { - + public void saveNBTData(NBTTagCompound compound0) { + NBTTagCompound compound = new NBTTagCompound(); compound.setInteger("alert_mask", alert_mask); compound.setBoolean(GET_PROGHATCHBOOK + "_get", get); + compound0.setTag(GET_PROGHATCHBOOK, compound); } @Override - public void loadNBTData(NBTTagCompound compound) { + public void loadNBTData(NBTTagCompound compound0) { + NBTTagCompound compound = compound0.getCompoundTag(GET_PROGHATCHBOOK); get = compound.getBoolean(GET_PROGHATCHBOOK + "_get"); alert_mask = compound.getInteger("alert_mask"); } diff --git a/src/main/java/reobf/proghatches/main/mixin/MixinPlugin.java b/src/main/java/reobf/proghatches/main/mixin/MixinPlugin.java index 487ea0f..622ac46 100644 --- a/src/main/java/reobf/proghatches/main/mixin/MixinPlugin.java +++ b/src/main/java/reobf/proghatches/main/mixin/MixinPlugin.java @@ -233,7 +233,7 @@ public List getMixins() { // nee // pattern // encoder - // no version for wireless version, WIP + } } diff --git a/src/main/java/reobf/proghatches/main/mixin/mixins/part2/MixinContextNoCircuitCache.java b/src/main/java/reobf/proghatches/main/mixin/mixins/part2/MixinContextNoCircuitCache.java index be12034..496deb4 100644 --- a/src/main/java/reobf/proghatches/main/mixin/mixins/part2/MixinContextNoCircuitCache.java +++ b/src/main/java/reobf/proghatches/main/mixin/mixins/part2/MixinContextNoCircuitCache.java @@ -2,26 +2,50 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import appeng.api.networking.IGrid; +import appeng.api.networking.IGridNode; +import appeng.api.storage.data.IAEStack; import appeng.crafting.v2.CraftingContext; +import appeng.util.item.AEItemStack; +import it.unimi.dsi.fastutil.objects.Object2BooleanMap; +import it.unimi.dsi.fastutil.objects.Object2BooleanOpenHashMap; import reobf.proghatches.ae.IIsExtractFromInvAllowed; import reobf.proghatches.ae.TileStockingCircuitRequestInterceptor; +import reobf.proghatches.main.MyMod; @Mixin(value=CraftingContext .class,remap=false) public class MixinContextNoCircuitCache implements IIsExtractFromInvAllowed { + + @Unique + private Object2BooleanMap mapcache=new Object2BooleanOpenHashMap(); + + @Override - public boolean isAllowed() { - if(isAllowedCache==null){ - isAllowedCache=meGrid.getMachines(TileStockingCircuitRequestInterceptor.class).isEmpty(); - //isAllowedCache=false; - } - return isAllowedCache; + public boolean isAllowed(IAEStack stack) { + Boolean b=mapcache.get(stack); + if(b!=null)return b; + for(IGridNode te:meGrid.getMachines(TileStockingCircuitRequestInterceptor.class)){ + + if(false==((TileStockingCircuitRequestInterceptor)te.getMachine()) + .isAllowed(stack)){ + System.out.println("cachef"); + mapcache.put(stack.copy(), false); + return false;} + + + + } + System.out.println("cachet"); + mapcache.put(stack.copy(), true); + return true; } - Boolean isAllowedCache; + //Boolean isAllowedCache; @Shadow public IGrid meGrid; + } diff --git a/src/main/java/reobf/proghatches/main/mixin/mixins/part2/MixinExtractIntercept.java b/src/main/java/reobf/proghatches/main/mixin/mixins/part2/MixinExtractIntercept.java index 8257196..10eedc0 100644 --- a/src/main/java/reobf/proghatches/main/mixin/mixins/part2/MixinExtractIntercept.java +++ b/src/main/java/reobf/proghatches/main/mixin/mixins/part2/MixinExtractIntercept.java @@ -30,9 +30,7 @@ protected MixinExtractIntercept(CraftingRequest request, int priority) { public void extract(CraftingContext context, MECraftingInventory source, List removedList,CallbackInfo c){ if( - !((IIsExtractFromInvAllowed)(Object)context).isAllowed()&& - this.request.stack.isItem()&& - ((AEItemStack)this.request.stack).getItem()==MyMod.progcircuit + !((IIsExtractFromInvAllowed)(Object)context).isAllowed(this.request.stack) ){ diff --git a/src/main/java/reobf/proghatches/main/registration/ProgHatchCreativeTab.java b/src/main/java/reobf/proghatches/main/registration/ProgHatchCreativeTab.java index dadadc8..32c0530 100644 --- a/src/main/java/reobf/proghatches/main/registration/ProgHatchCreativeTab.java +++ b/src/main/java/reobf/proghatches/main/registration/ProgHatchCreativeTab.java @@ -103,7 +103,7 @@ public void displayAllReleventItems(List p_78018_1_) { p_78018_1_.add(new ItemStack(MyMod.ma_conduit)); p_78018_1_.add(new ItemStack(MyMod.ma_iface)); p_78018_1_.add(new ItemStack(MyMod.circuit_interceptor)); - + p_78018_1_.add(new ItemStack(MyMod.circuit_interceptor,1,1)); diff --git a/src/main/java/reobf/proghatches/util/ProghatchesUtil.java b/src/main/java/reobf/proghatches/util/ProghatchesUtil.java index 2192043..ba4a9cc 100644 --- a/src/main/java/reobf/proghatches/util/ProghatchesUtil.java +++ b/src/main/java/reobf/proghatches/util/ProghatchesUtil.java @@ -259,7 +259,7 @@ public static void handleUse(Object player, Object tile, Object priorityHost, } public static boolean handleUse(EntityPlayer player, /*SuperChestME*/MetaTileEntity te) { if(player.getHeldItem()==null){return false;} - if(player.getHeldItem().getItem()instanceof ToolPriorityCard){return false;} + if(!(player.getHeldItem().getItem() instanceof ToolPriorityCard)){return false;} handleUse( player, diff --git a/src/main/resources/assets/proghatches/lang/en_US.lang b/src/main/resources/assets/proghatches/lang/en_US.lang index cfb48c2..d6ad13c 100644 --- a/src/main/resources/assets/proghatches/lang/en_US.lang +++ b/src/main/resources/assets/proghatches/lang/en_US.lang @@ -717,3 +717,4 @@ proghatch.keybinding.kit.switch.mode.0=Mode 1: Disabled proghatch.keybinding.kit.switch.mode.1=Mode 2: Normal proghatch.keybinding.kit.switch.mode.2=Mode 3: Normal + Reset Circuit proghatch.keybinding.kit.switch.desc=Switch Toolkit Mode (equipped in Baubles slot) +tile.proghatches.circuit_interceptor.change=Item to intercept: %S