-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJackpot.java
More file actions
202 lines (178 loc) · 7.22 KB
/
Jackpot.java
File metadata and controls
202 lines (178 loc) · 7.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
package de.salty.smp.gambling;
import de.salty.smp.Smp;
import de.salty.smp.utils.Maths;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.Arrays;
import static de.salty.smp.gambling.JackpotManager.inv;
public class Jackpot implements CommandExecutor, Listener {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (args.length == 1) {
if (sender.hasPermission("cb.jackpot.start")) {
if (args[0].equalsIgnoreCase("start")) {
JackpotManager.initJackpot();
return true;
}
}
}
if (sender instanceof Player) {
Player p = (Player) sender;
if (args.length == 2) {
if (args[0].equalsIgnoreCase("teilnehmen") || args[0].equalsIgnoreCase("join")) {
if (isLong(args[1])) {
for (JackpotManager.JackpotEntry et : JackpotManager.entries.map.values()) {
if (et.name.equalsIgnoreCase(p.getName())) {
p.sendMessage("§6§lJACKPOT §8• §7You have already joined the jackpot.");
return true;
}
}
long coins = Long.parseLong(args[1]);
if (JackpotManager.MAX_ENTRY < coins) {
p.sendMessage("§6§lJACKPOT §8• §7You can join with a maximum of §6"
+ Maths.asString(JackpotManager.MAX_ENTRY) + " §7Coins.");
return true;
}
if (coins < 500) {
p.sendMessage("§6§lJACKPOT §8• §7You must join with at least §6500 §7Coins.");
return true;
}
double money = Smp.getEconomy().getBalance(p);
if (money >= coins) {
Smp.getEconomy().withdrawPlayer(p, coins);
JackpotManager.totalMoney += coins;
JackpotManager.entries.add((double) coins / 10,
new JackpotManager.JackpotEntry(p.getUniqueId(), p.getName(), coins));
p.sendMessage("§6§lJACKPOT §8• §7You have joined the jackpot with §6" + Maths.asString(coins) + " Coins§7.");
JackpotManager.updateInventory();
if (JackpotManager.entries.map.size() >= 2) {
JackpotManager.initJackpot();
}
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
if (onlinePlayer.getOpenInventory().getTitle().equals("§8Jackpot")) {
Bukkit.getScheduler().runTask(Smp.getInstance(), () -> onlinePlayer.performCommand("jackpot"));
}
}
return true;
}
p.closeInventory();
p.sendMessage("§6§lJACKPOT §8• §7You don't have enough coins!");
return true;
}
p.sendMessage("§6§lJACKPOT §8• §7You must enter a valid number.");
return true;
}
}
if (args.length == 0) {
if (JackpotManager.jackpotStatus != JackpotManager.DRAWING) {
Inventory inv = Bukkit.createInventory(p, 27, "§8Jackpot");
ItemStack i = new ItemStack(Material.GRAY_STAINED_GLASS_PANE, 1);
i.setAmount(1);
ItemMeta im = i.getItemMeta();
im.setDisplayName("§8§8§8§8");
i.setItemMeta(im);
for (int o1 = 0; o1 != 27; o1++) {
inv.setItem(o1, i);
}
inv.setItem(22,
new ItemCreator(Material.TRIPWIRE_HOOK).name("§8• §6§lJackpot Statistics")
.lore(Arrays.asList(" §7There are §6" + JackpotManager.entries.map.size() + " §7players in the jackpot.",
" §7The jackpot contains §6" + Maths.asString(JackpotManager.totalMoney) + " §7Coins."))
.build());
inv.setItem(2,
new ItemCreator(Material.MAP).name("§8• §6§l500 Coins")
.lore(" §8(§7§oClick to bet 500 coins§8)").build());
inv.setItem(3,
new ItemCreator(Material.MAP).name("§8• §6§l5,000 Coins")
.lore(" §8(§7§oClick to bet 5,000 coins§8)").build());
inv.setItem(4,
new ItemCreator(Material.MAP).name("§8• §6§l10,000 Coins")
.lore(" §8(§7§oClick to bet 10,000 coins§8)").build());
inv.setItem(5,
new ItemCreator(Material.MAP).name("§8• §6§l25,000 Coins")
.lore(" §8(§7§oClick to bet 25,000 coins§8)").build());
inv.setItem(6,
new ItemCreator(Material.MAP).name("§8• §6§l50,000 Coins")
.lore(" §8(§7§oClick to bet 50,000 coins§8)").build());
inv.setItem(12,
new ItemCreator(Material.MAP).name("§8• §6§l100,000 Coins")
.lore(" §8(§7§oClick to bet 100,000 coins§8)").build());
inv.setItem(13,
new ItemCreator(Material.MAP).name("§8• §6§l250,000 Coins")
.lore(" §8(§7§oClick to bet 250,000 coins§8)").build());
inv.setItem(14,
new ItemCreator(Material.MAP).name("§8• §6§l500,000 Coins")
.lore(" §8(§7§oClick to bet 500,000 coins§8)").build());
p.openInventory(inv);
return true;
} else {
p.openInventory(inv);
return true;
}
}
}
return true;
}
public static boolean isLong(String s) {
try {
Long.parseLong(s);
} catch (NumberFormatException nfe) {
return false;
}
return Long.parseLong(s) >= 1L;
}
@EventHandler
public void onClick(InventoryClickEvent e) {
if (e.getView().getTitle().equals("§8Jackpot")) {
e.setCancelled(true);
Player p = (Player) e.getWhoClicked();
if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR) {
return;
}
if (JackpotManager.jackpotStatus == JackpotManager.DRAWING) {
return;
}
String displayName = e.getCurrentItem().getItemMeta().getDisplayName();
if (displayName.equals("§8• §6§l500 Coins")) {
p.performCommand("jackpot teilnehmen 500");
} else if (displayName.equals("§8• §6§l5,000 Coins")) {
p.performCommand("jackpot teilnehmen 5000");
} else if (displayName.equals("§8• §6§l10,000 Coins")) {
p.performCommand("jackpot teilnehmen 10000");
} else if (displayName.equals("§8• §6§l25,000 Coins")) {
p.performCommand("jackpot teilnehmen 25000");
} else if (displayName.equals("§8• §6§l50,000 Coins")) {
p.performCommand("jackpot teilnehmen 50000");
} else if (displayName.equals("§8• §6§l100,000 Coins")) {
p.performCommand("jackpot teilnehmen 100000");
} else if (displayName.equals("§8• §6§l250,000 Coins")) {
p.performCommand("jackpot teilnehmen 250000");
} else if (displayName.equals("§8• §6§l500,000 Coins")) {
p.performCommand("jackpot teilnehmen 500000");
} else {
return;
}
p.playSound(p.getLocation(), Sound.BLOCK_LEVER_CLICK, 1, 1);
}
}
@EventHandler
public void onInventoryOpen(InventoryOpenEvent e) {
if (e.getView().getTitle().equals("§8Jackpot") && JackpotManager.jackpotStatus == JackpotManager.DRAWING) {
Bukkit.getScheduler().runTaskLater(Smp.getInstance(), () -> {
((Player) e.getPlayer()).openInventory(inv);
}, 1L);
}
}
}