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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20