/[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 1381 - (hide annotations) (download)
Sat Apr 23 14:32:49 2011 UTC (13 years, 1 month ago) by torben
File size: 2182 byte(s)
also used the new blockid
1 torben 1378 package dk.thoerup.bukkit.hoeruputils;
2    
3     import java.util.HashSet;
4     import java.util.Set;
5    
6     import org.bukkit.Material;
7 torben 1379 import org.bukkit.block.Block;
8 torben 1378 import org.bukkit.command.Command;
9     import org.bukkit.command.CommandExecutor;
10     import org.bukkit.command.CommandSender;
11     import org.bukkit.entity.Player;
12     import org.bukkit.event.block.BlockDamageEvent;
13     import org.bukkit.event.block.BlockListener;
14     import org.bukkit.event.player.PlayerListener;
15     import org.bukkit.event.player.PlayerQuitEvent;
16 torben 1379 import org.bukkit.inventory.ItemStack;
17 torben 1378
18     public class AdminDestroy extends BlockListener implements CommandExecutor {
19    
20    
21    
22     Set<String> destroyers = new HashSet<String>();
23    
24     @Override
25     public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
26     if (!sender.isOp())
27     return false;
28     if (! (sender instanceof Player) )
29     return false;
30 torben 1381
31 torben 1378 Player p = (Player) sender;
32     if (destroyers.contains(p.getName())) {
33     destroyers.remove( p.getName() );
34     p.sendMessage("Admindestroy disabled");
35     } else {
36     destroyers.add( p.getName() );
37     p.sendMessage("Admindestroy enabled - go dig some tunnels (with a feather)");
38     }
39    
40    
41     return true;
42     }
43    
44 torben 1379
45     protected int getThrowBlock(Block b) {
46     switch (b.getTypeId()) {
47     case 1:
48     return 4;
49     case 2:
50     case 3:
51     return 0; //instabreak already throws dirt
52     case 16:
53     return 264;
54     default:
55     return b.getTypeId(); //don't throw any others
56     }
57     }
58    
59 torben 1378 public void onBlockDamage(BlockDamageEvent event) {
60     Player p = event.getPlayer();
61    
62     if (! p.isOp() )
63     return;
64    
65     if ( destroyers.contains(p.getName()) ) {
66     if (p.getItemInHand().getType() == Material.FEATHER) {
67     event.setInstaBreak(true);
68 torben 1379
69     Block b = event.getBlock();
70     int blockid = getThrowBlock(b);
71    
72     if (blockid != 0) {
73 torben 1381 ItemStack stack = new ItemStack(blockid, 1);
74 torben 1379 b.getWorld().dropItem(b.getLocation(), stack);
75     }
76    
77 torben 1378 }
78     }
79    
80     }
81    
82     public class PlayerQuitListener extends PlayerListener {
83     @Override
84     public void onPlayerQuit(PlayerQuitEvent event) {
85     Player p = event.getPlayer();
86    
87     if (destroyers.contains(p.getName())) {
88     destroyers.remove( p.getName() );
89     }
90     }
91     }
92    
93     }

  ViewVC Help
Powered by ViewVC 1.1.20