/[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 1713 - (hide annotations) (download)
Tue Mar 6 16:58:13 2012 UTC (12 years, 2 months ago) by torben
File size: 3877 byte(s)
work with craftbukkit 1.2.3
1 torben 1657 package dk.thoerup.bukkit.creativeworld;
2    
3     import org.bukkit.*;
4     import org.bukkit.entity.*;
5 torben 1681 import org.bukkit.event.*;
6 torben 1657 import org.bukkit.event.player.*;
7     import org.bukkit.configuration.*;
8     import org.bukkit.inventory.*;
9    
10 torben 1681 public class WorldChanged implements Listener {
11 torben 1658 final static String STACK_TYPE = ".type";
12     final static String STACK_AMOUNT = ".amount";
13     final static String STACK_DAMAGE = ".damage";
14     final static String STACK_DATA = ".data";
15 torben 1657
16 torben 1658 final static String INVENTORY_CREATIVE = ".inventory.creative.";
17     final static String INVENTORY_CREATIVE_ARMOR = ".inventory.creative.armor.";
18    
19 torben 1657 CreativeMain plugin;
20     public WorldChanged(CreativeMain plugin) {
21     this.plugin = plugin;
22     }
23    
24 torben 1682
25 torben 1681 @EventHandler
26 torben 1682 public void onPlayerExpChange(PlayerExpChangeEvent event) {
27     if (event.getPlayer().getWorld().getName().equalsIgnoreCase("creative")) {
28     event.setAmount(0); //users don't acummulate xp points in creative mode
29     }
30     }
31    
32     @EventHandler
33 torben 1657 public void onPlayerChangedWorld(PlayerChangedWorldEvent event) {
34    
35    
36     Player player = event.getPlayer();
37    
38     System.out.println( player.getName() + " : " + event.getFrom().getName() + " -> " + player.getWorld().getName() );
39    
40     Configuration config = plugin.getConfig();
41    
42     if (player.getWorld().getName().equalsIgnoreCase("creative") ) {
43     player.sendMessage(ChatColor.YELLOW + "You are now in creative world - have fun");
44     config.set( player.getName() + ".iscreative", true);
45    
46     PlayerInventory inv = player.getInventory();
47    
48     for (int i=0; i<inv.getSize(); i++) {
49 torben 1658 String node = player.getName() + INVENTORY_CREATIVE + i;;
50 torben 1657 //config.set( node, inv.getItem(i) );
51     saveItemStack(config, node, inv.getItem(i) );
52     }
53    
54     ItemStack armor[] = inv.getArmorContents();
55     for (int i=0; i<armor.length; i++) {
56 torben 1658 String node = player.getName() + INVENTORY_CREATIVE_ARMOR + i;;
57 torben 1657 //config.set( node, armor[i] );
58     saveItemStack(config, node, armor[i] );
59     }
60    
61     plugin.saveConfig();
62    
63     inv.clear();
64    
65     player.setGameMode( GameMode.CREATIVE );
66    
67     } else if (event.getFrom().getName().equalsIgnoreCase("creative") ) {
68     player.sendMessage(ChatColor.YELLOW + "You are now in survival world - watch out !!!");
69     config.set( player.getName() + ".iscreative", false);
70     player.setGameMode( GameMode.SURVIVAL );
71    
72     PlayerInventory inv = player.getInventory();
73     inv.clear();
74    
75     ItemStack items[] = new ItemStack[ inv.getSize() ];
76    
77     for (int i=0; i<inv.getSize(); i++) {
78 torben 1658 String node = player.getName() + INVENTORY_CREATIVE + i;;
79 torben 1657 //items[i] = config.getItemStack(node);
80     items[i] = getItemStack(config, node);
81     }
82    
83    
84    
85     ItemStack armor[] = new ItemStack[ inv.getArmorContents().length];
86     for (int i=0; i<armor.length; i++) {
87 torben 1658 String node = player.getName() + INVENTORY_CREATIVE_ARMOR + i;
88 torben 1657 //armor[i] = config.getItemStack(node);
89     armor[i] = getItemStack(config, node);
90     }
91    
92     inv.setContents( items );
93     inv.setArmorContents( armor );
94     }
95     }
96    
97    
98     public void saveItemStack(Configuration config, String node, ItemStack stack) {
99 torben 1713 int type = 0;
100     int amount = 0;
101     int damage = 0;
102     int data = 0;
103    
104     if (stack != null) {
105     type = stack.getTypeId();
106     amount = stack.getAmount();
107     damage = stack.getDurability();
108     data = stack.getData().getData();
109     }
110    
111     config.set(node + STACK_TYPE, type );
112     config.set(node + STACK_AMOUNT, amount );
113     config.set(node + STACK_DAMAGE, damage );
114     config.set(node + STACK_DATA, data );
115 torben 1657 }
116    
117     public ItemStack getItemStack(Configuration config, String node) {
118 torben 1658 int type = config.getInt( node + STACK_TYPE);
119     int amount = config.getInt( node + STACK_AMOUNT);
120     short damage = (short) config.getInt(node + STACK_DAMAGE);
121     byte data = (byte) config.getInt(node + STACK_DATA);
122 torben 1657
123 torben 1663 ItemStack stack = new ItemStack(type,amount,damage,data);
124     stack.setDurability( damage ); //ItemStack constructor with Data value overrides durability
125     return stack;
126 torben 1657 }
127    
128     }

  ViewVC Help
Powered by ViewVC 1.1.20