/[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 1477 - (show annotations) (download)
Mon May 23 16:02:15 2011 UTC (12 years, 11 months ago) by torben
File size: 3668 byte(s)
Close some duplicator bugs 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 if (miners.contains(p.getName())) {
41 miners.remove( p.getName() );
42 p.sendMessage("PowerMiner disabled");
43 } else {
44 miners.add( p.getName() );
45 p.sendMessage("PowerMiner enabled - go dig some tunnels (with a feather)");
46 }
47
48
49 return true;
50 }
51
52
53 protected ItemStack getDropItems(Block b) {
54 switch (b.getTypeId()) {
55 case 1: //stone drops cobblestone
56 return new ItemStack(4,1);
57 case 2:
58 case 3:
59 return null; //instabreak already drops dirt
60 case 12:
61 return null; //instabreak drops sand
62 case 13:
63 return null; //don't drop gravel
64 case 16: //coal ore drops coal
65 return new ItemStack(263,1);
66 case 17:
67 return null; //instabreak drops wood
68 case 18:
69 return (rand.nextInt(16) == 0) ? new ItemStack(6,1,(short)0, b.getData() ) : null; //leaves has 6.25% chance of dropping sapplings
70 case 21: //lapis lazuli
71 int count = rand.nextInt(5) + 4;
72 return new ItemStack(351,count,(short)0, (byte)4);
73 case 27:
74 case 28:
75 return null; //instabreak drops powered and detector rails
76 case 54:
77 return null; //instabreak drops chests
78 case 56: //diamond ore drops diamond
79 return new ItemStack(264,1);
80 case 58:
81 return null; //instabreak drops craft tables
82 case 64: //instabreak drops wooden doors
83 case 66:
84 return null; //instabreak drops rails
85 case 71: //instabreak drops iron doors
86 return null;
87 case 73:
88 case 74:
89 return new ItemStack(331,4); //redstone ore (both glowing and non-glowing) drops 4 redstone
90 case 82:
91 return null; //instabreak drops clay from clayblock
92 default:
93 return new ItemStack(b.getTypeId(), 1,(short)0, b.getData());
94 }
95 }
96
97 public void onBlockDamage(BlockDamageEvent event) {
98 Player p = event.getPlayer();
99
100 if (! p.isOp() )
101 return;
102
103 if (p.getItemInHand().getType() == Material.FEATHER) {
104 if ( miners.contains(p.getName()) ) {
105
106 Block b = event.getBlock();
107
108 if (b.getTypeId() == 7) //don't remove bedrock
109 return;
110 if (b.getTypeId() == 90) //don't break portal
111 return;
112
113 event.setInstaBreak(true);
114
115
116 ItemStack items = getDropItems(b);
117
118
119 if (items != null) {
120 b.getWorld().dropItemNaturally(b.getLocation(), items);
121 }
122
123 }
124 }
125
126 }
127 public PlayerQuitListener getPlayerQuitListener() {
128 return new PlayerQuitListener();
129 }
130
131
132 public class PlayerQuitListener extends PlayerListener {
133 @Override
134 public void onPlayerQuit(PlayerQuitEvent event) {
135 Player p = event.getPlayer();
136
137 if (miners.contains(p.getName())) {
138 miners.remove( p.getName() );
139 }
140 }
141 }
142
143 }

  ViewVC Help
Powered by ViewVC 1.1.20