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

Contents of /miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/DiverCommand.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1680 - (show annotations) (download)
Wed Jan 25 21:55:33 2012 UTC (12 years, 3 months ago) by torben
File size: 2979 byte(s)
move all normal handlers to new event system - and deprecate respawnhandler.java
1 package dk.thoerup.bukkit.hoeruputils;
2
3
4 import org.bukkit.plugin.Plugin;
5 import org.bukkit.Server;
6 import org.bukkit.ChatColor;
7 import org.bukkit.command.Command;
8 import org.bukkit.command.CommandExecutor;
9 import org.bukkit.command.CommandSender;
10 import org.bukkit.entity.Player;
11
12 import org.bukkit.event.Listener;
13 import org.bukkit.event.EventHandler;
14
15 import org.bukkit.event.player.PlayerQuitEvent;
16
17 import org.bukkit.inventory.Inventory;
18 import org.bukkit.inventory.ItemStack;
19
20 import org.bukkit.scheduler.BukkitScheduler;
21
22 import java.util.HashMap;
23
24 public class DiverCommand implements CommandExecutor, Listener {
25
26 final static int LEATHER_COUNT = 3;
27 final static int LEATHER_ID = 334;
28
29 final static int TICK_COUNT = 20;
30
31 HashMap<String,Integer> divers = new HashMap<String,Integer>();
32
33
34 Plugin plugin;
35
36 BukkitScheduler scheduler;
37 public DiverCommand(Plugin plugin) {
38 this.plugin = plugin;
39 scheduler = plugin.getServer().getScheduler();
40 }
41
42 @Override
43 public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) {
44
45 if (!(sender instanceof Player)) {
46 return false;
47 }
48 final Player player = (Player) sender;
49
50 if (divers.containsKey( sender.getName() )) {
51 //disableDiver( player.getName() );
52 //player.sendMessage(ChatColor.GREEN + "Diver disabled - you're now gasping for air");;
53 player.sendMessage(ChatColor.GREEN + "Diver: - you already have a airbladder");
54 } else {
55 Inventory inv = player.getInventory();
56 if (inv.contains(LEATHER_ID, LEATHER_COUNT) ) {
57 RefillAir r = new RefillAir(player);
58 int taskid = scheduler.scheduleSyncRepeatingTask(plugin, r, (5*20), (5*20) );
59 divers.put(player.getName(), taskid);
60 player.sendMessage(ChatColor.GREEN + "Diver: you created a airbladder from " + LEATHER_COUNT + " leather - go for a swim");
61
62 inv.removeItem( new ItemStack(LEATHER_ID, LEATHER_COUNT) );
63 } else {
64 player.sendMessage(ChatColor.GREEN + "Diver: you need " + LEATHER_COUNT + " leather to create a airbladder");
65 }
66
67 }
68
69 return true;
70 }
71
72
73 public void disableDiver(String name) {
74 int taskid = divers.get( name );
75 scheduler.cancelTask( taskid );
76 divers.remove( name );
77 }
78
79 class RefillAir implements Runnable {
80
81 int ticks = TICK_COUNT;
82
83 Player player;
84 public RefillAir(Player player) {
85 this.player = player;
86 }
87
88 public void run() {
89 int maxair = player.getMaximumAir();
90 if (player.getRemainingAir() < (maxair/2)) {
91 player.setRemainingAir( maxair);
92
93 ticks --;
94 if (ticks == 1) {
95 player.sendMessage(ChatColor.GREEN + "Diver: there's not much air left in the air-bladder");
96 }
97 if (ticks <= 0) {
98 disableDiver( player.getName() );
99 player.sendMessage(ChatColor.GREEN + "Diver: your air-bladder are empty!");
100 }
101 }
102 }
103
104 }
105
106 @EventHandler
107 public void onPlayerQuit(PlayerQuitEvent e) {
108 Player p = e.getPlayer();
109
110 if (divers.containsKey( p.getName() )) {
111 disableDiver( p.getName() );
112 }
113
114 }
115 }

  ViewVC Help
Powered by ViewVC 1.1.20