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

Annotation of /miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/AdminDestroy.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1384 - (hide annotations) (download)
Sun Apr 24 10:08:10 2011 UTC (13 years, 1 month ago) by torben
File size: 2343 byte(s)
Diamond ore drops diamond
1 torben 1378 package dk.thoerup.bukkit.hoeruputils;
2    
3     import java.util.HashSet;
4     import java.util.Set;
5 torben 1384 import java.util.Random;
6 torben 1378
7     import org.bukkit.Material;
8 torben 1379 import org.bukkit.block.Block;
9 torben 1378 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 torben 1379 import org.bukkit.inventory.ItemStack;
18 torben 1378
19     public class AdminDestroy extends BlockListener implements CommandExecutor {
20    
21    
22 torben 1384 Random rand = new Random();
23    
24 torben 1378 Set<String> destroyers = 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 torben 1381
33 torben 1378 Player p = (Player) sender;
34     if (destroyers.contains(p.getName())) {
35     destroyers.remove( p.getName() );
36     p.sendMessage("Admindestroy disabled");
37     } else {
38     destroyers.add( p.getName() );
39     p.sendMessage("Admindestroy enabled - go dig some tunnels (with a feather)");
40     }
41    
42    
43     return true;
44     }
45 torben 1384
46 torben 1378
47 torben 1384 protected int getDropBlock(Block b) {
48 torben 1379 switch (b.getTypeId()) {
49 torben 1384 case 1: //stone drops cobblestone
50 torben 1379 return 4;
51     case 2:
52     case 3:
53 torben 1384 return 0; //instabreak already drops dirt
54     case 16: //coal ore drops coal
55     return 263;
56     case 56: //diamond ore drops diamond
57     return 264;
58 torben 1379 default:
59     return b.getTypeId(); //don't throw any others
60     }
61     }
62    
63 torben 1378 public void onBlockDamage(BlockDamageEvent event) {
64     Player p = event.getPlayer();
65    
66     if (! p.isOp() )
67     return;
68    
69     if ( destroyers.contains(p.getName()) ) {
70     if (p.getItemInHand().getType() == Material.FEATHER) {
71     event.setInstaBreak(true);
72 torben 1379
73     Block b = event.getBlock();
74 torben 1384 int blockid = getDropBlock(b);
75 torben 1379
76     if (blockid != 0) {
77 torben 1381 ItemStack stack = new ItemStack(blockid, 1);
78 torben 1383 b.getWorld().dropItemNaturally(b.getLocation(), stack);
79 torben 1379 }
80    
81 torben 1378 }
82     }
83    
84     }
85    
86     public class PlayerQuitListener extends PlayerListener {
87     @Override
88     public void onPlayerQuit(PlayerQuitEvent event) {
89     Player p = event.getPlayer();
90    
91     if (destroyers.contains(p.getName())) {
92     destroyers.remove( p.getName() );
93     }
94     }
95     }
96    
97     }

  ViewVC Help
Powered by ViewVC 1.1.20