299 lines
8.4 KiB
Java
299 lines
8.4 KiB
Java
|
//package mineplex.core.treasure;
|
||
|
//
|
||
|
//import java.util.Arrays;
|
||
|
//import java.util.Collections;
|
||
|
//import java.util.HashMap;
|
||
|
//import java.util.List;
|
||
|
//import java.util.Map;
|
||
|
//
|
||
|
//import org.bukkit.Bukkit;
|
||
|
//import org.bukkit.ChatColor;
|
||
|
//import org.bukkit.Effect;
|
||
|
//import org.bukkit.Location;
|
||
|
//import org.bukkit.Material;
|
||
|
//import org.bukkit.entity.Player;
|
||
|
//import org.bukkit.event.EventHandler;
|
||
|
//import org.bukkit.event.Listener;
|
||
|
//import org.bukkit.event.inventory.ClickType;
|
||
|
//import org.bukkit.event.player.PlayerInteractEvent;
|
||
|
//import org.bukkit.event.player.PlayerQuitEvent;
|
||
|
//
|
||
|
//import mineplex.core.Managers;
|
||
|
//import mineplex.core.common.util.C;
|
||
|
//import mineplex.core.common.util.F;
|
||
|
//import mineplex.core.common.util.MapUtil;
|
||
|
//import mineplex.core.common.util.UtilEvent;
|
||
|
//import mineplex.core.common.util.UtilEvent.ActionType;
|
||
|
//import mineplex.core.common.util.UtilMath;
|
||
|
//import mineplex.core.common.util.UtilServer;
|
||
|
//import mineplex.core.common.util.UtilText;
|
||
|
//import mineplex.core.common.util.UtilTextMiddle;
|
||
|
//import mineplex.core.hologram.Hologram;
|
||
|
//import mineplex.core.hologram.Hologram.HologramTarget;
|
||
|
//import mineplex.core.hologram.HologramManager;
|
||
|
//import mineplex.core.recharge.Recharge;
|
||
|
//import mineplex.core.treasure.event.TreasureFinishEvent;
|
||
|
//import mineplex.core.treasure.event.TreasureStartEvent;
|
||
|
//import mineplex.core.treasure.types.Treasure;
|
||
|
//import mineplex.core.treasure.types.TreasureType;
|
||
|
//import mineplex.core.treasure.ui.TreasureShop;
|
||
|
//import mineplex.core.updater.UpdateType;
|
||
|
//import mineplex.core.updater.event.UpdateEvent;
|
||
|
//
|
||
|
//public class TreasureLocation implements Listener
|
||
|
//{
|
||
|
//
|
||
|
// private static final HologramManager HOLOGRAM_MANAGER = Managers.require(HologramManager.class);
|
||
|
// private static final String HOLOGRAM_TEXT = C.cGreenB + "Open Treasure";
|
||
|
//
|
||
|
// private final TreasureManager _manager;
|
||
|
// private final Location _chest;
|
||
|
// private final List<Location> _chests;
|
||
|
// private final TreasureShop _shop;
|
||
|
// private final Map<Player, Hologram> _hologramMap;
|
||
|
//
|
||
|
// private TreasureSession _session;
|
||
|
// private boolean _colourTick;
|
||
|
//
|
||
|
// public TreasureLocation(TreasureManager manager, Location chest)
|
||
|
// {
|
||
|
// _manager = manager;
|
||
|
// _chest = chest;
|
||
|
// _chests = Arrays.asList(
|
||
|
// _chest.clone().add(3, 0, 1),
|
||
|
// _chest.clone().add(3, 0, -1),
|
||
|
// _chest.clone().add(-3, 0, 1),
|
||
|
// _chest.clone().add(-3, 0, -1),
|
||
|
// _chest.clone().add(1, 0, 3),
|
||
|
// _chest.clone().add(-1, 0, 3),
|
||
|
// _chest.clone().add(1, 0, -3),
|
||
|
// _chest.clone().add(-1, 0, -3)
|
||
|
// );
|
||
|
// _shop = new TreasureShop(manager, manager.getClientManager(), manager.getDonationManager(), this);
|
||
|
// _hologramMap = new HashMap<>();
|
||
|
//
|
||
|
// setHologramVisible(true);
|
||
|
// }
|
||
|
//
|
||
|
// @EventHandler
|
||
|
// public void playerInteract(PlayerInteractEvent event)
|
||
|
// {
|
||
|
// if (!UtilEvent.isAction(event, ActionType.R_BLOCK) || inUse())
|
||
|
// {
|
||
|
// return;
|
||
|
// }
|
||
|
//
|
||
|
// Location location = event.getClickedBlock().getLocation();
|
||
|
//
|
||
|
// if (UtilMath.offsetSquared(location, _chest) > 2)
|
||
|
// {
|
||
|
// return;
|
||
|
// }
|
||
|
//
|
||
|
// event.setCancelled(true);
|
||
|
// _shop.attemptShopOpen(event.getPlayer());
|
||
|
// }
|
||
|
//
|
||
|
// @EventHandler
|
||
|
// public void update(UpdateEvent event)
|
||
|
// {
|
||
|
// if (event.getType() != UpdateType.SEC || inUse())
|
||
|
// {
|
||
|
// return;
|
||
|
// }
|
||
|
//
|
||
|
// for (Player player : UtilServer.getPlayersCollection())
|
||
|
// {
|
||
|
// Hologram hologram = _hologramMap.get(player);
|
||
|
//
|
||
|
// if (hologram == null)
|
||
|
// {
|
||
|
// hologram = new Hologram(HOLOGRAM_MANAGER, _chest.clone().add(0, 1, 0), true, "")
|
||
|
// .setHologramTarget(HologramTarget.WHITELIST)
|
||
|
// .addPlayer(player)
|
||
|
// .setInteraction((interactor, clicktype) ->
|
||
|
// {
|
||
|
// if (clicktype == ClickType.LEFT)
|
||
|
// {
|
||
|
// return;
|
||
|
// }
|
||
|
//
|
||
|
// _shop.attemptShopOpen(player);
|
||
|
// })
|
||
|
// .start();
|
||
|
// _hologramMap.put(player, hologram);
|
||
|
// }
|
||
|
//
|
||
|
// String amountLine = _manager.getChestsToOpen(player) > 0 ? ((_colourTick ? C.cAqua : C.cDAqua) + _manager.getChestsToOpen(player) + " Chests to Open") : null;
|
||
|
//
|
||
|
// if (amountLine == null)
|
||
|
// {
|
||
|
// hologram.setText(HOLOGRAM_TEXT);
|
||
|
// }
|
||
|
// else
|
||
|
// {
|
||
|
// hologram.setText(amountLine, HOLOGRAM_TEXT);
|
||
|
// }
|
||
|
// }
|
||
|
//
|
||
|
// _colourTick = !_colourTick;
|
||
|
// }
|
||
|
//
|
||
|
// @EventHandler
|
||
|
// public void playerQuit(PlayerQuitEvent event)
|
||
|
// {
|
||
|
// Hologram hologram = _hologramMap.remove(event.getPlayer());
|
||
|
//
|
||
|
// if (hologram != null)
|
||
|
// {
|
||
|
// hologram.stop();
|
||
|
// }
|
||
|
// }
|
||
|
//
|
||
|
// public boolean openChest(Player player, Treasure treasure)
|
||
|
// {
|
||
|
// if (!Recharge.Instance.use(player, "Open Chest", 10000, false, false))
|
||
|
// {
|
||
|
// return false;
|
||
|
// }
|
||
|
//
|
||
|
// if (inUse())
|
||
|
// {
|
||
|
// player.closeInventory();
|
||
|
// player.sendMessage(F.main(getManager().getName(), "This station is already in use."));
|
||
|
// return false;
|
||
|
// }
|
||
|
//
|
||
|
// if (getManager().getChestsToOpen(player, treasure) <= 0)
|
||
|
// {
|
||
|
// player.sendMessage(F.main(getManager().getName(), "You do not have any " + F.name(treasure.getTreasureType().getName()) + " to open."));
|
||
|
// return false;
|
||
|
// }
|
||
|
//
|
||
|
// if (!treasure.isDuplicates() && getManager().getRewardManager().hasAllItems(player, treasure))
|
||
|
// {
|
||
|
// player.sendMessage(F.main(getManager().getName(), "You already have all the rewards possible for this chest."));
|
||
|
// return false;
|
||
|
// }
|
||
|
//
|
||
|
// if (!treasure.hasAnimations())
|
||
|
// {
|
||
|
// player.sendMessage(F.main(getManager().getName(), "It looks like there is no animation associated with that chest type. Please file a bug report."));
|
||
|
// return false;
|
||
|
// }
|
||
|
//
|
||
|
// TreasureSession session = new TreasureSession(player, this, treasure);
|
||
|
//
|
||
|
// if (session.hasFailed())
|
||
|
// {
|
||
|
// player.sendMessage(F.main(getManager().getName(), "Sorry, it looks like the rewards for the chest could not be generated."));
|
||
|
// return false;
|
||
|
// }
|
||
|
//
|
||
|
// getManager().getInventoryManager().addItemToInventory(success ->
|
||
|
// {
|
||
|
// // Need to check if it's inUse again since this is called in the future
|
||
|
// if (!success || inUse())
|
||
|
// {
|
||
|
// player.sendMessage(F.main(getManager().getName(), "It looks like something went wrong when processing your request. Please try again."));
|
||
|
// // Using the variation of addItemToInventory with a callback so our request is processed ASAP
|
||
|
// getManager().getInventoryManager().addItemToInventory(null, player, treasure.getTreasureType().getItemName(), 1);
|
||
|
// }
|
||
|
// else
|
||
|
// {
|
||
|
// _session = session;
|
||
|
//
|
||
|
// UtilServer.CallEvent(new TreasureStartEvent(player, _session));
|
||
|
//
|
||
|
// session.register();
|
||
|
// player.eject();
|
||
|
// player.leaveVehicle();
|
||
|
// player.teleport(_chest);
|
||
|
// prepareChestArea();
|
||
|
//
|
||
|
// String treasureName = treasure.getTreasureType().getName();
|
||
|
//
|
||
|
// if (treasure.getTreasureType() != TreasureType.OLD)
|
||
|
// {
|
||
|
// boolean an = UtilText.startsWithVowel(ChatColor.stripColor(treasureName));
|
||
|
// Bukkit.broadcastMessage(F.main(getManager().getName(), F.name(player.getName()) + " is opening " + (an ? "an" : "a") + " " + F.name(treasureName) + "."));
|
||
|
// }
|
||
|
//
|
||
|
// UtilTextMiddle.display(treasureName, "Choose " + C.cYellow + treasure.getRewardsPerChest() + C.cWhite + " to open", 10, 30, 10, player);
|
||
|
// }
|
||
|
// }, player, treasure.getTreasureType().getItemName(), -1);
|
||
|
//
|
||
|
// return true;
|
||
|
// }
|
||
|
//
|
||
|
// public void cleanup()
|
||
|
// {
|
||
|
// if (_session == null)
|
||
|
// {
|
||
|
// return;
|
||
|
// }
|
||
|
//
|
||
|
// for (Location location : _chests)
|
||
|
// {
|
||
|
// location.getWorld().playEffect(location, Effect.STEP_SOUND, location.getBlock().getType());
|
||
|
// MapUtil.QuickChangeBlockAt(location, Material.AIR);
|
||
|
// }
|
||
|
//
|
||
|
// TreasureFinishEvent finishEvent = new TreasureFinishEvent(_session.getPlayer(), _session);
|
||
|
// UtilServer.CallEvent(finishEvent);
|
||
|
//
|
||
|
// _session = null;
|
||
|
// setHologramVisible(true);
|
||
|
// }
|
||
|
//
|
||
|
// private void prepareChestArea()
|
||
|
// {
|
||
|
// _session.pushEntitiesAway();
|
||
|
// setHologramVisible(false);
|
||
|
// }
|
||
|
//
|
||
|
// private void setHologramVisible(boolean visible)
|
||
|
// {
|
||
|
// if (visible)
|
||
|
// {
|
||
|
// MapUtil.QuickChangeBlockAt(_chest, Material.CHEST);
|
||
|
// _hologramMap.values().forEach(Hologram::start);
|
||
|
// }
|
||
|
// else
|
||
|
// {
|
||
|
// MapUtil.QuickChangeBlockAt(_chest, Material.AIR);
|
||
|
// _hologramMap.values().forEach(Hologram::stop);
|
||
|
// }
|
||
|
// }
|
||
|
//
|
||
|
// public boolean inUse()
|
||
|
// {
|
||
|
// return _session != null;
|
||
|
// }
|
||
|
//
|
||
|
// public Location getChest()
|
||
|
// {
|
||
|
// return _chest;
|
||
|
// }
|
||
|
//
|
||
|
// public List<Location> getChestLocations()
|
||
|
// {
|
||
|
// return Collections.unmodifiableList(_chests);
|
||
|
// }
|
||
|
//
|
||
|
// public TreasureManager getManager()
|
||
|
// {
|
||
|
// return _manager;
|
||
|
// }
|
||
|
//
|
||
|
// public TreasureSession getSession()
|
||
|
// {
|
||
|
// return _session;
|
||
|
// }
|
||
|
//
|
||
|
// public TreasureShop getShop()
|
||
|
// {
|
||
|
// return _shop;
|
||
|
// }
|
||
|
//}
|