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.