diff --git a/BetterRTPAddons/pom.xml b/BetterRTPAddons/pom.xml index cd0b31c..fc1234b 100644 --- a/BetterRTPAddons/pom.xml +++ b/BetterRTPAddons/pom.xml @@ -7,7 +7,7 @@ me.SuperRonanCraft BetterRTPAddons jar - 1.6 + 1.7 1.8 diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyData.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyData.java index 3e016da..840b41f 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyData.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyData.java @@ -6,6 +6,7 @@ import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportEvent; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent; +import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerTeleportEvent; @@ -18,7 +19,7 @@ import java.util.List; public class PartyData { @Getter private final Player leader; - private HashMap members = new HashMap<>(); + private final HashMap members = new HashMap<>(); public PartyData(Player leader) { this.leader = leader; @@ -69,16 +70,26 @@ public class PartyData { } public void tpAll(RTP_TeleportPostEvent e) { + CooldownData cooldownData = BetterRTP.getInstance().getPlayerDataManager().getData(getLeader()).getCooldown(); members.forEach((p, ready) -> { - Location loc = e.getLocation(); - //Async tp players - PaperLib.teleportAsync(p, loc, PlayerTeleportEvent.TeleportCause.PLUGIN).thenRun(() -> - BetterRTP.getInstance().getText().getSuccessBypass(p, - String.valueOf(loc.getBlockX()), - String.valueOf(loc.getBlockY()), - String.valueOf(loc.getBlockZ()), - loc.getWorld().getName(), - 1)); + if (!p.equals(getLeader())) { + Location loc = e.getLocation(); + //Async tp players + PaperLib.teleportAsync(p, loc, PlayerTeleportEvent.TeleportCause.PLUGIN).thenRun(() -> + BetterRTP.getInstance().getText().getSuccessBypass(p, + String.valueOf(loc.getBlockX()), + String.valueOf(loc.getBlockY()), + String.valueOf(loc.getBlockZ()), + loc.getWorld().getName(), + 1)); + //Set cooldowns + if (cooldownData != null) + BetterRTP.getInstance().getPlayerDataManager().getData(p).setCooldown(new CooldownData(p.getUniqueId(), cooldownData.getTime(), cooldownData.getUses())); + } }); } + + public boolean isMember(Player member) { + return this.members.containsKey(member); + } } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyHandler.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyHandler.java index 0e1601d..9c37f82 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyHandler.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyHandler.java @@ -19,7 +19,7 @@ public class PartyHandler implements Listener { e.setCancelled(true); } //else rtp! } else { - AddonParty.getInstance().msgs.getOnlyLeader(e.getPlayer(), party.getLeader()); + AddonParty.getInstance().msgs.getOnlyLeader(e.getPlayer(), party.getLeader().getName()); e.setCancelled(true); } } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyMessages.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyMessages.java index 7fcd0f5..9f093b1 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyMessages.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyMessages.java @@ -8,14 +8,21 @@ import org.bukkit.entity.Player; public class PartyMessages implements AddonsMessages { private static final String preM = "Party."; - public void getOnlyLeader(CommandSender sendi, Player leader) { - sms(sendi, getLang().getString(preM + "OnlyLeader").replace("%name%", leader.getName())); + public void getOnlyLeader(CommandSender sendi, String leader) { + sms(sendi, getLang().getString(preM + "OnlyLeader").replace("%name%", leader)); } public String getHelp() { return getLang().getString("Help.Party"); } + public void getNotInParty(CommandSender sendi) { + sms(sendi, getLang().getString(preM + "NotInParty")); + } + + public void getNotExist(CommandSender sendi, String name) { + sms(sendi, getLang().getString(preM + "NotExist").replace("%name%", name)); + } //Invite public void getInvite(CommandSender sendi, String name) { @@ -24,22 +31,45 @@ public class PartyMessages implements AddonsMessages { //Usages - 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)); } + public void usageKick(CommandSender sendi, String label) { + sms(sendi, getLang().getString(preM + "Usage.Kick").replace("%command%", label)); + } + + public void usageAccept(CommandSender sendi, String label) { + sms(sendi, getLang().getString(preM + "Usage.Accept").replace("%command%", label)); + } + + public void usageInvite(CommandSender sendi, String label) { + sms(sendi, getLang().getString(preM + "Usage.Invite").replace("%command%", label)); + } + //Members public void getMembers_NotReady(CommandSender sendi, String members) { sms(sendi, getLang().getString(preM + "Members.NotReady").replace("%members%", members)); } + public void getMembers_NotInParty(CommandSender sendi, String name) { + sms(sendi, getLang().getString(preM + "Members.NotInParty").replace("%name%", name)); + } + public void getMembers_Ready(CommandSender sendi) { sms(sendi, getLang().getString(preM + "Members.Ready")); } + + //Kick + + public void getKick_Kicked(CommandSender sendi, String kicked) { + sms(sendi, getLang().getString(preM + "Kick.Kicked").replace("%name%", kicked)); + } + + public void getKick_Notification(CommandSender sendi, String leader) { + sms(sendi, getLang().getString(preM + "Kick.Notification").replace("%name%", leader)); + } + //Teleporting public void getTeleporting(CommandSender sendi) { sms(sendi, getLang().getString(preM + "Teleport")); diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Kick.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Kick.java new file mode 100644 index 0000000..5820f27 --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Kick.java @@ -0,0 +1,36 @@ +package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.cmds; + +import me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.AddonParty; +import me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.HelperParty; +import me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.PartyData; +import me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.PartyMessages; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class PartyCommand_Kick implements PartyCommands { + + @Override + public void execute(CommandSender sendi, String label, String[] args, AddonParty addon) { + Player p = (Player) sendi; + PartyMessages msgs = AddonParty.getInstance().msgs; + PartyData party = HelperParty.getParty(p); + if (party != null) { + if (party.isLeader(p)) { + if (args.length >= 3) { + Player member = Bukkit.getPlayer(args[2]); + if (member != null) { + if (party.isMember(member)) { + msgs.getKick_Kicked(sendi, member.getName()); + } else + msgs.getMembers_NotInParty(sendi, member.getName()); + } else + msgs.getNotExist(sendi, args[2]); + } else + msgs.usageKick(sendi, label); + } else + msgs.getOnlyLeader(sendi, party.getLeader().getName()); + } else + msgs.getNotInParty(sendi); + } +} diff --git a/BetterRTPAddons/src/main/resources/lang/en.yml b/BetterRTPAddons/src/main/resources/lang/en.yml index a64ee74..f9266b7 100644 --- a/BetterRTPAddons/src/main/resources/lang/en.yml +++ b/BetterRTPAddons/src/main/resources/lang/en.yml @@ -28,13 +28,25 @@ MagicStick: 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!' Party: + NotInParty: '&cYou can''t do this! You are not in a party...' Invite: '&f%player_name% has been invited to an rtp party!' Invited: '&f%player_name% has invited you to join their rtp party!' OnlyLeader: '&cOnly the leader &f%name% &ccan make an RTP request!' Teleport: '&fYou''ve been rtp''d because of your party!' + NotExist: '&eThe player &f%name% &eis either offline or doesn''t exist!' Members: Ready: '&eYou have readied up for the next party rtp!' NotReady: '&cNot all members are ready! &7%members%' + NotInParty: '&eThe player &f%name% &eis not in the party!' + Kick: + Kicked: '&fPlayer &e%name% &fhas been kicked!' + Notification: '&cYou''ve been kicked from an RTP party!' + LeaderQuit: '&cRTP Party leader has quit the game, party destroyed!' + Usage: + Base: '&cUsage: &7/%command% party ' + Accept: '&cUsage: &7/%command% portals accept ' + Invite: '&cUsage: &7/%command% portals invite ' + Kick: '&cUsage: &7/%command% portals kick ' Addons: List: Prefix: '&e&m-----&6&l BetterRTP &7&lAddons &8| Addons Info &e&m-----'