From 416c7d268310a8d4b2e9554513bb719a2dcd62e2 Mon Sep 17 00:00:00 2001 From: yueh Date: Sun, 21 Oct 2018 11:17:01 +0200 Subject: [PATCH] Input P2P tunnels can now be assigned a new frequency. (#3765) Shift right clicking an existing tunnel only allowed to copied the stored frequency. When shift right clicking now and the stored frequency being the same as already stored one, it will now create a new one and save it to the memory card. In other words doubling clicking will reset now, otherwise the old behaviour is still kept. --- .../items/MemoryCardMessages.java | 2 +- .../core/localization/PlayerMessages.java | 1 + .../appeng/items/tools/ToolMemoryCard.java | 30 +++++++++++++++++-- .../java/appeng/parts/p2p/PartP2PTunnel.java | 16 ++++++++-- .../appliedenergistics2/lang/en_us.lang | 3 +- 5 files changed, 44 insertions(+), 8 deletions(-) diff --git a/src/api/java/appeng/api/implementations/items/MemoryCardMessages.java b/src/api/java/appeng/api/implementations/items/MemoryCardMessages.java index 016213148..cddc532ff 100644 --- a/src/api/java/appeng/api/implementations/items/MemoryCardMessages.java +++ b/src/api/java/appeng/api/implementations/items/MemoryCardMessages.java @@ -29,5 +29,5 @@ package appeng.api.implementations.items; */ public enum MemoryCardMessages { - INVALID_MACHINE, SETTINGS_LOADED, SETTINGS_SAVED, SETTINGS_CLEARED + INVALID_MACHINE, SETTINGS_LOADED, SETTINGS_SAVED, SETTINGS_RESET, SETTINGS_CLEARED } diff --git a/src/main/java/appeng/core/localization/PlayerMessages.java b/src/main/java/appeng/core/localization/PlayerMessages.java index c02f6461a..6a177d658 100644 --- a/src/main/java/appeng/core/localization/PlayerMessages.java +++ b/src/main/java/appeng/core/localization/PlayerMessages.java @@ -29,6 +29,7 @@ public enum PlayerMessages InvalidMachine, LoadedSettings, SavedSettings, + ResetSettings, MachineNotPowered, isNowLocked, diff --git a/src/main/java/appeng/items/tools/ToolMemoryCard.java b/src/main/java/appeng/items/tools/ToolMemoryCard.java index 9e0b1f9cc..75ae60bad 100644 --- a/src/main/java/appeng/items/tools/ToolMemoryCard.java +++ b/src/main/java/appeng/items/tools/ToolMemoryCard.java @@ -25,6 +25,7 @@ import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ActionResult; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; @@ -174,6 +175,9 @@ public class ToolMemoryCard extends AEBaseItem implements IMemoryCard case SETTINGS_SAVED: player.sendMessage( PlayerMessages.SavedSettings.get() ); break; + case SETTINGS_RESET: + player.sendMessage( PlayerMessages.ResetSettings.get() ); + break; default: } } @@ -185,9 +189,7 @@ public class ToolMemoryCard extends AEBaseItem implements IMemoryCard { if( !w.isRemote ) { - final IMemoryCard mem = (IMemoryCard) player.getHeldItem( hand ).getItem(); - mem.notifyUser( player, MemoryCardMessages.SETTINGS_CLEARED ); - player.getHeldItem( hand ).setTagCompound( null ); + this.clearCard( player, w, hand ); } return EnumActionResult.SUCCESS; } @@ -197,9 +199,31 @@ public class ToolMemoryCard extends AEBaseItem implements IMemoryCard } } + @Override + public ActionResult onItemRightClick( World w, EntityPlayer player, EnumHand hand ) + { + if( player.isSneaking() ) + { + if( !w.isRemote ) + { + this.clearCard( player, w, hand ); + } + } + + return super.onItemRightClick( w, player, hand ); + + } + @Override public boolean doesSneakBypassUse( final ItemStack itemstack, final IBlockAccess world, final BlockPos pos, final EntityPlayer player ) { return true; } + + private void clearCard( final EntityPlayer player, final World w, final EnumHand hand ) + { + final IMemoryCard mem = (IMemoryCard) player.getHeldItem( hand ).getItem(); + mem.notifyUser( player, MemoryCardMessages.SETTINGS_CLEARED ); + player.getHeldItem( hand ).setTagCompound( null ); + } } diff --git a/src/main/java/appeng/parts/p2p/PartP2PTunnel.java b/src/main/java/appeng/parts/p2p/PartP2PTunnel.java index 2e9d087d4..6271684ed 100644 --- a/src/main/java/appeng/parts/p2p/PartP2PTunnel.java +++ b/src/main/java/appeng/parts/p2p/PartP2PTunnel.java @@ -336,15 +336,18 @@ public abstract class PartP2PTunnel extends PartBasicSt } final IMemoryCard mc = (IMemoryCard) is.getItem(); - final NBTTagCompound data = new NBTTagCompound(); + final NBTTagCompound data = mc.getData( is ); + final short storedFrequency = data.getShort( "freq" ); short newFreq = this.getFrequency(); final boolean wasOutput = this.isOutput(); this.setOutput( false ); + final boolean needsNewFrequency = wasOutput || this.getFrequency() == 0 || storedFrequency == newFreq; + try { - if( wasOutput || this.getFrequency() == 0 ) + if( needsNewFrequency ) { newFreq = this.getProxy().getP2P().newFrequency(); } @@ -373,7 +376,14 @@ public abstract class PartP2PTunnel extends PartBasicSt data.setIntArray( "colorCode", colorCode ); mc.setMemoryCardContents( is, type + ".name", data ); - mc.notifyUser( player, MemoryCardMessages.SETTINGS_SAVED ); + if( needsNewFrequency ) + { + mc.notifyUser( player, MemoryCardMessages.SETTINGS_RESET ); + } + else + { + mc.notifyUser( player, MemoryCardMessages.SETTINGS_SAVED ); + } return true; } return false; diff --git a/src/main/resources/assets/appliedenergistics2/lang/en_us.lang b/src/main/resources/assets/appliedenergistics2/lang/en_us.lang index d4972e52e..2e406ce05 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/en_us.lang +++ b/src/main/resources/assets/appliedenergistics2/lang/en_us.lang @@ -84,7 +84,8 @@ chat.appliedenergistics2.DeviceNotLinked=Device is not linked. chat.appliedenergistics2.StationCanNotBeLocated=Station can not be located. chat.appliedenergistics2.MachineNotPowered=Machine is not powered. chat.appliedenergistics2.CommunicationError=Error Communicating with Network. -chat.appliedenergistics2.SavedSettings=Copied device configuration to memory card. +chat.appliedenergistics2.SavedSettings=Copied current device configuration to memory card. +chat.appliedenergistics2.ResetSettings=New device configuration created and copied to memory card. chat.appliedenergistics2.AmmoDepleted=Ammo Depleted. chat.appliedenergistics2.isNowLocked=Monitor is now Locked. chat.appliedenergistics2.isNowUnlocked=Monitor is now Unlocked.