/[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 1657 by torben, Sat Dec 10 19:33:19 2011 UTC miscJava/bukkit-minecraft-plugins/CreativeWorld/src/main/java/dk/thoerup/bukkit/creativeworld/WorldChanged.java revision 1875 by torben, Thu Nov 29 20:18:25 2012 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    
11  public class WorldChanged extends PlayerListener {  import java.util.*;
12    
13    public class WorldChanged implements Listener {
14            final static String STACK_TYPE = ".type";
15            final static String STACK_AMOUNT = ".amount";
16            final static String STACK_DAMAGE = ".damage";
17            final static String STACK_DATA = ".data";
18            final static String STACK_ENCHANTMENT = ".enchantment";
19    
20            final static String INVENTORY_CREATIVE = ".inventory.creative.";
21            final static String INVENTORY_CREATIVE_ARMOR = ".inventory.creative.armor.";
22    
23          CreativeMain plugin;          CreativeMain plugin;
24          public WorldChanged(CreativeMain plugin) {          public WorldChanged(CreativeMain plugin) {
25                  this.plugin = plugin;                  this.plugin = plugin;
26          }          }
27    
28          @Override  
29            @EventHandler
30            public void onPlayerExpChange(PlayerExpChangeEvent event) {
31                    if (event.getPlayer().getWorld().getName().equalsIgnoreCase("creative")) {
32                            event.setAmount(0); //users don't acummulate xp points in creative mode
33                    }      
34            }
35    
36            @EventHandler
37          public void onPlayerChangedWorld(PlayerChangedWorldEvent event) {          public void onPlayerChangedWorld(PlayerChangedWorldEvent event) {
38    
39    
# Line 30  public class WorldChanged extends Player Line 50  public class WorldChanged extends Player
50                          PlayerInventory inv = player.getInventory();                          PlayerInventory inv = player.getInventory();
51    
52                          for (int i=0; i<inv.getSize(); i++) {                          for (int i=0; i<inv.getSize(); i++) {
53                                  String node =  player.getName() + ".inventory.creative." + i;;                                  String node =  player.getName() + INVENTORY_CREATIVE + i;;
54                                  //config.set( node, inv.getItem(i) );                                  //config.set( node, inv.getItem(i) );
55                                  saveItemStack(config, node, inv.getItem(i) );                                  saveItemStack(config, node, inv.getItem(i) );
56                          }                          }
57    
58                          ItemStack armor[] = inv.getArmorContents();                          ItemStack armor[] = inv.getArmorContents();
59                          for (int i=0; i<armor.length; i++) {                          for (int i=0; i<armor.length; i++) {
60                                  String node =  player.getName() + ".inventory.creative.armor." + i;;                                  String node =  player.getName() + INVENTORY_CREATIVE_ARMOR + i;;
61                                  //config.set( node, armor[i] );                                  //config.set( node, armor[i] );
62                                  saveItemStack(config, node, armor[i] );                                  saveItemStack(config, node, armor[i] );
63                          }                          }
# Line 59  public class WorldChanged extends Player Line 79  public class WorldChanged extends Player
79                          ItemStack items[] = new ItemStack[ inv.getSize() ];                          ItemStack items[] = new ItemStack[ inv.getSize() ];
80    
81                          for (int i=0; i<inv.getSize(); i++) {                          for (int i=0; i<inv.getSize(); i++) {
82                                  String node =  player.getName() + ".inventory.creative." + i;;                                  String node =  player.getName() + INVENTORY_CREATIVE + i;;
83                                  //items[i] = config.getItemStack(node);                                  //items[i] = config.getItemStack(node);
84                                  items[i] = getItemStack(config, node);                                  items[i] = getItemStack(config, node);
85                          }                          }
# Line 68  public class WorldChanged extends Player Line 88  public class WorldChanged extends Player
88    
89                          ItemStack armor[] = new ItemStack[  inv.getArmorContents().length];                          ItemStack armor[] = new ItemStack[  inv.getArmorContents().length];
90                          for (int i=0; i<armor.length; i++) {                          for (int i=0; i<armor.length; i++) {
91                                  String node =  player.getName() + ".inventory.creative.armor." + i;                                  String node =  player.getName() + INVENTORY_CREATIVE_ARMOR + i;
92                                  //armor[i] = config.getItemStack(node);                                  //armor[i] = config.getItemStack(node);
93                                  armor[i] = getItemStack(config, node);                                  armor[i] = getItemStack(config, node);
94                          }                          }
# Line 80  public class WorldChanged extends Player Line 100  public class WorldChanged extends Player
100    
101    
102          public void saveItemStack(Configuration config, String node, ItemStack stack) {          public void saveItemStack(Configuration config, String node, ItemStack stack) {
103                  config.set(node + ".type", stack.getTypeId() );                  int type = 0;
104                  config.set(node + ".amount", stack.getAmount() );                  int amount = 0;
105                  config.set(node + ".damage", (int)stack.getDurability() );                  int damage = 0;
106                  config.set(node + ".data", (int)stack.getData().getData() );                  int data = 0;
107                    String enchantment = "";
108    
109                    if (stack != null) {
110                            type = stack.getTypeId();
111                            amount = stack.getAmount();
112                            damage = stack.getDurability();
113                            data = stack.getData().getData();
114                            enchantment = getEnchantmentString(stack);
115                    }
116    
117                    config.set(node + STACK_TYPE, type );
118                    config.set(node + STACK_AMOUNT, amount );
119                    config.set(node + STACK_DAMAGE, damage );
120                    config.set(node + STACK_DATA, data );
121                    config.set(node + STACK_ENCHANTMENT, enchantment );
122          }          }
123    
124          public ItemStack getItemStack(Configuration config, String node) {          public ItemStack getItemStack(Configuration config, String node) {
125                  int type = config.getInt( node + ".type");                  int type = config.getInt( node + STACK_TYPE);
126                  int amount = config.getInt( node + ".amount");                  int amount = config.getInt( node + STACK_AMOUNT);
127                  short damage = (short) config.getInt(node + ".damage");                  short damage = (short) config.getInt(node + STACK_DAMAGE);
128                  byte data = (byte) config.getInt(node + ".data");                  byte data = (byte) config.getInt(node + STACK_DATA);
129                    String enc = config.getString(node + STACK_ENCHANTMENT );
130    
131                    ItemStack stack = new ItemStack(type,amount,damage,data);
132                    stack.setDurability( damage ); //ItemStack constructor with Data value overrides durability
133                    stack.addEnchantments( parseEnchantmentString(enc) );
134                    return stack;
135            }
136    
137            public String getEnchantmentString(ItemStack stack) {
138                    StringBuilder sb = new StringBuilder();
139    
140                    Map<Enchantment,Integer> map = stack.getEnchantments();
141                    for(Enchantment enc : map.keySet() ) {
142                            if (sb.length() > 0)
143                                    sb.append(";");
144    
145                            Integer level = map.get(enc);
146                            sb.append( enc.getName() ).append("=").append(level);
147                    }
148    
149                    return sb.toString();  
150            }
151    
152            public Map<Enchantment,Integer> parseEnchantmentString(String input) {
153                    Map<Enchantment,Integer> map = new HashMap<Enchantment,Integer>();
154    
155                    if (input.length() == 0)
156                            return map;
157    
158                    String parts[] = input.split(";");
159                    for(String part : parts) {
160                            String keyval[] = part.split("=");
161    
162                            Enchantment enc = Enchantment.getByName( keyval[0] );
163                            int level = Integer.parseInt( keyval[1]);
164                            map.put(enc, level);
165                    }
166    
167                  return new ItemStack(type,amount,damage,data);                  return map;
168          }          }
169                    
170  }  }

Legend:
Removed from v.1657  
changed lines
  Added in v.1875

  ViewVC Help
Powered by ViewVC 1.1.20