mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-08-17 09:05:47 +00:00
magic stick queues up to remove item from inventory
This commit is contained in:
parent
5ce3a43d87
commit
406d6b1316
@ -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));
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
@ -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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ public class PortalsCommand implements RTPCommand, RTPCommandHelpable {
|
||||
return;
|
||||
}
|
||||
}
|
||||
sendi.sendMessage("Invalid argument!");
|
||||
pl.msgs.usageBase(sendi, label);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -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>'
|
||||
|
||||
|
||||
|
@ -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)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user