/[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 1663 - (show annotations) (download)
Tue Dec 13 18:24:47 2011 UTC (12 years, 5 months ago) by torben
File size: 3452 byte(s)
fix the tool-repair bug
1 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 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
15 final static String INVENTORY_CREATIVE = ".inventory.creative.";
16 final static String INVENTORY_CREATIVE_ARMOR = ".inventory.creative.armor.";
17
18 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 String node = player.getName() + INVENTORY_CREATIVE + i;;
41 //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 String node = player.getName() + INVENTORY_CREATIVE_ARMOR + i;;
48 //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 String node = player.getName() + INVENTORY_CREATIVE + i;;
70 //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 String node = player.getName() + INVENTORY_CREATIVE_ARMOR + i;
79 //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 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 }
95
96 public ItemStack getItemStack(Configuration config, String node) {
97 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
102 ItemStack stack = new ItemStack(type,amount,damage,data);
103 stack.setDurability( damage ); //ItemStack constructor with Data value overrides durability
104 return stack;
105 }
106
107 }

  ViewVC Help
Powered by ViewVC 1.1.20