/[projects]/miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/PowerMiner.java
ViewVC logotype

Contents of /miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/PowerMiner.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1591 - (show annotations) (download)
Tue Aug 16 16:11:25 2011 UTC (12 years, 9 months ago) by torben
File size: 4309 byte(s)
fix bug in powerminer
1 package dk.thoerup.bukkit.hoeruputils;
2
3 import java.util.HashSet;
4 import java.util.Set;
5 import java.util.Random;
6
7 import org.bukkit.Material;
8 import org.bukkit.block.Block;
9 import org.bukkit.command.Command;
10 import org.bukkit.command.CommandExecutor;
11 import org.bukkit.command.CommandSender;
12 import org.bukkit.entity.Player;
13 import org.bukkit.event.block.BlockDamageEvent;
14 import org.bukkit.event.block.BlockListener;
15 import org.bukkit.event.player.PlayerListener;
16 import org.bukkit.event.player.PlayerQuitEvent;
17 import org.bukkit.inventory.ItemStack;
18
19 public class PowerMiner extends BlockListener implements CommandExecutor {
20
21
22 Random rand = new Random();
23
24 Set<String> miners = new HashSet<String>();
25
26 @Override
27 public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
28 /* if (!sender.isOp()) {
29 sender.sendMessage("Only ops can use powerminer");
30 return false;
31 }*/
32
33 if (! (sender instanceof Player) ) {
34 sender.sendMessage("Only in-game players can use powerminer");
35 return false;
36 }
37
38
39 Player p = (Player) sender;
40
41
42 if ( ! p.hasPermission("hoeruputils.powerminer") ) {
43 sender.sendMessage("You don't have permissions to use powerminer!");
44 return false;
45 }
46
47 if (miners.contains(p.getName())) {
48 miners.remove( p.getName() );
49 p.sendMessage("PowerMiner disabled");
50 } else {
51 miners.add( p.getName() );
52 p.sendMessage("PowerMiner enabled - go dig some tunnels (with a feather)");
53 }
54
55
56 return true;
57 }
58
59
60 protected ItemStack getDropItems(Block b) {
61 switch (b.getTypeId()) {
62 case 1: //stone drops cobblestone
63 return new ItemStack(4,1);
64 case 2:
65 case 3:
66 return null; //instabreak already drops dirt
67 case 5:
68 return null; //instabreak drops wooden plank
69 case 12:
70 return null; //instabreak drops sand
71 case 13:
72 return null; //don't drop gravel
73 case 16: //coal ore drops coal
74 return new ItemStack(263,1);
75 case 17:
76 return null; //instabreak drops wood
77 case 18:
78 return (rand.nextInt(16) == 0) ? new ItemStack(6,1,(short)0, b.getData() ) : null; //leaves has 6.25% chance of dropping sapplings
79 case 21: //lapis lazuli
80 int count = rand.nextInt(5) + 4;
81 return new ItemStack(351,count,(short)0, (byte)4);
82 case 27:
83 case 28:
84 return null; //instabreak drops powered and detector rails
85 case 50:
86 return null; //instabreak drops torches
87 case 53:
88 return null; //instabreak drops wood for wooden stairs
89 case 54:
90 return null; //instabreak drops chests
91 case 56: //diamond ore drops diamond
92 return new ItemStack(264,1);
93 case 58:
94 return null; //instabreak drops craft tables
95 case 60:
96 return null; //instabreak drops dirt for farmland blocks
97 case 64: //instabreak drops wooden doors
98 case 65: //instabreak drops ladders
99 case 66:
100 return null; //instabreak drops rails
101 case 71: //instabreak drops iron doors
102 return null;
103 case 73:
104 case 74:
105 return new ItemStack(331,4); //redstone ore (both glowing and non-glowing) drops 4 redstone
106 case 75:
107 case 76:
108 return null; //instabreak drops redstone torches (both on and off)
109 case 82:
110 return null; //instabreak drops clay from clayblock
111 case 88:
112 return null; //instabreak drops soul sand
113 case 93: //instabreak drops repeater both on and off
114 case 94:
115 return null;
116 default:
117 return new ItemStack(b.getTypeId(), 1,(short)0, b.getData());
118 }
119 }
120
121 public void onBlockDamage(BlockDamageEvent event) {
122 Player p = event.getPlayer();
123
124 if (p.getItemInHand().getType() == Material.FEATHER) {
125 if ( miners.contains(p.getName()) ) {
126
127 Block b = event.getBlock();
128
129 if (b.getTypeId() == 7) //don't remove bedrock
130 return;
131 if (b.getTypeId() == 90) //don't break portal
132 return;
133
134 event.setInstaBreak(true);
135
136
137 ItemStack items = getDropItems(b);
138
139
140 if (items != null) {
141 b.getWorld().dropItemNaturally(b.getLocation(), items);
142 }
143
144 }
145 }
146
147 }
148 public PlayerQuitListener getPlayerQuitListener() {
149 return new PlayerQuitListener();
150 }
151
152
153 public class PlayerQuitListener extends PlayerListener {
154 @Override
155 public void onPlayerQuit(PlayerQuitEvent event) {
156 Player p = event.getPlayer();
157
158 if (miners.contains(p.getName())) {
159 miners.remove( p.getName() );
160 }
161 }
162 }
163
164 }

  ViewVC Help
Powered by ViewVC 1.1.20