diff options
23 files changed, 390 insertions, 5 deletions
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index 2b0704779..433fe816f 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -538,6 +538,14 @@ public class EssentialsPlayerListener implements Listener event.setCancelled(true); } } + else if (event.getView().getTopInventory().getType() == InventoryType.WORKBENCH) + { + User user = ess.getUser(event.getWhoClicked()); + if (user.isRecipeSee()) + { + event.setCancelled(true); + } + } } @EventHandler(priority = EventPriority.MONITOR) @@ -553,8 +561,17 @@ public class EssentialsPlayerListener implements Listener final User user = ess.getUser(event.getPlayer()); user.setEnderSee(false); } + if (event.getView().getTopInventory().getType() == InventoryType.WORKBENCH) + { + final User user = ess.getUser(event.getPlayer()); + if(user.isRecipeSee()) + { + user.setRecipeSee(false); + event.getView().getTopInventory().clear(); + } + } } - + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onPlayerFishEvent(final PlayerFishEvent event) { diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java index fb0073c8a..1ad9b0207 100644 --- a/Essentials/src/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/com/earth2me/essentials/ISettings.java @@ -183,4 +183,6 @@ public interface ISettings extends IConf public int getMailsPerMinute(); public void setEssentialsChatActive(boolean b); + + long getMaxTempban(); } diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index e1519b108..8ce392abb 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -982,4 +982,10 @@ public class Settings implements ISettings { return mailsPerMinute; } + + @Override + public long getMaxTempban() + { + return config.getLong("max-tempban-time", -1); + } } diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java index 5de4b7609..1c5d04530 100644 --- a/Essentials/src/com/earth2me/essentials/User.java +++ b/Essentials/src/com/earth2me/essentials/User.java @@ -29,6 +29,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser private boolean rightClickJump = false; private transient Location afkPosition = null; private boolean invSee = false; + private boolean recipeSee = false; private boolean enderSee = false; private static final Logger logger = Logger.getLogger("Minecraft"); @@ -743,4 +744,14 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser { return this.isAuthorized("essentials.chat.ignoreexempt"); } + + public boolean isRecipeSee() + { + return recipeSee; + } + + public void setRecipeSee(boolean recipeSee) + { + this.recipeSee = recipeSee; + } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java b/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java new file mode 100755 index 000000000..721ccc857 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java @@ -0,0 +1,177 @@ +package com.earth2me.essentials.commands;
+
+import static com.earth2me.essentials.I18n._;
+import com.earth2me.essentials.User;
+import com.earth2me.essentials.Util;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Map.Entry;
+import org.bukkit.Material;
+import org.bukkit.Server;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.FurnaceRecipe;
+import org.bukkit.inventory.InventoryView;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.Recipe;
+import org.bukkit.inventory.ShapedRecipe;
+import org.bukkit.inventory.ShapelessRecipe;
+
+
+public class Commandrecipe extends EssentialsCommand
+{
+ public Commandrecipe()
+ {
+ super("recipe");
+ }
+
+ @Override
+ public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
+ {
+ if (args.length < 1)
+ {
+ throw new NotEnoughArgumentsException();
+ }
+ final ItemStack item = ess.getItemDb().get(args[0]);
+ final List<Recipe> recipes = ess.getServer().getRecipesFor(item);
+ if (recipes.size() < 1)
+ {
+ throw new Exception(_("recipeNone", getMaterialName(item)));
+ }
+ int recipeNo = 0;
+ if (args.length > 1)
+ {
+ if (Util.isInt(args[1]))
+ {
+ recipeNo = Integer.parseInt(args[1]) - 1;
+ }
+ else
+ {
+ throw new Exception(_("invalidNumber"));
+ }
+ }
+ if (recipeNo < 0 || recipeNo >= recipes.size())
+ {
+ throw new Exception(_("recipeBadIndex"));
+ }
+ final Recipe recipe = recipes.get(recipeNo);
+ sender.sendMessage(_("recipe", getMaterialName(item), recipeNo + 1, recipes.size()));
+ if (recipe instanceof FurnaceRecipe)
+ {
+ furnaceRecipe(sender, (FurnaceRecipe)recipe);
+ }
+ else if (recipe instanceof ShapedRecipe)
+ {
+ shapedRecipe(sender, (ShapedRecipe)recipe);
+ }
+ else if (recipe instanceof ShapelessRecipe)
+ {
+ shapelessRecipe(sender, (ShapelessRecipe)recipe);
+ }
+ if (recipes.size() > 1 && args.length == 1)
+ {
+ sender.sendMessage(_("recipeMore", commandLabel, args[0], getMaterialName(item)));
+ }
+ }
+
+ public void furnaceRecipe(CommandSender sender, FurnaceRecipe recipe)
+ {
+ sender.sendMessage(_("recipeFurnace", getMaterialName(recipe.getInput())));
+ }
+
+ public void shapedRecipe(CommandSender sender, ShapedRecipe recipe)
+ {
+ Map<Character, ItemStack> recipeMap = recipe.getIngredientMap();
+ if (!(sender instanceof Player))
+ {
+ HashMap<Material, String> colorMap = new HashMap<Material, String>();
+ int i = 1;
+ for (Character c : "abcdefghi".toCharArray())
+ {
+ ItemStack item = recipeMap.get(c);
+ if (!colorMap.containsKey(item == null ? null : item.getType()))
+ {
+ colorMap.put(item == null ? null : item.getType(), String.valueOf(i++));
+ }
+ }
+ Material[][] materials = new Material[3][3];
+ for (int j = 0; j < recipe.getShape().length; j++)
+ {
+ for (int k = 0; k < recipe.getShape()[j].length(); k++)
+ {
+ ItemStack item = recipe.getIngredientMap().get(recipe.getShape()[j].toCharArray()[k]);
+ materials[j][k] = item == null ? null : item.getType();
+ }
+ }
+ sender.sendMessage(_("recipeGrid", colorMap.get(materials[0][0]), colorMap.get(materials[0][1]), colorMap.get(materials[0][2])));
+ sender.sendMessage(_("recipeGrid", colorMap.get(materials[1][0]), colorMap.get(materials[1][1]), colorMap.get(materials[1][2])));
+ sender.sendMessage(_("recipeGrid", colorMap.get(materials[2][0]), colorMap.get(materials[2][1]), colorMap.get(materials[2][2])));
+
+ StringBuilder s = new StringBuilder();
+ for (Material items : colorMap.keySet().toArray(new Material[colorMap.size()]))
+ {
+ s.append(_("recipeGridItem", colorMap.get(items), getMaterialName(items)));
+ }
+ sender.sendMessage(_("recipeWhere", s.toString()));
+ }
+ else
+ {
+ User user = ess.getUser(sender);
+ user.setRecipeSee(true);
+ InventoryView view = user.openWorkbench(null, true);
+ for (Entry<Character, ItemStack> e : ((ShapedRecipe)recipe).getIngredientMap().entrySet())
+ {
+ view.setItem(" abcdefghi".indexOf(e.getKey()), e.getValue());
+ }
+ }
+ }
+
+ public void shapelessRecipe(CommandSender sender, ShapelessRecipe recipe)
+ {
+ List<ItemStack> ingredients = recipe.getIngredientList();
+ if (!(sender instanceof Player))
+ {
+ StringBuilder s = new StringBuilder();
+ for (int i = 0; i < ingredients.size(); i++)
+ {
+ s.append(getMaterialName(ingredients.get(i)));
+ if (i != ingredients.size() - 1)
+ {
+ s.append(",");
+ }
+ s.append(" ");
+ }
+ sender.sendMessage(_("recipeShapeless", s.toString()));
+ }
+ else
+ {
+ User user = ess.getUser(sender);
+ user.setRecipeSee(true);
+ InventoryView view = user.openWorkbench(null, true);
+ for (int i = 0; i < ingredients.size(); i++)
+ {
+ view.setItem(i + 1, ingredients.get(i));
+ }
+ }
+ }
+
+ public String getMaterialName(ItemStack stack)
+ {
+ if (stack == null)
+ {
+ return _("recipeNothing");
+ }
+ return getMaterialName(stack.getType());
+ }
+
+ public String getMaterialName(Material type)
+ {
+ if (type == null)
+ {
+ return _("recipeNothing");
+ }
+ return type.toString().replace("_", " ").toLowerCase(Locale.ENGLISH);
+ }
+}
\ No newline at end of file diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtempban.java b/Essentials/src/com/earth2me/essentials/commands/Commandtempban.java index 0549e9c0d..97aa2ea3b 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtempban.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtempban.java @@ -4,6 +4,8 @@ import com.earth2me.essentials.Console; import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.User; import com.earth2me.essentials.Util; +import java.util.Calendar; +import java.util.GregorianCalendar; import org.bukkit.Server; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -35,7 +37,7 @@ public class Commandtempban extends EssentialsCommand } else { - if (user.isAuthorized("essentials.tempban.exempt")) + if (user.isAuthorized("essentials.tempban.exempt") && sender instanceof Player) { sender.sendMessage(_("tempbanExempt")); return; @@ -44,6 +46,13 @@ public class Commandtempban extends EssentialsCommand final String time = getFinalArg(args, 1); final long banTimestamp = Util.parseDateDiff(time, true); + final long maxBanLength = ess.getSettings().getMaxTempban() * 1000; + if(maxBanLength > 0 && ((banTimestamp - GregorianCalendar.getInstance().getTimeInMillis()) > maxBanLength) && ess.getUser(sender).isAuthorized("essentials.tempban.unlimited")) + { + sender.sendMessage(_("oversizedTempban")); + throw new NoChargeException(); + } + final String senderName = sender instanceof Player ? ((Player)sender).getDisplayName() : Console.NAME; final String banReason = _("tempBanned", Util.formatDateDiff(banTimestamp), senderName); user.setBanReason(banReason); diff --git a/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java b/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java index e338af366..2a95d4d84 100644 --- a/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java +++ b/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java @@ -5,7 +5,6 @@ import com.earth2me.essentials.IEssentials; import com.earth2me.essentials.User; import com.earth2me.essentials.Util; import java.text.DateFormat; -import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index a766e0549..e428354a8 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -351,6 +351,10 @@ sethome-multiple: # Set to 0 for no timeout tpa-accept-cancellation: 0 +# Set the maximum time /tempban can be used for in seconds. +# Set to -1 to disable, and essentials.tempban.unlimited can be used to override. +max-tempban-time: -1 + ############################################################ # +------------------------------------------------------+ # # | EssentialsEco | # diff --git a/Essentials/src/messages.properties b/Essentials/src/messages.properties index 8a17513cf..cec54fb85 100644 --- a/Essentials/src/messages.properties +++ b/Essentials/src/messages.properties @@ -466,3 +466,15 @@ teleportationEnabledFor=\u00a76Teleportation enabled for {0} teleportationDisabledFor=\u00a76Teleportation disabled for {0} kitOnce=\u00a74You can't use that kit again. fullStack=\u00a74You already have a full stack +oversizedTempban=\u00a74You may not ban a player for this period of time. +recipeNone=No recipes exist for {0} +invalidNumber=Invalid Number +recipeBadIndex=There is no recipe by that number +recipeNothing=nothing +recipe=\u00a76Recipe for \u00a7c{0}\u00a76 ({1} of {2}) +recipeFurnace=\u00a76Smelt \u00a7c{0} +recipeGrid=\u00a7{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X +recipeGridItem=\ \u00a7{0}X \u00a76is \u00a7c{1} +recipeMore=\u00a76Type /{0} \u00a7c{1}\u00a76 <number> to see other recipes for \u00a7c{2} +recipeWhere=\u00a76Where: {0} +recipeShapeless=\u00a76Combine \u00a7c{0} diff --git a/Essentials/src/messages_cs.properties b/Essentials/src/messages_cs.properties index 5cc095f15..486c085cb 100644 --- a/Essentials/src/messages_cs.properties +++ b/Essentials/src/messages_cs.properties @@ -469,3 +469,15 @@ teleportationEnabledFor=\u00a76Teleportation enabled for {0} teleportationDisabledFor=\u00a76Teleportation disabled for {0} kitOnce=\u00a74You can't use that kit again. fullStack=\u00a74You already have a full stack +oversizedTempban=\u00a74You may not ban a player for this period of time. +recipeNone=No recipes exist for {0} +invalidNumber=Invalid Number +recipeBadIndex=There is no recipe by that number +recipeNothing=nothing +recipe=\u00a76Recipe for \u00a7c{0}\u00a76 ({1} of {2}) +recipeFurnace=\u00a76Smelt \u00a7c{0} +recipeGrid=\u00a7{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X +recipeGridItem=\ \u00a7{0}X \u00a76is \u00a7c{1} +recipeMore=\u00a76Type /{0} \u00a7c{1}\u00a76 <number> to see other recipes for \u00a7c{2} +recipeWhere=\u00a76Where: {0} +recipeShapeless=\u00a76Combine \u00a7c{0} diff --git a/Essentials/src/messages_da.properties b/Essentials/src/messages_da.properties index 6beff781a..f69dc4ebb 100644 --- a/Essentials/src/messages_da.properties +++ b/Essentials/src/messages_da.properties @@ -466,3 +466,15 @@ teleportationEnabledFor=\u00a76Teleportation enabled for {0} teleportationDisabledFor=\u00a76Teleportation disabled for {0} kitOnce=\u00a74You can't use that kit again. fullStack=\u00a74You already have a full stack +oversizedTempban=\u00a74You may not ban a player for this period of time. +recipeNone=No recipes exist for {0} +invalidNumber=Invalid Number +recipeBadIndex=There is no recipe by that number +recipeNothing=nothing +recipe=\u00a76Recipe for \u00a7c{0}\u00a76 ({1} of {2}) +recipeFurnace=\u00a76Smelt \u00a7c{0} +recipeGrid=\u00a7{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X +recipeGridItem=\ \u00a7{0}X \u00a76is \u00a7c{1} +recipeMore=\u00a76Type /{0} \u00a7c{1}\u00a76 <number> to see other recipes for \u00a7c{2} +recipeWhere=\u00a76Where: {0} +recipeShapeless=\u00a76Combine \u00a7c{0} diff --git a/Essentials/src/messages_de.properties b/Essentials/src/messages_de.properties index 4db624c6a..2d2284542 100644 --- a/Essentials/src/messages_de.properties +++ b/Essentials/src/messages_de.properties @@ -466,3 +466,15 @@ teleportationEnabledFor=\u00a76Teleportation enabled for {0} teleportationDisabledFor=\u00a76Teleportation disabled for {0} kitOnce=\u00a74You can't use that kit again. fullStack=\u00a74You already have a full stack +oversizedTempban=\u00a74You may not ban a player for this period of time. +recipeNone=No recipes exist for {0} +invalidNumber=Invalid Number +recipeBadIndex=There is no recipe by that number +recipeNothing=nothing +recipe=\u00a76Recipe for \u00a7c{0}\u00a76 ({1} of {2}) +recipeFurnace=\u00a76Smelt \u00a7c{0} +recipeGrid=\u00a7{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X +recipeGridItem=\ \u00a7{0}X \u00a76is \u00a7c{1} +recipeMore=\u00a76Type /{0} \u00a7c{1}\u00a76 <number> to see other recipes for \u00a7c{2} +recipeWhere=\u00a76Where: {0} +recipeShapeless=\u00a76Combine \u00a7c{0} diff --git a/Essentials/src/messages_en.properties b/Essentials/src/messages_en.properties index 8a17513cf..cec54fb85 100644 --- a/Essentials/src/messages_en.properties +++ b/Essentials/src/messages_en.properties @@ -466,3 +466,15 @@ teleportationEnabledFor=\u00a76Teleportation enabled for {0} teleportationDisabledFor=\u00a76Teleportation disabled for {0} kitOnce=\u00a74You can't use that kit again. fullStack=\u00a74You already have a full stack +oversizedTempban=\u00a74You may not ban a player for this period of time. +recipeNone=No recipes exist for {0} +invalidNumber=Invalid Number +recipeBadIndex=There is no recipe by that number +recipeNothing=nothing +recipe=\u00a76Recipe for \u00a7c{0}\u00a76 ({1} of {2}) +recipeFurnace=\u00a76Smelt \u00a7c{0} +recipeGrid=\u00a7{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X +recipeGridItem=\ \u00a7{0}X \u00a76is \u00a7c{1} +recipeMore=\u00a76Type /{0} \u00a7c{1}\u00a76 <number> to see other recipes for \u00a7c{2} +recipeWhere=\u00a76Where: {0} +recipeShapeless=\u00a76Combine \u00a7c{0} diff --git a/Essentials/src/messages_es.properties b/Essentials/src/messages_es.properties index 8d0ad7892..7915968fb 100644 --- a/Essentials/src/messages_es.properties +++ b/Essentials/src/messages_es.properties @@ -466,3 +466,15 @@ teleportationEnabledFor=\u00a76Teleportation enabled for {0} teleportationDisabledFor=\u00a76Teleportation disabled for {0} kitOnce=\u00a74You can't use that kit again. fullStack=\u00a74You already have a full stack +oversizedTempban=\u00a74You may not ban a player for this period of time. +recipeNone=No recipes exist for {0} +invalidNumber=Invalid Number +recipeBadIndex=There is no recipe by that number +recipeNothing=nothing +recipe=\u00a76Recipe for \u00a7c{0}\u00a76 ({1} of {2}) +recipeFurnace=\u00a76Smelt \u00a7c{0} +recipeGrid=\u00a7{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X +recipeGridItem=\ \u00a7{0}X \u00a76is \u00a7c{1} +recipeMore=\u00a76Type /{0} \u00a7c{1}\u00a76 <number> to see other recipes for \u00a7c{2} +recipeWhere=\u00a76Where: {0} +recipeShapeless=\u00a76Combine \u00a7c{0} diff --git a/Essentials/src/messages_fi.properties b/Essentials/src/messages_fi.properties index fef0aeb78..05da0a0d6 100644 --- a/Essentials/src/messages_fi.properties +++ b/Essentials/src/messages_fi.properties @@ -466,3 +466,15 @@ teleportationEnabledFor=\u00a76Teleportation enabled for {0} teleportationDisabledFor=\u00a76Teleportation disabled for {0} kitOnce=\u00a74You can't use that kit again. fullStack=\u00a74You already have a full stack +oversizedTempban=\u00a74You may not ban a player for this period of time. +recipeNone=No recipes exist for {0} +invalidNumber=Invalid Number +recipeBadIndex=There is no recipe by that number +recipeNothing=nothing +recipe=\u00a76Recipe for \u00a7c{0}\u00a76 ({1} of {2}) +recipeFurnace=\u00a76Smelt \u00a7c{0} +recipeGrid=\u00a7{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X +recipeGridItem=\ \u00a7{0}X \u00a76is \u00a7c{1} +recipeMore=\u00a76Type /{0} \u00a7c{1}\u00a76 <number> to see other recipes for \u00a7c{2} +recipeWhere=\u00a76Where: {0} +recipeShapeless=\u00a76Combine \u00a7c{0} diff --git a/Essentials/src/messages_fr.properties b/Essentials/src/messages_fr.properties index e5cfd4975..82566c31e 100644 --- a/Essentials/src/messages_fr.properties +++ b/Essentials/src/messages_fr.properties @@ -466,3 +466,15 @@ teleportationEnabledFor=\u00a76Teleportation enabled for {0} teleportationDisabledFor=\u00a76Teleportation disabled for {0} kitOnce=\u00a74You can't use that kit again. fullStack=\u00a74You already have a full stack +oversizedTempban=\u00a74You may not ban a player for this period of time. +recipeNone=No recipes exist for {0} +invalidNumber=Invalid Number +recipeBadIndex=There is no recipe by that number +recipeNothing=nothing +recipe=\u00a76Recipe for \u00a7c{0}\u00a76 ({1} of {2}) +recipeFurnace=\u00a76Smelt \u00a7c{0} +recipeGrid=\u00a7{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X +recipeGridItem=\ \u00a7{0}X \u00a76is \u00a7c{1} +recipeMore=\u00a76Type /{0} \u00a7c{1}\u00a76 <number> to see other recipes for \u00a7c{2} +recipeWhere=\u00a76Where: {0} +recipeShapeless=\u00a76Combine \u00a7c{0} diff --git a/Essentials/src/messages_it.properties b/Essentials/src/messages_it.properties index f24899599..c8bcdd711 100644 --- a/Essentials/src/messages_it.properties +++ b/Essentials/src/messages_it.properties @@ -466,3 +466,15 @@ teleportationEnabledFor=\u00a76Teleportation enabled for {0} teleportationDisabledFor=\u00a76Teleportation disabled for {0} kitOnce=\u00a74You can't use that kit again. fullStack=\u00a74You already have a full stack +oversizedTempban=\u00a74You may not ban a player for this period of time. +recipeNone=No recipes exist for {0} +invalidNumber=Invalid Number +recipeBadIndex=There is no recipe by that number +recipeNothing=nothing +recipe=\u00a76Recipe for \u00a7c{0}\u00a76 ({1} of {2}) +recipeFurnace=\u00a76Smelt \u00a7c{0} +recipeGrid=\u00a7{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X +recipeGridItem=\ \u00a7{0}X \u00a76is \u00a7c{1} +recipeMore=\u00a76Type /{0} \u00a7c{1}\u00a76 <number> to see other recipes for \u00a7c{2} +recipeWhere=\u00a76Where: {0} +recipeShapeless=\u00a76Combine \u00a7c{0} diff --git a/Essentials/src/messages_nl.properties b/Essentials/src/messages_nl.properties index 0c4fd2cd0..07c85443e 100644 --- a/Essentials/src/messages_nl.properties +++ b/Essentials/src/messages_nl.properties @@ -466,3 +466,15 @@ teleportationEnabledFor=\u00a76Teleportation enabled for {0} teleportationDisabledFor=\u00a76Teleportation disabled for {0} kitOnce=\u00a74You can't use that kit again. fullStack=\u00a74You already have a full stack +oversizedTempban=\u00a74You may not ban a player for this period of time. +recipeNone=No recipes exist for {0} +invalidNumber=Invalid Number +recipeBadIndex=There is no recipe by that number +recipeNothing=nothing +recipe=\u00a76Recipe for \u00a7c{0}\u00a76 ({1} of {2}) +recipeFurnace=\u00a76Smelt \u00a7c{0} +recipeGrid=\u00a7{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X +recipeGridItem=\ \u00a7{0}X \u00a76is \u00a7c{1} +recipeMore=\u00a76Type /{0} \u00a7c{1}\u00a76 <number> to see other recipes for \u00a7c{2} +recipeWhere=\u00a76Where: {0} +recipeShapeless=\u00a76Combine \u00a7c{0} diff --git a/Essentials/src/messages_pl.properties b/Essentials/src/messages_pl.properties index 804784f19..4c666c1cc 100644 --- a/Essentials/src/messages_pl.properties +++ b/Essentials/src/messages_pl.properties @@ -466,3 +466,15 @@ teleportationEnabledFor=\u00a76Teleportation enabled for {0} teleportationDisabledFor=\u00a76Teleportation disabled for {0} kitOnce=\u00a74You can't use that kit again. fullStack=\u00a74You already have a full stack +oversizedTempban=\u00a74You may not ban a player for this period of time. +recipeNone=No recipes exist for {0} +invalidNumber=Invalid Number +recipeBadIndex=There is no recipe by that number +recipeNothing=nothing +recipe=\u00a76Recipe for \u00a7c{0}\u00a76 ({1} of {2}) +recipeFurnace=\u00a76Smelt \u00a7c{0} +recipeGrid=\u00a7{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X +recipeGridItem=\ \u00a7{0}X \u00a76is \u00a7c{1} +recipeMore=\u00a76Type /{0} \u00a7c{1}\u00a76 <number> to see other recipes for \u00a7c{2} +recipeWhere=\u00a76Where: {0} +recipeShapeless=\u00a76Combine \u00a7c{0} diff --git a/Essentials/src/messages_pt.properties b/Essentials/src/messages_pt.properties index 4c039bc1c..8db1a6bc4 100644 --- a/Essentials/src/messages_pt.properties +++ b/Essentials/src/messages_pt.properties @@ -466,3 +466,15 @@ teleportationEnabledFor=\u00a76Teleportation enabled for {0} teleportationDisabledFor=\u00a76Teleportation disabled for {0} kitOnce=\u00a74You can't use that kit again. fullStack=\u00a74You already have a full stack +oversizedTempban=\u00a74You may not ban a player for this period of time. +recipeNone=No recipes exist for {0} +invalidNumber=Invalid Number +recipeBadIndex=There is no recipe by that number +recipeNothing=nothing +recipe=\u00a76Recipe for \u00a7c{0}\u00a76 ({1} of {2}) +recipeFurnace=\u00a76Smelt \u00a7c{0} +recipeGrid=\u00a7{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X +recipeGridItem=\ \u00a7{0}X \u00a76is \u00a7c{1} +recipeMore=\u00a76Type /{0} \u00a7c{1}\u00a76 <number> to see other recipes for \u00a7c{2} +recipeWhere=\u00a76Where: {0} +recipeShapeless=\u00a76Combine \u00a7c{0} diff --git a/Essentials/src/messages_se.properties b/Essentials/src/messages_se.properties index b6017786b..fde632b89 100644 --- a/Essentials/src/messages_se.properties +++ b/Essentials/src/messages_se.properties @@ -466,3 +466,15 @@ teleportationEnabledFor=\u00a76Teleportation enabled for {0} teleportationDisabledFor=\u00a76Teleportation disabled for {0} kitOnce=\u00a74You can't use that kit again. fullStack=\u00a74You already have a full stack +oversizedTempban=\u00a74You may not ban a player for this period of time. +recipeNone=No recipes exist for {0} +invalidNumber=Invalid Number +recipeBadIndex=There is no recipe by that number +recipeNothing=nothing +recipe=\u00a76Recipe for \u00a7c{0}\u00a76 ({1} of {2}) +recipeFurnace=\u00a76Smelt \u00a7c{0} +recipeGrid=\u00a7{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X +recipeGridItem=\ \u00a7{0}X \u00a76is \u00a7c{1} +recipeMore=\u00a76Type /{0} \u00a7c{1}\u00a76 <number> to see other recipes for \u00a7c{2} +recipeWhere=\u00a76Where: {0} +recipeShapeless=\u00a76Combine \u00a7c{0} diff --git a/Essentials/src/plugin.yml b/Essentials/src/plugin.yml index ab9b2438e..bd6aea253 100644 --- a/Essentials/src/plugin.yml +++ b/Essentials/src/plugin.yml @@ -278,6 +278,10 @@ commands: description: Displays the username of a user based on nick. usage: /<command> <nickname> aliases: [erealname] + recipe: + description: Displays how to craft items. + usage: /<command> <item> [number] + aliases: [erecipe] remove: description: Removes entities in your world usage: /<command> <drops|arrows|boats|minecarts|xp|paintings> [radius] diff --git a/EssentialsGroupManager/nbproject/project.properties b/EssentialsGroupManager/nbproject/project.properties index 26d72fd8a..bc26273ba 100644 --- a/EssentialsGroupManager/nbproject/project.properties +++ b/EssentialsGroupManager/nbproject/project.properties @@ -40,13 +40,13 @@ dist.jar=${dist.dir}/EssentialsGroupManager.jar dist.javadoc.dir=${dist.dir}/javadoc endorsed.classpath= excludes= -file.reference.craftbukkit.jar=../lib/craftbukkit.jar +file.reference.bukkit.jar=../lib/bukkit.jar includes=** jar.archive.disabled=${jnlp.enabled} jar.compress=true jar.index=${jnlp.enabled} javac.classpath=\ - ${file.reference.craftbukkit.jar} + ${file.reference.bukkit.jar} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false |