Mineplex/GOD DAMN COSMETICS/gadget/gadgets/item/GameItemGadget.java
Daniel Waggner 38a20f98c2 Removed Files
These two directories contain code that was removed from the src and dependencies of the compiled files. They were removed due to being either a. unnecessary or b. a royal pain in my booty.
2021-05-23 18:13:37 -07:00

123 lines
3.9 KiB
Java

package mineplex.core.gadget.gadgets.item;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import mineplex.core.common.Pair;
import mineplex.core.common.jsonchat.ClickEvent;
import mineplex.core.common.jsonchat.HoverEvent;
import mineplex.core.common.jsonchat.JsonMessage;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.common.util.UtilTime;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.gadgets.Ammo;
import mineplex.core.gadget.types.ItemGadget;
public abstract class GameItemGadget extends ItemGadget
{
private static final long COOLDOWN_INVITE = TimeUnit.SECONDS.toMillis(8);
protected final Map<String, Pair<String, Long>> _invites;
private final String _command;
public GameItemGadget(GadgetManager manager, String name, String[] desc, int cost, Material mat, byte data, Ammo ammo)
{
super(manager, name, desc, cost, mat, data, COOLDOWN_INVITE, ammo);
_invites = new HashMap<>(3);
_command = "/play-" + name.toLowerCase().replace(" ", "-");
}
@Override
public void ActivateCustom(Player player)
{
for (Player nearby : UtilPlayer.getNearby(player.getLocation(), 3))
{
if (player.equals(nearby))
{
continue;
}
sendGameInvite(nearby, player);
return;
}
}
protected abstract void startGame(Player invitee, Player inviter);
private void sendGameInvite(Player invitee, Player inviter)
{
inviter.sendMessage(F.main(Manager.getName(), "You challenged " + F.name(invitee.getName()) + " to play " + F.name(getName()) + "!"));
new JsonMessage(F.main(Manager.getName(), F.color("CLICK HERE", C.cYellowB) + " to play " + F.name(getName()) + " with " + F.name(inviter.getName()) + "!"))
.hover(HoverEvent.SHOW_TEXT, C.cYellow + "Click to play " + F.name(getName()) + " with " + F.name(inviter.getName()))
.click(ClickEvent.RUN_COMMAND, _command + " " + inviter.getName())
.sendToPlayer(invitee);
invitee.playSound(invitee.getLocation(), Sound.NOTE_PIANO, 1, 1);
inviter.playSound(inviter.getLocation(), Sound.NOTE_PIANO, 1, 1);
_invites.put(inviter.getName(), Pair.create(invitee.getName(), System.currentTimeMillis()));
}
@EventHandler
public void commandProcess(PlayerCommandPreprocessEvent event)
{
String command = event.getMessage();
String[] split = command.split(" ");
if (split.length != 2 || !split[0].equals(_command))
{
return;
}
event.setCancelled(true);
Player caller = event.getPlayer();
String player = split[1];
Pair<String, Long> pair = _invites.get(player);
if (pair == null || !pair.getLeft().equals(caller.getName()) || UtilTime.elapsed(pair.getRight(), COOLDOWN_INVITE))
{
return;
}
Player inviter = UtilPlayer.searchExact(player);
if (inviter == null)
{
caller.sendMessage(F.main(Manager.getName(), "Looks like the player who challenged you is no longer online."));
return;
}
_invites.remove(player);
caller.sendMessage(F.main(Manager.getName(), F.name(inviter.getName()) + " challenged you to a game of " + F.name(getName()) + "!"));
inviter.sendMessage(F.main(Manager.getName(), "You challenged " + F.name(caller.getName()) + " to a game of " + F.name(getName()) + "!"));
startGame(caller, inviter);
}
protected void endGame(Player winner, Player loser)
{
UtilTextMiddle.display(C.cYellowB + "YOU WON", "", 10, 30, 10, winner);
UtilTextMiddle.display(C.cRedB + "YOU LOST", "", 10, 30, 10, loser);
winner.getWorld().playSound(winner.getLocation(), Sound.VILLAGER_YES, 1, 1);
loser.getWorld().playSound(winner.getLocation(), Sound.VILLAGER_NO, 1, 1);
}
protected void drawGame(Player... players)
{
UtilTextMiddle.display(C.cRedB + "DRAW", "", 10, 30, 10, players);
}
}