diff --git a/pom.xml b/pom.xml index dcde083..77f85b4 100644 --- a/pom.xml +++ b/pom.xml @@ -73,6 +73,7 @@ de.jaschastarke plib 0.1-SNAPSHOT + @@ -100,10 +101,13 @@ org.apache.maven.plugins maven-compiler-plugin - 2.0.2 + 2.3.2 1.6 1.6 + + de.jaschastarke.bukkit.maven.AnnotationProcessor + @@ -126,6 +130,9 @@ http://dev.bukkit.org/server-mods/limited-creative/ + + de.jaschastarke.minecraft.limitedcreative.Perms.Root + @@ -150,7 +157,7 @@ de.jaschastarke:plib - de/jaschastarke/bukkit/lib/maven/** + de/jaschastarke/bukkit/maven/** diff --git a/src/de/jaschastarke/minecraft/limitedcreative/Commands.java b/src/de/jaschastarke/minecraft/limitedcreative/Commands.java index b2058fb..1ffc26d 100644 --- a/src/de/jaschastarke/minecraft/limitedcreative/Commands.java +++ b/src/de/jaschastarke/minecraft/limitedcreative/Commands.java @@ -17,7 +17,7 @@ */ package de.jaschastarke.minecraft.limitedcreative; -import static de.jaschastarke.minecraft.utils.Locale.L; +import static de.jaschastarke.minecraft.limitedcreative.Core.L; import static de.jaschastarke.bukkit.lib.permissions.PermissionManager.hasPermission; import java.util.Arrays; @@ -30,7 +30,7 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import de.jaschastarke.minecraft.utils.Util; +import de.jaschastarke.utils.StringUtil; public class Commands { private static Core plugin; @@ -48,7 +48,7 @@ public class Commands { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - Core.debug(sender.getName() + ": /" + label + " " + Util.join(args)); + Core.debug(sender.getName() + ": /" + label + " " + StringUtil.join(args)); if (args.length > 0) { Action act = null; try { diff --git a/src/de/jaschastarke/minecraft/limitedcreative/Configuration.java b/src/de/jaschastarke/minecraft/limitedcreative/Configuration.java index 92b901f..0148bfb 100644 --- a/src/de/jaschastarke/minecraft/limitedcreative/Configuration.java +++ b/src/de/jaschastarke/minecraft/limitedcreative/Configuration.java @@ -17,8 +17,8 @@ */ package de.jaschastarke.minecraft.limitedcreative; -import static de.jaschastarke.minecraft.utils.Locale.L; -import static de.jaschastarke.minecraft.utils.Util.copyFile; +import static de.jaschastarke.minecraft.limitedcreative.Core.L; +import static de.jaschastarke.utils.StringUtil.copyFile; import java.io.File; import java.util.ArrayList; diff --git a/src/de/jaschastarke/minecraft/limitedcreative/Core.java b/src/de/jaschastarke/minecraft/limitedcreative/Core.java index dbe0767..0b7132f 100644 --- a/src/de/jaschastarke/minecraft/limitedcreative/Core.java +++ b/src/de/jaschastarke/minecraft/limitedcreative/Core.java @@ -16,22 +16,18 @@ * along with this program. If not, see . */ package de.jaschastarke.minecraft.limitedcreative; -import static de.jaschastarke.minecraft.utils.Locale.L; import org.bukkit.event.HandlerList; import org.bukkit.plugin.PluginDescriptionFile; +import de.jaschastarke.bukkit.lib.locale.PluginLang; import de.jaschastarke.minecraft.integration.Communicator; -import de.jaschastarke.minecraft.lib.annotations.PermissionGroup; import de.jaschastarke.minecraft.limitedcreative.cmdblock.CommandBlocker; import de.jaschastarke.minecraft.limitedcreative.limits.LimitListener; import de.jaschastarke.minecraft.limitedcreative.listeners.MainListener; import de.jaschastarke.minecraft.limitedcreative.regions.WorldGuardIntegration; -import de.jaschastarke.minecraft.utils.Locale; import de.jaschastarke.minecraft.utils.Permissions; - -@PermissionGroup("limitedcreative") public class Core extends de.jaschastarke.bukkit.lib.Core { public Configuration config; public Permissions perm; @@ -46,9 +42,6 @@ public class Core extends de.jaschastarke.bukkit.lib.Core { plugin.getServer().getScheduler().cancelTasks(this); if (worldguard != null) worldguard.unload(); - try { - Locale.unload(); - } catch (NoClassDefFoundError e) {} // prevent unload issue plugin = null; worldguard = null; @@ -65,7 +58,7 @@ public class Core extends de.jaschastarke.bukkit.lib.Core { perm = new Permissions(this); com = new Communicator(this); - new Locale(this, config.getLocale()); + new PluginLang(this, config.getLocale()); spawnblock = new NoBlockItemSpawn(); @@ -128,6 +121,14 @@ public class Core extends de.jaschastarke.bukkit.lib.Core { public void error(String s) { getLog().severe("["+this.getDescription().getName()+"] " + s); } + /** + * Static localization-access only works for first locale instance. if used by another plugin, you need to + * access the Locale-Instance get-Method + */ + public static String L(String msg, Object... objects) { + return (plugin.getTranslation() != null) ? plugin.getTranslation().get(msg, objects) : msg; + } + public static void debug(String s) { if (isDebug()) plugin.info("DEBUG: " + s); diff --git a/src/de/jaschastarke/minecraft/limitedcreative/Inventory.java b/src/de/jaschastarke/minecraft/limitedcreative/Inventory.java index cf881f9..4bd23ba 100644 --- a/src/de/jaschastarke/minecraft/limitedcreative/Inventory.java +++ b/src/de/jaschastarke/minecraft/limitedcreative/Inventory.java @@ -17,7 +17,7 @@ */ package de.jaschastarke.minecraft.limitedcreative; -import static de.jaschastarke.minecraft.utils.Locale.L; +import static de.jaschastarke.minecraft.limitedcreative.Core.L; import org.bukkit.ChatColor; import org.bukkit.GameMode; diff --git a/src/de/jaschastarke/minecraft/limitedcreative/LCPlayer.java b/src/de/jaschastarke/minecraft/limitedcreative/LCPlayer.java index cf5270e..f807767 100644 --- a/src/de/jaschastarke/minecraft/limitedcreative/LCPlayer.java +++ b/src/de/jaschastarke/minecraft/limitedcreative/LCPlayer.java @@ -17,7 +17,7 @@ */ package de.jaschastarke.minecraft.limitedcreative; -import static de.jaschastarke.minecraft.utils.Locale.L; +import static de.jaschastarke.minecraft.limitedcreative.Core.L; import java.util.HashMap; import java.util.Iterator; diff --git a/src/de/jaschastarke/minecraft/limitedcreative/Perms.java b/src/de/jaschastarke/minecraft/limitedcreative/Perms.java index 91c1eb0..8a31b21 100644 --- a/src/de/jaschastarke/minecraft/limitedcreative/Perms.java +++ b/src/de/jaschastarke/minecraft/limitedcreative/Perms.java @@ -19,12 +19,22 @@ package de.jaschastarke.minecraft.limitedcreative; import org.bukkit.permissions.PermissionDefault; +import de.jaschastarke.minecraft.lib.annotations.PermissionDescripted; import de.jaschastarke.minecraft.lib.permissions.IAbstractPermission; import de.jaschastarke.minecraft.lib.permissions.IPermissionContainer; import de.jaschastarke.minecraft.lib.permissions.IPermission; +@PermissionDescripted(PermissionDescripted.Type.STATIC_ATTRIBUTES) public enum Perms implements IPermission { + + /** + * Test123 + */ CONFIG("config", PermissionDefault.OP), + + /** + * Test456 + */ REGIONS("regions", PermissionDefault.OP), REGIONS_BYPASS("regions_bypass", PermissionDefault.FALSE), GM("switch_gamemode", PermissionDefault.OP), diff --git a/src/de/jaschastarke/minecraft/limitedcreative/cmdblock/CommandBlocker.java b/src/de/jaschastarke/minecraft/limitedcreative/cmdblock/CommandBlocker.java index 4d6a45e..d227c2b 100644 --- a/src/de/jaschastarke/minecraft/limitedcreative/cmdblock/CommandBlocker.java +++ b/src/de/jaschastarke/minecraft/limitedcreative/cmdblock/CommandBlocker.java @@ -1,6 +1,6 @@ package de.jaschastarke.minecraft.limitedcreative.cmdblock; -import static de.jaschastarke.minecraft.utils.Locale.L; +import static de.jaschastarke.minecraft.limitedcreative.Core.L; import org.bukkit.event.EventHandler; import org.bukkit.event.player.PlayerCommandPreprocessEvent; diff --git a/src/de/jaschastarke/minecraft/limitedcreative/limits/LimitListener.java b/src/de/jaschastarke/minecraft/limitedcreative/limits/LimitListener.java index 2fa8bbe..1fe7892 100644 --- a/src/de/jaschastarke/minecraft/limitedcreative/limits/LimitListener.java +++ b/src/de/jaschastarke/minecraft/limitedcreative/limits/LimitListener.java @@ -17,7 +17,7 @@ */ package de.jaschastarke.minecraft.limitedcreative.limits; -import static de.jaschastarke.minecraft.utils.Locale.L; +import static de.jaschastarke.minecraft.limitedcreative.Core.L; import org.bukkit.GameMode; import org.bukkit.Material; diff --git a/src/de/jaschastarke/minecraft/limitedcreative/regions/RegionListener.java b/src/de/jaschastarke/minecraft/limitedcreative/regions/RegionListener.java index 1e80984..6e231b5 100644 --- a/src/de/jaschastarke/minecraft/limitedcreative/regions/RegionListener.java +++ b/src/de/jaschastarke/minecraft/limitedcreative/regions/RegionListener.java @@ -1,6 +1,6 @@ package de.jaschastarke.minecraft.limitedcreative.regions; -import static de.jaschastarke.minecraft.utils.Locale.L; +import static de.jaschastarke.minecraft.limitedcreative.Core.L; import org.bukkit.GameMode; import org.bukkit.Location; @@ -18,10 +18,10 @@ import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.ItemSpawnEvent; import org.bukkit.event.hanging.HangingBreakByEntityEvent; +import de.jaschastarke.bukkit.lib.Utils; import de.jaschastarke.minecraft.limitedcreative.Core; import de.jaschastarke.minecraft.limitedcreative.LCPlayer; import de.jaschastarke.minecraft.limitedcreative.Players; -import de.jaschastarke.minecraft.utils.Util; import de.jaschastarke.minecraft.worldguard.ApplicableRegions; import de.jaschastarke.minecraft.worldguard.CRegionManager; import de.jaschastarke.minecraft.worldguard.events.PlayerNewLocationAreaEvent; @@ -133,7 +133,7 @@ public class RegionListener implements Listener { Block dest = source.getRelative(event.getDirection(), i); Core.debug("dest "+i+": "+dest.getType()); if (regionSet(dest).getFlag(Flags.GAMEMODE) != GameMode.CREATIVE) { - plugin.getLog().warning(L("blocked.piston", source.getRelative(event.getDirection(), i - 1).getType().toString(), Util.toString(source.getLocation()))); + plugin.getLog().warning(L("blocked.piston", source.getRelative(event.getDirection(), i - 1).getType().toString(), Utils.toString(source.getLocation()))); event.setCancelled(true); break; } else if (dest.getType() == Material.AIR) { @@ -155,12 +155,12 @@ public class RegionListener implements Listener { Core.debug("dest "+dest.getType()); if (regionSet(source).getFlag(Flags.GAMEMODE) == GameMode.CREATIVE) { if (regionSet(dest).getFlag(Flags.GAMEMODE) != GameMode.CREATIVE) { - plugin.getLog().warning(L("blocked.piston", source.getType().toString(), Util.toString(source.getLocation()))); + plugin.getLog().warning(L("blocked.piston", source.getType().toString(), Utils.toString(source.getLocation()))); event.setCancelled(true); } } else if (regionSet(dest).getFlag(Flags.GAMEMODE) == GameMode.CREATIVE) { // source isn't creative - plugin.getLog().warning(L("blocked.piston_in", source.getType().toString(), Util.toString(source.getLocation()))); + plugin.getLog().warning(L("blocked.piston_in", source.getType().toString(), Utils.toString(source.getLocation()))); event.setCancelled(true); } } diff --git a/src/de/jaschastarke/minecraft/utils/Locale.java b/src/de/jaschastarke/minecraft/utils/Locale.java deleted file mode 100644 index fd01b8b..0000000 --- a/src/de/jaschastarke/minecraft/utils/Locale.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Limited Creative - (Bukkit Plugin) - * Copyright (C) 2012 jascha@ja-s.de - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.jaschastarke.minecraft.utils; - -import java.io.File; -import java.text.MessageFormat; -import java.util.List; - -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.plugin.java.JavaPlugin; - -import de.jaschastarke.minecraft.limitedcreative.Core; - -public class Locale { - protected YamlConfiguration lang; - private YamlConfiguration fallback_lang; - private static Locale inst = null; - private JavaPlugin plugin; - private final static String DEFAULT_LANG = "en_US"; - - public Locale(JavaPlugin plugin) { - this(plugin, null); - } - - public Locale(JavaPlugin plugin, String lang) { - if (inst == null) - inst = this; - this.plugin = plugin; - if (lang == null) - lang = java.util.Locale.getDefault().toString(); - - String fn = getFilename(lang); - - Core.debug("Using Locale: " + lang); - File localefile = new File(plugin.getDataFolder(), fn); - if (localefile.exists()) - this.lang = YamlConfiguration.loadConfiguration(localefile); - else if (plugin.getResource(fn) != null) - this.lang = YamlConfiguration.loadConfiguration(plugin.getResource(fn)); - } - private String getFilename(String locale) { - return "lang/"+locale+".yml"; - } - private YamlConfiguration getLang(String msg) { - if (lang != null && lang.contains(msg)) { - return lang; - } else { - if (fallback_lang == null) - fallback_lang = YamlConfiguration.loadConfiguration(plugin.getResource(getFilename(DEFAULT_LANG))); - return fallback_lang; - } - } - public String get(String msg, Object... objects) { - YamlConfiguration lang = getLang(msg); - if (lang.contains(msg)) { - if (lang.isList(msg)) { - List list = lang.getStringList(msg); - String[] lines = new String[list.size()]; - list.toArray(lines); - msg = Util.join(lines, "\n"); - } else { - msg = lang.getString(msg); - } - } - if (objects.length > 0) - msg = MessageFormat.format(msg, objects); - return msg.replaceAll("&([0-9a-f])", "\u00A7$1"); - } - - /** - * Static localization-access only works for first locale instance. if used by another plugin, you need to - * access the Locale-Instance get-Method - */ - public static String L(String msg, Object... objects) { - return (inst != null) ? inst.get(msg, objects) : msg; - } - public static void unload() { - inst = null; - } -} diff --git a/src/de/jaschastarke/minecraft/utils/Util.java b/src/de/jaschastarke/minecraft/utils/Util.java deleted file mode 100644 index cda6270..0000000 --- a/src/de/jaschastarke/minecraft/utils/Util.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Limited Creative - (Bukkit Plugin) - * Copyright (C) 2012 jascha@ja-s.de - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.jaschastarke.minecraft.utils; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -import org.bukkit.Location; - -final public class Util { - public static int versionCompare(String vers1, String vers2) { - String[] v1 = vers1.split("\\."); - String[] v2 = vers2.split("\\."); - int i = 0; - while (i < v1.length && i < v2.length && v1[i].equals(v2[i])) { - i++; - } - if (i < v1.length && i < v2.length) { - int diff = new Integer(v1[i]).compareTo(new Integer(v2[i])); - return diff < 0 ? -1 : (diff == 0 ? 0 : 1); - } - return v1.length < v2.length ? -1 : (v1.length == v2.length ? 0 : 1); - } - - public static void copyFile(InputStream is, File to) { - try { - if (to.getParentFile() != null && !to.getParentFile().exists()) - to.getParentFile().mkdirs(); - OutputStream os; - os = new FileOutputStream(to); - byte[] buffer = new byte[512]; - int length; - while ((length = is.read(buffer)) > 0) { - os.write(buffer, 0, length); - } - os.close(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - public static void copyFile(File from, File to) { - try { - copyFile(new FileInputStream(from), to); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } - public static String join(String[] list, String sep, int from, int range) { - StringBuilder result = new StringBuilder(); - for (int i = from; i >= 0 && i < from + range && i < list.length; i++) { - if (result.length() > 0) - result.append(sep); - result.append(list[i]); - } - return result.toString(); - } - public static String join(String[] list, int from, int range) { - return join(list, " ", from, range); - } - public static String join(String[] list, int from) { - return join(list, " ", from, list.length - from); - } - public static String join(String[] list) { - return join(list, " ", 0, list.length); - } - public static String join(String[] list, String sep) { - return join(list, sep, 0, list.length); - } - public static String toString(Location loc) { - return "{X: "+loc.getBlockX()+", Y: "+loc.getBlockY()+", Z: "+loc.getBlockZ()+"}"; - } -} diff --git a/src/de/jaschastarke/minecraft/worldguard/CCommand.java b/src/de/jaschastarke/minecraft/worldguard/CCommand.java index e14ac81..38f90d1 100644 --- a/src/de/jaschastarke/minecraft/worldguard/CCommand.java +++ b/src/de/jaschastarke/minecraft/worldguard/CCommand.java @@ -17,7 +17,7 @@ */ package de.jaschastarke.minecraft.worldguard; -import static de.jaschastarke.minecraft.utils.Locale.L; +import static de.jaschastarke.minecraft.limitedcreative.Core.L; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -37,7 +37,7 @@ import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.regions.GlobalProtectedRegion; import com.sk89q.worldguard.protection.regions.ProtectedRegion; -import de.jaschastarke.minecraft.utils.Util; +import de.jaschastarke.utils.StringUtil; public class CCommand implements CommandExecutor { public enum Action { @@ -168,10 +168,10 @@ public class CCommand implements CommandExecutor { if (args.length > 3 && args[3].equalsIgnoreCase("-g")) { flag = flag.getRegionGroupFlag(); if (args.length > 4) - value = Util.join(args, 4); + value = StringUtil.join(args, 4); } else { if (args.length > 3) - value = Util.join(args, 3); + value = StringUtil.join(args, 3); } if (flag == null) { diff --git a/src/de/jaschastarke/minecraft/worldguard/CRegionManager.java b/src/de/jaschastarke/minecraft/worldguard/CRegionManager.java index 14a7836..1d6457d 100644 --- a/src/de/jaschastarke/minecraft/worldguard/CRegionManager.java +++ b/src/de/jaschastarke/minecraft/worldguard/CRegionManager.java @@ -39,7 +39,7 @@ import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import de.jaschastarke.minecraft.limitedcreative.Core; -import de.jaschastarke.minecraft.utils.Util; +import de.jaschastarke.utils.StringUtil; public class CRegionManager { protected YamlConfiguration c; @@ -160,7 +160,7 @@ public class CRegionManager { if (ids.length > 1) { Arrays.sort(ids); } - hash.append(Util.join(ids, ",")); + hash.append(StringUtil.join(ids, ",")); } return hash.toString(); }