/[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 1391 - (show annotations) (download)
Mon Apr 25 20:15:48 2011 UTC (13 years ago) by torben
File size: 3133 byte(s)
don't break portal
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 return false;
30 if (! (sender instanceof Player) )
31 return false;
32
33 Player p = (Player) sender;
34 if (miners.contains(p.getName())) {
35 miners.remove( p.getName() );
36 p.sendMessage("PowerMiner disabled");
37 } else {
38 miners.add( p.getName() );
39 p.sendMessage("PowerMiner enabled - go dig some tunnels (with a feather)");
40 }
41
42
43 return true;
44 }
45
46
47 protected ItemStack getDropItems(Block b) {
48 switch (b.getTypeId()) {
49 case 1: //stone drops cobblestone
50 return new ItemStack(4,1);
51 case 2:
52 case 3:
53 return null; //instabreak already drops dirt
54 case 12:
55 return null; //instabreak drops sand
56 case 13:
57 return null; //don't drop gravel
58 case 16: //coal ore drops coal
59 return new ItemStack(263,1);
60 case 17:
61 return null; //instabreak drops wood
62 case 18:
63 return (rand.nextInt(16) == 0) ? new ItemStack(6,1,(short)0, (byte)rand.nextInt(4) ) : null; //leaves has 6.25% chance of dropping sapplings - the sappling type is randomized
64 case 21: //lapis lazuli
65 int count = rand.nextInt(5) + 4;
66 return new ItemStack(351,count,(short)0, (byte)4);
67 case 56: //diamond ore drops diamond
68 return new ItemStack(264,1);
69 case 73:
70 case 74:
71 return new ItemStack(331,4); //redstone ore (both glowing and non-glowing) drops 4 redstone
72 default:
73 return new ItemStack(b.getTypeId(), 1);
74 }
75 }
76
77 public void onBlockDamage(BlockDamageEvent event) {
78 Player p = event.getPlayer();
79
80 if (! p.isOp() )
81 return;
82
83 if ( miners.contains(p.getName()) ) {
84 if (p.getItemInHand().getType() == Material.FEATHER) {
85
86 Block b = event.getBlock();
87
88 if (b.getTypeId() == 7) //don't remove bedrock
89 return;
90 if (b.getTypeId() == 90) //don't break portal
91 return;
92
93 event.setInstaBreak(true);
94
95
96 ItemStack items = getDropItems(b);
97
98
99 if (items != null) {
100 b.getWorld().dropItemNaturally(b.getLocation(), items);
101 }
102
103 }
104 }
105
106 }
107 public PlayerQuitListener getPlayerQuitListener() {
108 return new PlayerQuitListener();
109 }
110
111
112 public class PlayerQuitListener extends PlayerListener {
113 @Override
114 public void onPlayerQuit(PlayerQuitEvent event) {
115 Player p = event.getPlayer();
116
117 if (miners.contains(p.getName())) {
118 miners.remove( p.getName() );
119 }
120 }
121 }
122
123 }

  ViewVC Help
Powered by ViewVC 1.1.20