magic stick queues up to remove item from inventory

This commit is contained in:
SuperRonanCraft 2020-11-20 16:58:15 -05:00
parent 5ce3a43d87
commit 406d6b1316
8 changed files with 94 additions and 10 deletions

View File

@ -18,7 +18,7 @@ import java.util.Map;
//When rtp'ing, a player will be teleported back to old location after a set amount of time
public class AddonFlashback implements Addon, Listener {
private String name = "Flashback";
private final String name = "Flashback";
private Long time;
public final FlashbackMessages msgs = new FlashbackMessages();
@ -66,8 +66,7 @@ public class AddonFlashback implements Addon, Listener {
}
@EventHandler
void onTeleport(RTP_TeleportPostEvent e) {
System.out.println("Player " + e.getPlayer().getName() + " was rtp'd!");
void onTeleport(RTP_TeleportPostEvent e) { //Create a timer to teleport player back
if (e.getType() != RTP_TYPE.ADDON_PORTAL)
players.add(new FlashbackPlayer(this, e.getPlayer(), e.getOldLocation(), time));
}

View File

@ -2,18 +2,23 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent;
import me.SuperRonanCraft.BetterRTPAddons.Main;
import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds.MagicStickCommand;
import me.SuperRonanCraft.BetterRTPAddons.util.Files;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.function.Consumer;
@ -23,6 +28,8 @@ public class MagicStickEvents implements Listener {
public ItemStack item;
boolean take;
private final List<PlayerListener> teleportingPlayers = new ArrayList<>();
void load() {
Bukkit.getPluginManager().registerEvents(this, Main.getInstance());
Files.FILETYPE file = Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG);
@ -50,10 +57,49 @@ public class MagicStickEvents implements Listener {
ItemStack eItem = e.getItem();
if (eItem != null && eItem.getType() == item.getType()) {
if (Objects.equals(eItem.getItemMeta(), item.getItemMeta())) {
BetterRTP.getInstance().getCmd().tp(e.getPlayer(), e.getPlayer(), e.getPlayer().getWorld().getName(), null, RTP_TYPE.ADDON);
//Not currently rtp'ing
for (PlayerListener listener : teleportingPlayers)
if (listener.p == e.getPlayer())
return;
//Rtp the player
BetterRTP.getInstance().getCmd().tp(e.getPlayer(), e.getPlayer(), e.getPlayer().getWorld().getName(), null, RTP_TYPE.ADDON_MAGICSTICK);
if (this.take)
teleportingPlayers.add(new PlayerListener(e.getPlayer()));
}
}
}
}
private class PlayerListener implements Listener {
Player p;
PlayerListener(Player p) {
this.p = p;
load();
}
void load() {
Bukkit.getServer().getPluginManager().registerEvents(this, Main.getInstance());
}
void unload() {
HandlerList.unregisterAll(this);
}
@EventHandler
void tp(RTP_TeleportPostEvent e) {
if (e.getPlayer() == p && e.getType() == RTP_TYPE.ADDON_MAGICSTICK) {
teleportingPlayers.remove(this);
e.getPlayer().getInventory().removeItem(item);
this.unload();
}
}
@EventHandler
void drop(PlayerDropItemEvent e) {
if (e.getPlayer() == p)
e.setCancelled(true);
}
}
}

View File

@ -14,4 +14,12 @@ public class MagicStickMessages implements AddonsMessages {
public void getGive(CommandSender sendi, String name) {
sms(sendi, getLang().getString(preM + "Give").replace("%name%", name));
}
public void getGiven(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "Given"));
}
public void getPlayerError(CommandSender sendi, String name) {
sms(sendi, getLang().getString(preM + "Player").replace("%player%", name));
}
}

View File

@ -3,6 +3,8 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds;
import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.AddonMagicStick;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInfo;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -10,7 +12,28 @@ public class MagicStickCommand_Give implements MagicStickCommands {
@Override
public void execute(CommandSender sendi, String label, String[] args, AddonMagicStick addon) {
Player p = (Player) sendi;
p.getWorld().dropItem(p.getLocation(), addon.events.item.clone());
if (args.length <= 2 && !(sendi instanceof Player)) {
sendi.sendMessage("Console is not able to give themself this item!");
return;
}
if (args.length <= 2) {
Player p = (Player) sendi;
p.getInventory().addItem(addon.events.item.clone());
addon.msgs.getGiven(sendi);
} else {
Player p = null;
for (Player plr : Bukkit.getOnlinePlayers()) {
if (plr.getName().startsWith(args[2])) {
p = plr;
break;
}
}
if (p != null) {
p.getInventory().addItem(addon.events.item.clone());
addon.msgs.getGiven(sendi);
addon.msgs.getGive(sendi, p.getName());
} else
addon.msgs.getPlayerError(sendi, args[2]);
}
}
}

View File

@ -75,4 +75,8 @@ public class PortalsMessages implements AddonsMessages {
public void usageRemove(CommandSender sendi, String label) {
sms(sendi, getLang().getString(preM + "Usage.Remove").replace("%command%", label));
}
public void usageBase(CommandSender sendi, String label) {
sms(sendi, getLang().getString(preM + "Usage.Base").replace("%command%", label));
}
}

View File

@ -31,7 +31,7 @@ public class PortalsCommand implements RTPCommand, RTPCommandHelpable {
return;
}
}
sendi.sendMessage("Invalid argument!");
pl.msgs.usageBase(sendi, label);
}
@Override

View File

@ -1,5 +1,5 @@
Flashback:
Warning: '&6This Teleport is temporary! &7You will be teleported back soon...'
Warning: '&7This random teleport was temporary! You were teleported back to your original location.'
Portals:
Created:
Confirm: '&7Portal &a%name% &7has been created!'
@ -18,10 +18,13 @@ Portals:
Portal: ' &7- &6%name% &8| &7%location%'
None: '&7There are no portals! &8Create one with `/rtp portals create`'
MagicStick:
Give: '&7Magic Stick has been given to &a%player%'
Give: '&dMagic Stick&7 has been given to &a%player%'
Given: '&7A &dMagic Stick&7 has been given to you'
Player: '&cWhoops! &7Seems like their is no player by the name of &a%player% &7online!'
Usage:
Portals:
Base: '&cUsage: &7/%command% portals <remove, create, loc1, loc2>'
Remove: '&cUsage: &7/%command% portals remove <portal_name>'

View File

@ -5,5 +5,6 @@ public enum RTP_TYPE {
FORCED, //Player was forced to rtp (/rtp player <player>)
JOIN, //Player joined and was rtp'd automatically
ADDON, //Player RTP'd from the external addons plugin
ADDON_PORTAL //Player RTP'd from the external addons (Portals)
ADDON_PORTAL, //Player RTP'd from the external addons (Portals)
ADDON_MAGICSTICK, //Player RTP'd from the external addons (MagicStick)
}