ProjectAres/Lobby/src/main/java/tc/oc/lobby/bukkit/gizmos/Gizmos.java

100 lines
4.7 KiB
Java

package tc.oc.lobby.bukkit.gizmos;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import java.util.List;
import java.util.Map;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import tc.oc.lobby.bukkit.LobbyTranslations;
import tc.oc.lobby.bukkit.gizmos.chicken.ChickenGizmo;
import tc.oc.lobby.bukkit.gizmos.empty.EmptyGizmo;
import tc.oc.lobby.bukkit.gizmos.gun.GunGizmo;
import tc.oc.lobby.bukkit.gizmos.halloween.ghost.GhostGizmo;
import tc.oc.lobby.bukkit.gizmos.halloween.horse.HeadlessHorsemanGizmo;
import tc.oc.lobby.bukkit.gizmos.launcher.LauncherGizmo;
import tc.oc.lobby.bukkit.gizmos.popper.PopperGizmo;
import tc.oc.lobby.bukkit.gizmos.rocket.RocketGizmo;
public class Gizmos implements Listener {
public static EmptyGizmo emptyGizmo = new EmptyGizmo("Empty", ChatColor.GRAY.toString(), "Unequip current gizmo", Material.THIN_GLASS, 0);
public static PopperGizmo popperGizmo = new PopperGizmo("Popper", ChatColor.WHITE.toString(), "Clear players with a satisfying pop", Material.FIREWORK_CHARGE, 100);
public static RocketGizmo rocketGizmo = new RocketGizmo("Player Rocketer", ChatColor.RED.toString(), "Hide players by launching them into colorful fireworks", Material.FIREWORK, 5000);
public static GunGizmo gunGizmo = new GunGizmo("Raindrop Gun", ChatColor.AQUA.toString(), "Gift raindrops with a punch :D", Material.IRON_HOE, 7500);
public static ChickenGizmo chickenGizmo = new ChickenGizmo("Chickenifier5000", ChatColor.YELLOW.toString(), "bok B'GAWK", Material.EGG, 10000);
public static LauncherGizmo launcherGizmo = new LauncherGizmo("Murica", ChatColor.RED.toString(), "Show your pride!", Material.FEATHER, 17760);
public static HeadlessHorsemanGizmo headlessHorsemanGizmo = new HeadlessHorsemanGizmo("The Headless Horseman", ChatColor.RED.toString(), "You have been taken over by the darkness...", Material.NETHER_STAR);
public static GhostGizmo ghostGizmo = new GhostGizmo("Ghosts", ChatColor.RED.toString(), "Surround yourself in ghosts!", Material.BONE);
public static final List<Gizmo> gizmos = Lists.newArrayList(emptyGizmo, popperGizmo, rocketGizmo, gunGizmo, chickenGizmo, launcherGizmo, headlessHorsemanGizmo, ghostGizmo);
public static Map<Player, Gizmo> gizmoMap = Maps.newHashMap();
public static Map<Player, Gizmo> purchasingMap = Maps.newHashMap();
@EventHandler(priority = EventPriority.HIGHEST)
public void openMenu(final PlayerInteractEvent event) {
if(event.getAction() == Action.PHYSICAL) return;
Player player = event.getPlayer();
if(player.getItemInHand().getType() == Material.GHAST_TEAR) {
GizmoUtils.openMenu(event.getPlayer());
purchasingMap.put(event.getPlayer(), null);
}
}
@EventHandler(priority = EventPriority.HIGHEST)
public void click(final InventoryClickEvent event) {
if(event.getCurrentItem() == null) return;
Player player = (Player) event.getWhoClicked();
if(!purchasingMap.containsKey(player)) return;
Material clicked = event.getCurrentItem().getType();
for(Gizmo gizmo : gizmos) {
if(clicked == gizmo.getIcon()) {
player.closeInventory();
if(gizmo.ownsGizmo(player)) {
GizmoUtils.setGizmo(player, gizmo, false);
} else if(purchasingMap.containsKey(player)) {
player.sendMessage(ChatColor.GOLD + LobbyTranslations.get().t("gizmo.currentlyPurchasing", player));
} else if(gizmo.canPurchase(player)) {
GizmoUtils.openShop(player, gizmo);
purchasingMap.put(player, gizmo);
} else {
player.sendMessage(gizmo.getNoPurchaseMessage(player));
}
break;
}
}
if(clicked == Material.DIAMOND) {
GizmoUtils.purchaseGizmo(player, purchasingMap.get(player));
} else if(clicked == Material.REDSTONE_BLOCK) {
GizmoUtils.cancelPurchase(player);
}
event.setCancelled(true);
}
@EventHandler
public void close(final InventoryCloseEvent event) {
purchasingMap.remove(event.getPlayer());
}
@EventHandler
public void logout(final PlayerQuitEvent event) {
gizmoMap.remove(event.getPlayer());
purchasingMap.remove(event.getPlayer());
}
}