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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1663 - (hide annotations) (download)
Tue Dec 13 18:24:47 2011 UTC (12 years, 5 months ago) by torben
Original Path: miscJava/bukkit-minecraft-plugins/CreativeWorld/src/dk/thoerup/bukkit/creativeworld/WorldChanged.java
File size: 3452 byte(s)
fix the tool-repair bug
1 torben 1657 package dk.thoerup.bukkit.creativeworld;
2    
3     import org.bukkit.*;
4     import org.bukkit.entity.*;
5     import org.bukkit.event.player.*;
6     import org.bukkit.configuration.*;
7     import org.bukkit.inventory.*;
8    
9     public class WorldChanged extends PlayerListener {
10 torben 1658 final static String STACK_TYPE = ".type";
11     final static String STACK_AMOUNT = ".amount";
12     final static String STACK_DAMAGE = ".damage";
13     final static String STACK_DATA = ".data";
14 torben 1657
15 torben 1658 final static String INVENTORY_CREATIVE = ".inventory.creative.";
16     final static String INVENTORY_CREATIVE_ARMOR = ".inventory.creative.armor.";
17    
18 torben 1657 CreativeMain plugin;
19     public WorldChanged(CreativeMain plugin) {
20     this.plugin = plugin;
21     }
22    
23     @Override
24     public void onPlayerChangedWorld(PlayerChangedWorldEvent event) {
25    
26    
27     Player player = event.getPlayer();
28    
29     System.out.println( player.getName() + " : " + event.getFrom().getName() + " -> " + player.getWorld().getName() );
30    
31     Configuration config = plugin.getConfig();
32    
33     if (player.getWorld().getName().equalsIgnoreCase("creative") ) {
34     player.sendMessage(ChatColor.YELLOW + "You are now in creative world - have fun");
35     config.set( player.getName() + ".iscreative", true);
36    
37     PlayerInventory inv = player.getInventory();
38    
39     for (int i=0; i<inv.getSize(); i++) {
40 torben 1658 String node = player.getName() + INVENTORY_CREATIVE + i;;
41 torben 1657 //config.set( node, inv.getItem(i) );
42     saveItemStack(config, node, inv.getItem(i) );
43     }
44    
45     ItemStack armor[] = inv.getArmorContents();
46     for (int i=0; i<armor.length; i++) {
47 torben 1658 String node = player.getName() + INVENTORY_CREATIVE_ARMOR + i;;
48 torben 1657 //config.set( node, armor[i] );
49     saveItemStack(config, node, armor[i] );
50     }
51    
52     plugin.saveConfig();
53    
54     inv.clear();
55    
56     player.setGameMode( GameMode.CREATIVE );
57    
58     } else if (event.getFrom().getName().equalsIgnoreCase("creative") ) {
59     player.sendMessage(ChatColor.YELLOW + "You are now in survival world - watch out !!!");
60     config.set( player.getName() + ".iscreative", false);
61     player.setGameMode( GameMode.SURVIVAL );
62    
63     PlayerInventory inv = player.getInventory();
64     inv.clear();
65    
66     ItemStack items[] = new ItemStack[ inv.getSize() ];
67    
68     for (int i=0; i<inv.getSize(); i++) {
69 torben 1658 String node = player.getName() + INVENTORY_CREATIVE + i;;
70 torben 1657 //items[i] = config.getItemStack(node);
71     items[i] = getItemStack(config, node);
72     }
73    
74    
75    
76     ItemStack armor[] = new ItemStack[ inv.getArmorContents().length];
77     for (int i=0; i<armor.length; i++) {
78 torben 1658 String node = player.getName() + INVENTORY_CREATIVE_ARMOR + i;
79 torben 1657 //armor[i] = config.getItemStack(node);
80     armor[i] = getItemStack(config, node);
81     }
82    
83     inv.setContents( items );
84     inv.setArmorContents( armor );
85     }
86     }
87    
88    
89     public void saveItemStack(Configuration config, String node, ItemStack stack) {
90 torben 1658 config.set(node + STACK_TYPE, stack.getTypeId() );
91     config.set(node + STACK_AMOUNT, stack.getAmount() );
92     config.set(node + STACK_DAMAGE, (int)stack.getDurability() );
93     config.set(node + STACK_DATA, (int)stack.getData().getData() );
94 torben 1657 }
95    
96     public ItemStack getItemStack(Configuration config, String node) {
97 torben 1658 int type = config.getInt( node + STACK_TYPE);
98     int amount = config.getInt( node + STACK_AMOUNT);
99     short damage = (short) config.getInt(node + STACK_DAMAGE);
100     byte data = (byte) config.getInt(node + STACK_DATA);
101 torben 1657
102 torben 1663 ItemStack stack = new ItemStack(type,amount,damage,data);
103     stack.setDurability( damage ); //ItemStack constructor with Data value overrides durability
104     return stack;
105 torben 1657 }
106    
107     }

  ViewVC Help
Powered by ViewVC 1.1.20