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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20