/[projects]/miscJava/bukkit-minecraft-plugins/CreativeWorld/src/main/java/dk/thoerup/bukkit/creativeworld/WorldChanged.java
ViewVC logotype

Diff of /miscJava/bukkit-minecraft-plugins/CreativeWorld/src/main/java/dk/thoerup/bukkit/creativeworld/WorldChanged.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

miscJava/bukkit-minecraft-plugins/CreativeWorld/src/dk/thoerup/bukkit/creativeworld/WorldChanged.java revision 1663 by torben, Tue Dec 13 18:24:47 2011 UTC miscJava/bukkit-minecraft-plugins/CreativeWorld/src/main/java/dk/thoerup/bukkit/creativeworld/WorldChanged.java revision 3238 by torben, Wed Jul 18 07:41:35 2018 UTC
# Line 2  package dk.thoerup.bukkit.creativeworld; Line 2  package dk.thoerup.bukkit.creativeworld;
2    
3  import org.bukkit.*;  import org.bukkit.*;
4  import org.bukkit.entity.*;  import org.bukkit.entity.*;
5    import org.bukkit.event.*;
6  import org.bukkit.event.player.*;  import org.bukkit.event.player.*;
7  import org.bukkit.configuration.*;  import org.bukkit.configuration.*;
8  import org.bukkit.inventory.*;  import org.bukkit.inventory.*;
9    import org.bukkit.enchantments.*;
10    import org.bukkit.material.*;
11    
12  public class WorldChanged extends PlayerListener {  import java.util.*;
13    
14    public class WorldChanged implements Listener {
15          final static String STACK_TYPE = ".type";          final static String STACK_TYPE = ".type";
16          final static String STACK_AMOUNT = ".amount";          final static String STACK_AMOUNT = ".amount";
17          final static String STACK_DAMAGE = ".damage";          final static String STACK_DAMAGE = ".damage";
18          final static String STACK_DATA = ".data";          final static String STACK_DATA = ".data";
19            final static String STACK_ENCHANTMENT = ".enchantment";
20    
21          final static String INVENTORY_CREATIVE = ".inventory.creative.";          final static String INVENTORY_CREATIVE = ".inventory.creative.";
22          final static String INVENTORY_CREATIVE_ARMOR = ".inventory.creative.armor.";          final static String INVENTORY_CREATIVE_ARMOR = ".inventory.creative.armor.";
# Line 20  public class WorldChanged extends Player Line 26  public class WorldChanged extends Player
26                  this.plugin = plugin;                  this.plugin = plugin;
27          }          }
28    
29          @Override  
30            @EventHandler
31            public void onPlayerExpChange(PlayerExpChangeEvent event) {
32                    if (event.getPlayer().getWorld().getName().equalsIgnoreCase("creative")) {
33                            event.setAmount(0); //users don't acummulate xp points in creative mode
34                    }      
35            }
36    
37            @EventHandler
38          public void onPlayerChangedWorld(PlayerChangedWorldEvent event) {          public void onPlayerChangedWorld(PlayerChangedWorldEvent event) {
39    
40    
# Line 68  public class WorldChanged extends Player Line 82  public class WorldChanged extends Player
82                          for (int i=0; i<inv.getSize(); i++) {                          for (int i=0; i<inv.getSize(); i++) {
83                                  String node =  player.getName() + INVENTORY_CREATIVE + i;;                                  String node =  player.getName() + INVENTORY_CREATIVE + i;;
84                                  //items[i] = config.getItemStack(node);                                  //items[i] = config.getItemStack(node);
85                                  items[i] = getItemStack(config, node);                                  items[i] = getItemStack(player, config, node);
86                          }                          }
87    
88    
# Line 77  public class WorldChanged extends Player Line 91  public class WorldChanged extends Player
91                          for (int i=0; i<armor.length; i++) {                          for (int i=0; i<armor.length; i++) {
92                                  String node =  player.getName() + INVENTORY_CREATIVE_ARMOR + i;                                  String node =  player.getName() + INVENTORY_CREATIVE_ARMOR + i;
93                                  //armor[i] = config.getItemStack(node);                                  //armor[i] = config.getItemStack(node);
94                                  armor[i] = getItemStack(config, node);                                  armor[i] = getItemStack(player, config, node);
95                          }                          }
96    
97                          inv.setContents( items );                          inv.setContents( items );
# Line 87  public class WorldChanged extends Player Line 101  public class WorldChanged extends Player
101    
102    
103          public void saveItemStack(Configuration config, String node, ItemStack stack) {          public void saveItemStack(Configuration config, String node, ItemStack stack) {
104                  config.set(node + STACK_TYPE, stack.getTypeId() );                  String type = "";
105                  config.set(node + STACK_AMOUNT, stack.getAmount() );                  int amount = 0;
106                  config.set(node + STACK_DAMAGE, (int)stack.getDurability() );                  int damage = 0;
107                  config.set(node + STACK_DATA, (int)stack.getData().getData() );                  int data = 0;
108                    String enchantment = "";
109    
110                    if (stack != null) {
111                            type = stack.getType().name();
112                            amount = stack.getAmount();
113                            damage = stack.getDurability();
114                            data = stack.getData().getData();
115                            enchantment = getEnchantmentString(stack);
116                    }
117    
118                    config.set(node + STACK_TYPE, type );
119                    config.set(node + STACK_AMOUNT, amount );
120                    config.set(node + STACK_DAMAGE, damage );
121                    config.set(node + STACK_DATA, data );
122                    config.set(node + STACK_ENCHANTMENT, enchantment );
123          }          }
124    
125          public ItemStack getItemStack(Configuration config, String node) {          public ItemStack getItemStack(Player player, Configuration config, String node) {
126                  int type = config.getInt( node + STACK_TYPE);                  String typeStr = config.getString( node + STACK_TYPE);
127                  int amount = config.getInt( node + STACK_AMOUNT);                  int amount = config.getInt( node + STACK_AMOUNT);
128                  short damage = (short) config.getInt(node + STACK_DAMAGE);                  short damage = (short) config.getInt(node + STACK_DAMAGE);
129                  byte data = (byte) config.getInt(node + STACK_DATA);                  byte data = (byte) config.getInt(node + STACK_DATA);
130                    String enc = config.getString(node + STACK_ENCHANTMENT );
131    
132                    Material mat = Material.valueOf(typeStr);
133    
134                  ItemStack stack = new ItemStack(type,amount,damage,data);                  ItemStack stack = new ItemStack(mat,amount,damage);
135                    MaterialData matData = new MaterialData(mat,data); //TODO: fix this
136                    stack.setData(matData);
137                    
138                  stack.setDurability( damage ); //ItemStack constructor with Data value overrides durability                  stack.setDurability( damage ); //ItemStack constructor with Data value overrides durability
139                    try {
140                            stack.addEnchantments( parseEnchantmentString(enc) );
141                    } catch (IllegalArgumentException e) {
142                            plugin.getLogger().info( "EXCEPTION Error applying enchantment" + e.getMessage() );
143                            plugin.getLogger().info( "EXCEPTION Player " + player.getName() );
144                            plugin.getLogger().info( "EXCEPTION Type=" + typeStr + "  enhancement=" + enc);
145                    }
146                  return stack;                  return stack;
147          }          }
148    
149            public String getEnchantmentString(ItemStack stack) {
150                    StringBuilder sb = new StringBuilder();
151    
152                    Map<Enchantment,Integer> map = stack.getEnchantments();
153                    for(Enchantment enc : map.keySet() ) {
154                            if (sb.length() > 0)
155                                    sb.append(";");
156    
157                            Integer level = map.get(enc);
158                            sb.append( enc.getName() ).append("=").append(level);
159                    }
160    
161                    return sb.toString();  
162            }
163    
164            public Map<Enchantment,Integer> parseEnchantmentString(String input) {
165                    Map<Enchantment,Integer> map = new HashMap<Enchantment,Integer>();
166    
167                    if (input.length() == 0)
168                            return map;
169    
170                    String parts[] = input.split(";");
171                    for(String part : parts) {
172                            String keyval[] = part.split("=");
173    
174                            Enchantment enc = Enchantment.getByName( keyval[0] );
175                            int level = Integer.parseInt( keyval[1]);
176                            map.put(enc, level);
177                    }
178    
179                    return map;
180            }
181                    
182  }  }

Legend:
Removed from v.1663  
changed lines
  Added in v.3238

  ViewVC Help
Powered by ViewVC 1.1.20