diff --git a/src/main/java/com/pahimar/ee3/EquivalentExchange3.java b/src/main/java/com/pahimar/ee3/EquivalentExchange3.java index 023e9c6c..63c58212 100644 --- a/src/main/java/com/pahimar/ee3/EquivalentExchange3.java +++ b/src/main/java/com/pahimar/ee3/EquivalentExchange3.java @@ -2,9 +2,6 @@ package com.pahimar.ee3; import com.pahimar.ee3.array.AlchemyArrayRegistry; import com.pahimar.ee3.command.CommandEE; -import com.pahimar.ee3.command.CommandSetCurrentItemValue; -import com.pahimar.ee3.command.CommandSetValue; -import com.pahimar.ee3.command.CommandSyncValues; import com.pahimar.ee3.exchange.EnergyValueRegistry; import com.pahimar.ee3.handler.*; import com.pahimar.ee3.init.*; @@ -59,9 +56,6 @@ public class EquivalentExchange3 TransmutationKnowledgeRegistry.getInstance(); event.registerServerCommand(new CommandEE()); - event.registerServerCommand(new CommandSetValue()); - event.registerServerCommand(new CommandSetCurrentItemValue()); - event.registerServerCommand(new CommandSyncValues()); } @EventHandler diff --git a/src/main/java/com/pahimar/ee3/api/EnergyValue.java b/src/main/java/com/pahimar/ee3/api/EnergyValue.java index e062f1d5..c7a58122 100644 --- a/src/main/java/com/pahimar/ee3/api/EnergyValue.java +++ b/src/main/java/com/pahimar/ee3/api/EnergyValue.java @@ -2,6 +2,8 @@ package com.pahimar.ee3.api; import com.google.gson.*; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.IChatComponent; import java.lang.reflect.Type; @@ -100,6 +102,11 @@ public final class EnergyValue implements Comparable, JsonDeseriali } } + public IChatComponent getChatComponent() + { + return new ChatComponentText("" + this.getEnergyValue()); + } + public NBTTagCompound writeToNBT(NBTTagCompound nbtTagCompound) { nbtTagCompound.setFloat("energyValue", energyValue); diff --git a/src/main/java/com/pahimar/ee3/command/CommandEE.java b/src/main/java/com/pahimar/ee3/command/CommandEE.java index 47f6f312..76adbd27 100644 --- a/src/main/java/com/pahimar/ee3/command/CommandEE.java +++ b/src/main/java/com/pahimar/ee3/command/CommandEE.java @@ -63,6 +63,8 @@ public class CommandEE extends CommandBase static { + modCommands.add(new CommandSetEnergyValue()); + modCommands.add(new CommandSyncEnergyValues()); modCommands.add(new CommandPlayerLearnEverything()); modCommands.add(new CommandPlayerLearnItem()); modCommands.add(new CommandPlayerForgetEverything()); diff --git a/src/main/java/com/pahimar/ee3/command/CommandPlayerLearnItem.java b/src/main/java/com/pahimar/ee3/command/CommandPlayerLearnItem.java index acbc9917..bccf66a6 100644 --- a/src/main/java/com/pahimar/ee3/command/CommandPlayerLearnItem.java +++ b/src/main/java/com/pahimar/ee3/command/CommandPlayerLearnItem.java @@ -1,5 +1,6 @@ package com.pahimar.ee3.command; +import com.pahimar.ee3.knowledge.AbilityRegistry; import com.pahimar.ee3.knowledge.TransmutationKnowledgeRegistry; import com.pahimar.ee3.reference.Messages; import com.pahimar.ee3.reference.Names; @@ -82,8 +83,11 @@ public class CommandPlayerLearnItem extends CommandBase } } - TransmutationKnowledgeRegistry.getInstance().teachPlayer(entityPlayer, itemStack); - func_152373_a(commandSender, this, Messages.Commands.PLAYER_LEARN_ITEM_SUCCESS, new Object[]{commandSender.getCommandSenderName(), entityPlayer.getCommandSenderName(), itemStack.func_151000_E()}); + if (AbilityRegistry.getInstance().isLearnable(itemStack)) + { + TransmutationKnowledgeRegistry.getInstance().teachPlayer(entityPlayer, itemStack); + func_152373_a(commandSender, this, Messages.Commands.PLAYER_LEARN_ITEM_SUCCESS, new Object[]{commandSender.getCommandSenderName(), entityPlayer.getCommandSenderName(), itemStack.func_151000_E()}); + } } else { diff --git a/src/main/java/com/pahimar/ee3/command/CommandSetCurrentItemValue.java b/src/main/java/com/pahimar/ee3/command/CommandSetCurrentItemValue.java deleted file mode 100644 index 3f7e1f23..00000000 --- a/src/main/java/com/pahimar/ee3/command/CommandSetCurrentItemValue.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.pahimar.ee3.command; - -import com.pahimar.ee3.api.EnergyValue; -import com.pahimar.ee3.exchange.EnergyValueRegistry; -import com.pahimar.ee3.exchange.WrappedStack; -import com.pahimar.ee3.network.PacketHandler; -import com.pahimar.ee3.network.message.MessageSetEnergyValue; -import com.pahimar.ee3.reference.Files; -import com.pahimar.ee3.util.LogHelper; -import com.pahimar.ee3.util.SerializationHelper; -import net.minecraft.command.CommandBase; -import net.minecraft.command.ICommandSender; -import net.minecraft.command.WrongUsageException; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -import java.util.List; -import java.util.Map; - - -public class CommandSetCurrentItemValue extends CommandBase -{ - @Override - public String getCommandName() - { - return "ee3-set-current-item-value"; - } - - @Override - public String getCommandUsage(ICommandSender commandSender) - { - return "command.ee3.set-current-item-value.usage"; - } - - @Override - public void processCommand(ICommandSender commandSender, String[] args) - { - if (args.length < 2) - { - throw new WrongUsageException("command.ee3.set-current-item-value.usage"); - } - else - { - ItemStack itemStack = ((EntityPlayer) commandSender).getCurrentEquippedItem().copy(); - double energyValue = 0; - - if (args.length >= 2) - { - energyValue = parseDoubleWithMin(commandSender, args[1], 0); - } - - if (itemStack != null && Double.compare(energyValue, 0) > 0) - { - WrappedStack wrappedStack = new WrappedStack(itemStack); - EnergyValue newEnergyValue = new EnergyValue(energyValue); - - if (args[0].equalsIgnoreCase("pre")) - { - Map preAssignedValues = SerializationHelper.readEnergyValueStackMapFromJsonFile(Files.PRE_ASSIGNED_ENERGY_VALUES); - preAssignedValues.put(wrappedStack, newEnergyValue); - SerializationHelper.writeEnergyValueStackMapToJsonFile(Files.PRE_ASSIGNED_ENERGY_VALUES, preAssignedValues); - EnergyValueRegistry.getInstance().setShouldRegenNextRestart(true); - } - else if (args[0].equalsIgnoreCase("post")) - { - EnergyValueRegistry.getInstance().setEnergyValue(wrappedStack, newEnergyValue); - Map postAssignedValues = SerializationHelper.readEnergyValueStackMapFromJsonFile(Files.POST_ASSIGNED_ENERGY_VALUES); - postAssignedValues.put(wrappedStack, newEnergyValue); - SerializationHelper.writeEnergyValueStackMapToJsonFile(Files.POST_ASSIGNED_ENERGY_VALUES, postAssignedValues); - PacketHandler.INSTANCE.sendToAll(new MessageSetEnergyValue(wrappedStack, newEnergyValue)); - } - - // Notify admins and log the value change - func_152373_a(commandSender, this, "command.ee3.set-current-item-value.success", new Object[]{commandSender.getCommandSenderName(), args[0], wrappedStack.toString(), newEnergyValue.toString()}); - LogHelper.info(String.format("%s set the EnergyValue of %s to %s", commandSender.getCommandSenderName(), wrappedStack, newEnergyValue)); - } - else - { - throw new WrongUsageException("command.ee3.set-current-item-value.usage"); - } - } - } - - @Override - public List addTabCompletionOptions(ICommandSender commandSender, String[] args) - { - if (args.length == 1) - { - return getListOfStringsMatchingLastWord(args, "pre", "post"); - } - - return null; - } -} diff --git a/src/main/java/com/pahimar/ee3/command/CommandSetValue.java b/src/main/java/com/pahimar/ee3/command/CommandSetEnergyValue.java similarity index 77% rename from src/main/java/com/pahimar/ee3/command/CommandSetValue.java rename to src/main/java/com/pahimar/ee3/command/CommandSetEnergyValue.java index c1f4a0fd..4eba6326 100644 --- a/src/main/java/com/pahimar/ee3/command/CommandSetValue.java +++ b/src/main/java/com/pahimar/ee3/command/CommandSetEnergyValue.java @@ -7,6 +7,7 @@ import com.pahimar.ee3.network.PacketHandler; import com.pahimar.ee3.network.message.MessageSetEnergyValue; import com.pahimar.ee3.reference.Files; import com.pahimar.ee3.reference.Messages; +import com.pahimar.ee3.reference.Names; import com.pahimar.ee3.util.LogHelper; import com.pahimar.ee3.util.SerializationHelper; import net.minecraft.command.CommandBase; @@ -21,47 +22,57 @@ import net.minecraft.nbt.NBTTagCompound; import java.util.List; import java.util.Map; -public class CommandSetValue extends CommandBase +public class CommandSetEnergyValue extends CommandBase { @Override public String getCommandName() { - return "ee3-set-value"; + return Names.Commands.SET_ENERGY_VALUE; + } + + @Override + public int getRequiredPermissionLevel() + { + return 2; } @Override public String getCommandUsage(ICommandSender commandSender) { - return "command.ee3.set-value.usage"; + return Messages.Commands.SET_ENERGY_VALUE_USAGE; } @Override public void processCommand(ICommandSender commandSender, String[] args) { - if (args.length < 3) + for (int i = 0; i < args.length; i++) { - throw new WrongUsageException("command.ee3.set-value.usage"); + LogHelper.info(String.format("args[%s]: %s", i, args[i])); + } + if (args.length < 4) + { + throw new WrongUsageException(Messages.Commands.SET_ENERGY_VALUE_USAGE); } else { - Item item = getItemByText(commandSender, args[1]); + Item item = getItemByText(commandSender, args[2]); double energyValue = 0; int metaData = 0; - if (args.length >= 3) + if (args.length >= 4) { - energyValue = parseDoubleWithMin(commandSender, args[2], 0); + energyValue = parseDoubleWithMin(commandSender, args[3], 0); } - else if (args.length >= 4) + else if (args.length >= 5) { - metaData = parseInt(commandSender, args[3]); + metaData = parseInt(commandSender, args[4]); } ItemStack itemStack = new ItemStack(item, 1, metaData); - if (args.length >= 5) + if (args.length >= 6) { - String stringNBTData = func_147178_a(commandSender, args, 4).getUnformattedText(); + String stringNBTData = func_147178_a(commandSender, args, 5).getUnformattedText(); try { @@ -104,12 +115,11 @@ public class CommandSetValue extends CommandBase } // Notify admins and log the value change - func_152373_a(commandSender, this, "command.ee3.set-value.success", new Object[]{commandSender.getCommandSenderName(), args[0], wrappedStack.toString(), newEnergyValue.toString()}); - LogHelper.info(String.format("%s set the EnergyValue of %s to %s", commandSender.getCommandSenderName(), wrappedStack, newEnergyValue)); + func_152373_a(commandSender, this, Messages.Commands.SET_ENERGY_VALUE_SUCCESS, new Object[]{commandSender.getCommandSenderName(), args[1], itemStack.func_151000_E(), newEnergyValue.getChatComponent()}); } else { - throw new WrongUsageException("command.ee3.set-value.usage"); + throw new WrongUsageException(Messages.Commands.SET_ENERGY_VALUE_USAGE); } } } @@ -117,11 +127,11 @@ public class CommandSetValue extends CommandBase @Override public List addTabCompletionOptions(ICommandSender commandSender, String[] args) { - if (args.length == 1) + if (args.length == 2) { return getListOfStringsMatchingLastWord(args, "pre", "post"); } - else if (args.length == 2) + else if (args.length == 3) { return getListOfStringsFromIterableMatchingLastWord(args, Item.itemRegistry.getKeys()); } diff --git a/src/main/java/com/pahimar/ee3/command/CommandSyncEnergyValues.java b/src/main/java/com/pahimar/ee3/command/CommandSyncEnergyValues.java new file mode 100644 index 00000000..fdd9f412 --- /dev/null +++ b/src/main/java/com/pahimar/ee3/command/CommandSyncEnergyValues.java @@ -0,0 +1,79 @@ +package com.pahimar.ee3.command; + +import com.pahimar.ee3.exchange.EnergyValueRegistry; +import com.pahimar.ee3.network.PacketHandler; +import com.pahimar.ee3.network.message.MessageSyncEnergyValues; +import com.pahimar.ee3.reference.Messages; +import com.pahimar.ee3.reference.Names; +import com.pahimar.ee3.reference.Settings; +import com.pahimar.ee3.util.LogHelper; +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; +import net.minecraft.command.WrongUsageException; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.util.ChatComponentTranslation; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class CommandSyncEnergyValues extends CommandBase +{ + private static Map requesterMap = new HashMap(); + + @Override + public String getCommandName() + { + return Names.Commands.SYNC_ENERGY_VALUES; + } + + @Override + public int getRequiredPermissionLevel() + { + return 4; + } + + @Override + public String getCommandUsage(ICommandSender commandSender) + { + return Messages.Commands.SYNC_ENERGY_VALUES_USAGE; + } + + @Override + public void processCommand(ICommandSender commandSender, String[] args) + { + boolean shouldSync = true; + float coolDown = 0f; + UUID commandSenderUUID = ((EntityPlayer) commandSender).getUniqueID(); + + if (requesterMap.containsKey(commandSenderUUID)) + { + long timeDifference = System.currentTimeMillis() - requesterMap.get(commandSenderUUID).longValue(); + if (timeDifference >= (Settings.General.syncThreshold * 1000)) + { + requesterMap.remove(commandSenderUUID); + } + else + { + coolDown = (Settings.General.syncThreshold * 1000) - timeDifference; + shouldSync = false; + } + } + else + { + requesterMap.put(commandSenderUUID, System.currentTimeMillis()); + } + + if (shouldSync) + { + LogHelper.info(String.format("Syncing energy values with player '%s' at their request", commandSender.getCommandSenderName())); + PacketHandler.INSTANCE.sendTo(new MessageSyncEnergyValues(EnergyValueRegistry.getInstance()), (EntityPlayerMP) commandSender); + commandSender.addChatMessage(new ChatComponentTranslation(Messages.Commands.SYNC_ENERGY_VALUES_SUCCESS)); + } + else + { + throw new WrongUsageException(Messages.Commands.SYNC_ENERGY_VALUES_DENIED, new Object[]{coolDown / 1000f}); + } + } +} diff --git a/src/main/java/com/pahimar/ee3/command/CommandSyncValues.java b/src/main/java/com/pahimar/ee3/command/CommandSyncValues.java deleted file mode 100644 index 29d717ef..00000000 --- a/src/main/java/com/pahimar/ee3/command/CommandSyncValues.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.pahimar.ee3.command; - -import com.pahimar.ee3.exchange.EnergyValueRegistry; -import com.pahimar.ee3.network.PacketHandler; -import com.pahimar.ee3.network.message.MessageSyncEnergyValues; -import com.pahimar.ee3.reference.Settings; -import com.pahimar.ee3.util.LogHelper; -import com.pahimar.ee3.util.PlayerHelper; -import net.minecraft.command.CommandBase; -import net.minecraft.command.ICommandSender; -import net.minecraft.command.WrongUsageException; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.util.ChatComponentTranslation; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -public class CommandSyncValues extends CommandBase -{ - private static Map requesterMap = new HashMap(); - - @Override - public String getCommandName() - { - return "ee3-sync-values"; - } - - @Override - public boolean canCommandSenderUseCommand(ICommandSender commandSender) - { - return true; - } - - @Override - public String getCommandUsage(ICommandSender commandSender) - { - return "command.ee3.sync-values.usage"; - } - - @Override - public void processCommand(ICommandSender commandSender, String[] args) - { - if (args.length == 1) - { - if (args[0].equalsIgnoreCase("self")) - { - boolean shouldSync = true; - float coolDown = 0f; - - if (!PlayerHelper.isPlayerOp(((EntityPlayer) commandSender))) - { - UUID commandSenderUUID = ((EntityPlayer) commandSender).getUniqueID(); - - if (requesterMap.containsKey(commandSenderUUID)) - { - long timeDifference = System.currentTimeMillis() - requesterMap.get(commandSenderUUID).longValue(); - if (timeDifference >= (Settings.General.syncThreshold * 1000)) - { - requesterMap.remove(commandSenderUUID); - } - else - { - coolDown = (Settings.General.syncThreshold * 1000) - timeDifference; - shouldSync = false; - } - } - else - { - requesterMap.put(commandSenderUUID, System.currentTimeMillis()); - } - } - - if (shouldSync) - { - LogHelper.info(String.format("Syncing EnergyValues with player '%s' at their request", commandSender.getCommandSenderName())); - PacketHandler.INSTANCE.sendTo(new MessageSyncEnergyValues(EnergyValueRegistry.getInstance()), (EntityPlayerMP) commandSender); - commandSender.addChatMessage(new ChatComponentTranslation("command.ee3.sync-values.self.success")); - } - else - { - throw new WrongUsageException("command.ee3.sync-values.self.denied", new Object[]{coolDown / 1000f}); - } - } - else if (args[0].equalsIgnoreCase("all")) - { - if (PlayerHelper.isPlayerOp((EntityPlayer) commandSender)) - { - LogHelper.info(String.format("Syncing EnergyValues with all players at %s's request", commandSender.getCommandSenderName())); - PacketHandler.INSTANCE.sendToAll(new MessageSyncEnergyValues(EnergyValueRegistry.getInstance())); - func_152373_a(commandSender, this, "command.ee3.sync-values.all.success", new Object[]{commandSender.getCommandSenderName()}); - } - else - { - throw new WrongUsageException("command.ee3.sync-values.all.denied"); - } - } - else - { - throw new WrongUsageException("command.ee3.sync-values.usage"); - } - } - else - { - throw new WrongUsageException("command.ee3.sync-values.usage"); - } - } - - @Override - @SuppressWarnings("rawtypes") - public List addTabCompletionOptions(ICommandSender commandSender, String[] args) - { - if (args.length == 1) - { - return getListOfStringsMatchingLastWord(args, "self", "all"); - } - - return null; - } -} diff --git a/src/main/java/com/pahimar/ee3/command/CommandTemplateLearnItem.java b/src/main/java/com/pahimar/ee3/command/CommandTemplateLearnItem.java index 81cdf8ea..c6103e5e 100644 --- a/src/main/java/com/pahimar/ee3/command/CommandTemplateLearnItem.java +++ b/src/main/java/com/pahimar/ee3/command/CommandTemplateLearnItem.java @@ -1,5 +1,6 @@ package com.pahimar.ee3.command; +import com.pahimar.ee3.knowledge.AbilityRegistry; import com.pahimar.ee3.knowledge.TransmutationKnowledgeRegistry; import com.pahimar.ee3.reference.Messages; import com.pahimar.ee3.reference.Names; @@ -76,8 +77,11 @@ public class CommandTemplateLearnItem extends CommandBase } } - TransmutationKnowledgeRegistry.getInstance().teachTemplate(itemStack); - func_152373_a(commandSender, this, Messages.Commands.TEMPLATE_LEARN_ITEM_SUCCESS, new Object[]{commandSender.getCommandSenderName(), itemStack.func_151000_E()}); + if (AbilityRegistry.getInstance().isLearnable(itemStack)) + { + TransmutationKnowledgeRegistry.getInstance().teachTemplate(itemStack); + func_152373_a(commandSender, this, Messages.Commands.TEMPLATE_LEARN_ITEM_SUCCESS, new Object[]{commandSender.getCommandSenderName(), itemStack.func_151000_E()}); + } } } diff --git a/src/main/java/com/pahimar/ee3/reference/Messages.java b/src/main/java/com/pahimar/ee3/reference/Messages.java index 6d597e27..6d620126 100644 --- a/src/main/java/com/pahimar/ee3/reference/Messages.java +++ b/src/main/java/com/pahimar/ee3/reference/Messages.java @@ -11,13 +11,20 @@ public final class Messages public static final class Commands { - private static final String COMMAND_PREFIX = "command.ee3."; + private static final String COMMAND_PREFIX = "commands.ee3."; public static final String BASE_COMMAND_USAGE = COMMAND_PREFIX + "usage"; public static final String PLAYER_NOT_FOUND_ERROR = COMMAND_PREFIX + "player-not-found.error"; public static final String INVALID_NBT_TAG_ERROR = COMMAND_PREFIX + "invalid-nbt-tag.error"; + public static final String SET_ENERGY_VALUE_USAGE = COMMAND_PREFIX + Names.Commands.SET_ENERGY_VALUE + ".usage"; + public static final String SET_ENERGY_VALUE_SUCCESS = COMMAND_PREFIX + Names.Commands.SET_ENERGY_VALUE + ".success"; + + public static final String SYNC_ENERGY_VALUES_USAGE = COMMAND_PREFIX + Names.Commands.SYNC_ENERGY_VALUES + ".usage"; + public static final String SYNC_ENERGY_VALUES_SUCCESS = COMMAND_PREFIX + Names.Commands.SYNC_ENERGY_VALUES + ".success"; + public static final String SYNC_ENERGY_VALUES_DENIED = COMMAND_PREFIX + Names.Commands.SYNC_ENERGY_VALUES + ".denied"; + public static final String PLAYER_LEARN_EVERYTHING_USAGE = COMMAND_PREFIX + Names.Commands.PLAYER_LEARN_EVERYTHING + ".usage"; public static final String PLAYER_LEARN_EVERYTHING_SUCCESS = COMMAND_PREFIX + Names.Commands.PLAYER_LEARN_EVERYTHING + ".success"; diff --git a/src/main/java/com/pahimar/ee3/reference/Names.java b/src/main/java/com/pahimar/ee3/reference/Names.java index 4dc7231d..f962c021 100644 --- a/src/main/java/com/pahimar/ee3/reference/Names.java +++ b/src/main/java/com/pahimar/ee3/reference/Names.java @@ -122,6 +122,8 @@ public class Names public static final class Commands { public static final String BASE_COMMAND = Reference.LOWERCASE_MOD_ID; + public static final String SET_ENERGY_VALUE = "set-energy-value"; + public static final String SYNC_ENERGY_VALUES = "sync-energy-values"; public static final String PLAYER_LEARN_EVERYTHING = "player-learn-everything"; public static final String PLAYER_LEARN_ITEM = "player-learn-item"; public static final String PLAYER_FORGET_EVERYTHING = "player-forget-everything"; diff --git a/src/main/resources/assets/ee3/lang/en_US.lang b/src/main/resources/assets/ee3/lang/en_US.lang index 26830cea..41fe772a 100644 --- a/src/main/resources/assets/ee3/lang/en_US.lang +++ b/src/main/resources/assets/ee3/lang/en_US.lang @@ -105,59 +105,31 @@ gui.nei.ee3:calcination.tooltip.1=Energy values needed to calcine gui.nei.ee3:calcination.tooltip.2=From %s to %s gui.nei.ee3:aludel=Aludel -# Glyphs -glyph.ee3:baseCircle=Circle (Base) -glyph.ee3:circle=Circle -glyph.ee3:diamond=Diamond -glyph.ee3:dot=Dot -glyph.ee3:heptagon=Heptagon -glyph.ee3:hexagon=Hexagon -glyph.ee3:invertedTriangle=Triangle (Inverted) -glyph.ee3:line=Line -glyph.ee3:octagon=Octagon -glyph.ee3:pentagon=Pentagon -glyph.ee3:square=Square -glyph.ee3:triangle=Triangle - # Commands -command.ee3.usage=/ee3 - -command.ee3.player-not-found.error=Player with name %s was not found on the server -command.ee3.invalid-nbt-tag.error=Data tag parsing failed: %s - -command.ee3.set-value.usage=/ee3-set-value [data] [dataTag] -command.ee3.set-value.success=%s set a %s EnergyValue of %s to %s -command.ee3.set-current-item-value.usage=/ee3-set-current-item-value -command.ee3.set-current-item-value.success=%s set a %s EnergyValue of %s to %s -command.ee3.sync-values.usage=/ee3-sync-values -command.ee3.sync-values.self.success=Successfully synchronized EnergyValues with the server -command.ee3.sync-values.self.denied=Please wait %s more seconds and try again -command.ee3.sync-values.all.success=%s synchronized all EnergyValues with all players on the server -command.ee3.sync-values.all.denied=Only ops can use this command - -command.ee3.player-learn-everything.usage=/ee3 player-learn-everything -command.ee3.player-learn-everything.success=%s taught %s how to transmute everything - -command.ee3.player-learn-item.usage=/ee3 player-learn-item [dataTag] -command.ee3.player-learn-item.success=%s taught %s how to transmute %s - -command.ee3.player-forget-everything.usage=/ee3 player-forget-everything -command.ee3.player-forget-everything.success=%s made %s forget how to transmute everything - -command.ee3.player-forget-item.usage=/ee3 player-forget-item [dataTag] -command.ee3.player-forget-item.success=%s made %s forget how to transmute %s - -command.ee3.template-learn-everything.usage=/ee3 template-learn-everything -command.ee3.template-learn-everything.success=%s taught the knowledge template how to transmute everything - -command.ee3.template-learn-item.usage=/ee3 template-learn-item [dataTag] -command.ee3.template-learn-item.success=%s taught the knowledge template how to transmute %s - -command.ee3.template-forget-everything.usage=/ee3 template-forget-everything -command.ee3.template-forget-everything.success=%s made the knowledge template forget how to transmute everything - -command.ee3.template-forget-item.usage=/ee3 template-forget-item [dataTag] -command.ee3.template-forget-item.success=%s made the knowledge template forget how to transmute %s +commands.ee3.usage=/ee3 +commands.ee3.player-not-found.error=Player with name %s was not found on the server +commands.ee3.invalid-nbt-tag.error=Data tag parsing failed: %s +commands.ee3.set-energy-value.usage=/ee3 set-energy-value
   [data] [dataTag] OR /ee3 set-energy-value    [data] [dataTag]
+commands.ee3.set-energy-value.success=%s set a %s EnergyValue of %s to %s
+commands.ee3.sync-energy-values.usage=/ee3 sync-energy-values
+commands.ee3.sync-energy-values.success=Successfully synchronized energy values with the server
+commands.ee3.sync-energy-values.denied=Please wait %s more seconds and try again
+commands.ee3.player-learn-everything.usage=/ee3 player-learn-everything 
+commands.ee3.player-learn-everything.success=%s taught %s how to transmute everything
+commands.ee3.player-learn-item.usage=/ee3 player-learn-item    [dataTag]
+commands.ee3.player-learn-item.success=%s taught %s how to transmute %s
+commands.ee3.player-forget-everything.usage=/ee3 player-forget-everything 
+commands.ee3.player-forget-everything.success=%s made %s forget how to transmute everything
+commands.ee3.player-forget-item.usage=/ee3 player-forget-item    [dataTag]
+commands.ee3.player-forget-item.success=%s made %s forget how to transmute %s
+commands.ee3.template-learn-everything.usage=/ee3 template-learn-everything 
+commands.ee3.template-learn-everything.success=%s taught the knowledge template how to transmute everything
+commands.ee3.template-learn-item.usage=/ee3 template-learn-item    [dataTag]
+commands.ee3.template-learn-item.success=%s taught the knowledge template how to transmute %s
+commands.ee3.template-forget-everything.usage=/ee3 template-forget-everything 
+commands.ee3.template-forget-everything.success=%s made the knowledge template forget how to transmute everything
+commands.ee3.template-forget-item.usage=/ee3 template-forget-item    [dataTag]
+commands.ee3.template-forget-item.success=%s made the knowledge template forget how to transmute %s
 
 # Tooltips
 tooltip.ee3:upgradesPrefix=Upgrades (Alchemical) Chests