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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/AdminDestroy.java revision 1384 by torben, Sun Apr 24 10:08:10 2011 UTC miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/PowerMiner.java revision 1477 by torben, Mon May 23 16:02:15 2011 UTC
# Line 16  import org.bukkit.event.player.PlayerLis Line 16  import org.bukkit.event.player.PlayerLis
16  import org.bukkit.event.player.PlayerQuitEvent;  import org.bukkit.event.player.PlayerQuitEvent;
17  import org.bukkit.inventory.ItemStack;  import org.bukkit.inventory.ItemStack;
18    
19  public class AdminDestroy extends BlockListener implements CommandExecutor {  public class PowerMiner extends BlockListener implements CommandExecutor {
20                    
21                    
22          Random rand = new Random();          Random rand = new Random();
23                    
24          Set<String> destroyers = new HashSet<String>();          Set<String> miners = new HashSet<String>();
25    
26          @Override          @Override
27          public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {          public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
28                  if (!sender.isOp())                  if (!sender.isOp()) {
29                            sender.sendMessage("Only ops can use powerminer");
30                          return false;                          return false;
31                  if (! (sender instanceof Player) )                  }
32                            
33                    if (! (sender instanceof Player) ) {
34                            sender.sendMessage("Only in-game players can use powerminer");
35                          return false;                          return false;
36                    }
37                            
38                                    
39                  Player p  = (Player) sender;                  Player p  = (Player) sender;
40                  if (destroyers.contains(p.getName())) {                  if (miners.contains(p.getName())) {
41                          destroyers.remove( p.getName() );                          miners.remove( p.getName() );
42                          p.sendMessage("Admindestroy disabled");                          p.sendMessage("PowerMiner disabled");
43                  } else {                  } else {
44                          destroyers.add( p.getName() );                          miners.add( p.getName() );
45                          p.sendMessage("Admindestroy enabled - go dig some tunnels (with a feather)");                          p.sendMessage("PowerMiner enabled - go dig some tunnels (with a feather)");
46                  }                  }
47                                    
48                                    
# Line 44  public class AdminDestroy extends BlockL Line 50  public class AdminDestroy extends BlockL
50          }          }
51    
52                    
53          protected int getDropBlock(Block b) {          protected ItemStack getDropItems(Block b) {
54                  switch (b.getTypeId()) {                  switch (b.getTypeId()) {
55                  case 1: //stone drops cobblestone                  case 1: //stone drops cobblestone
56                          return 4;                          return new ItemStack(4,1);
57                  case 2:                  case 2:
58                  case 3:                                  case 3:                
59                          return 0; //instabreak already drops dirt                                        return null; //instabreak already drops dirt
60                  case 16: //coal ore drops coal                  case 12:
61                          return 263;                              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                  case 56: //diamond ore drops diamond
79                          return 264;                              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:                  default:
93                          return b.getTypeId(); //don't throw any others                          return new ItemStack(b.getTypeId(), 1,(short)0, b.getData());
94                  }                  }
95          }          }
96                    
# Line 66  public class AdminDestroy extends BlockL Line 100  public class AdminDestroy extends BlockL
100                  if (! p.isOp() )                  if (! p.isOp() )
101                          return;                          return;
102                                    
103                  if ( destroyers.contains(p.getName()) ) {                  if (p.getItemInHand().getType() == Material.FEATHER) {
104                          if (p.getItemInHand().getType() == Material.FEATHER) {                          if ( miners.contains(p.getName()) ) {                  
                                 event.setInstaBreak(true);  
105                                                                    
106                                  Block b = event.getBlock();                                  Block b = event.getBlock();
                                 int blockid = getDropBlock(b);  
107                                                                    
108                                  if (blockid != 0) {                                                              if (b.getTypeId() == 7) //don't remove bedrock
109                                          ItemStack stack = new ItemStack(blockid, 1);                                          return;
110                                          b.getWorld().dropItemNaturally(b.getLocation(), stack);                                  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 {          public class PlayerQuitListener extends PlayerListener {
133                  @Override                  @Override
134                  public void onPlayerQuit(PlayerQuitEvent event) {                  public void onPlayerQuit(PlayerQuitEvent event) {
135                          Player p = event.getPlayer();                          Player p = event.getPlayer();
136                                                    
137                          if (destroyers.contains(p.getName())) {                          if (miners.contains(p.getName())) {
138                                  destroyers.remove( p.getName() );                                  miners.remove( p.getName() );
139                          }                          }
140                  }                  }
141          }          }

Legend:
Removed from v.1384  
changed lines
  Added in v.1477

  ViewVC Help
Powered by ViewVC 1.1.20