--- miscJava/bukkit-minecraft-plugins/CreativeWorld/src/dk/thoerup/bukkit/creativeworld/WorldChanged.java 2011/12/10 19:33:19 1657 +++ miscJava/bukkit-minecraft-plugins/CreativeWorld/src/main/java/dk/thoerup/bukkit/creativeworld/WorldChanged.java 2013/04/04 12:05:06 1966 @@ -2,18 +2,39 @@ import org.bukkit.*; import org.bukkit.entity.*; +import org.bukkit.event.*; import org.bukkit.event.player.*; import org.bukkit.configuration.*; import org.bukkit.inventory.*; +import org.bukkit.enchantments.*; +import org.bukkit.material.*; -public class WorldChanged extends PlayerListener { +import java.util.*; + +public class WorldChanged implements Listener { + final static String STACK_TYPE = ".type"; + final static String STACK_AMOUNT = ".amount"; + final static String STACK_DAMAGE = ".damage"; + final static String STACK_DATA = ".data"; + final static String STACK_ENCHANTMENT = ".enchantment"; + + final static String INVENTORY_CREATIVE = ".inventory.creative."; + final static String INVENTORY_CREATIVE_ARMOR = ".inventory.creative.armor."; CreativeMain plugin; public WorldChanged(CreativeMain plugin) { this.plugin = plugin; } - @Override + + @EventHandler + public void onPlayerExpChange(PlayerExpChangeEvent event) { + if (event.getPlayer().getWorld().getName().equalsIgnoreCase("creative")) { + event.setAmount(0); //users don't acummulate xp points in creative mode + } + } + + @EventHandler public void onPlayerChangedWorld(PlayerChangedWorldEvent event) { @@ -30,14 +51,14 @@ PlayerInventory inv = player.getInventory(); for (int i=0; i map = stack.getEnchantments(); + for(Enchantment enc : map.keySet() ) { + if (sb.length() > 0) + sb.append(";"); + + Integer level = map.get(enc); + sb.append( enc.getName() ).append("=").append(level); + } + + return sb.toString(); + } + + public Map parseEnchantmentString(String input) { + Map map = new HashMap(); + + if (input.length() == 0) + return map; + + String parts[] = input.split(";"); + for(String part : parts) { + String keyval[] = part.split("="); + + Enchantment enc = Enchantment.getByName( keyval[0] ); + int level = Integer.parseInt( keyval[1]); + map.put(enc, level); + } - return new ItemStack(type,amount,damage,data); + return map; } }