From 1ef7fe89599574050e5db4e274e542720e6a3359 Mon Sep 17 00:00:00 2001 From: RonanCraft Date: Thu, 3 Mar 2022 16:57:21 -0500 Subject: [PATCH] party accept/readyup + api RTP_EventSettingUp fix --- .../addons/partyrtp/AddonParty.java | 6 +- .../addons/partyrtp/PartyData.java | 10 +-- .../addons/partyrtp/PartyMessages.java | 37 +++++++++-- .../partyrtp/cmds/PartyCommand_Accept.java | 64 ++++++++++++++++++- .../partyrtp/cmds/PartyCommand_Invite.java | 2 +- .../partyrtp/cmds/PartyCommand_Kick.java | 2 +- .../partyrtp/cmds/PartyCommand_Leave.java | 2 +- .../partyrtp/cmds/PartyCommand_ReadyUp.java | 16 ++++- BetterRTPAddons/src/main/resources/config.yml | 6 +- .../src/main/resources/lang/en.yml | 25 +++++--- .../BetterRTP/player/rtp/RTP.java | 6 +- .../BetterRTP/player/rtp/RTPPlayer.java | 2 + 12 files changed, 151 insertions(+), 27 deletions(-) diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/AddonParty.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/AddonParty.java index bb9f8f6..90151fc 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/AddonParty.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/AddonParty.java @@ -5,6 +5,7 @@ import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import me.SuperRonanCraft.BetterRTPAddons.Addon; import me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.cmds.PartyCommand; import me.SuperRonanCraft.BetterRTPAddons.util.Files; +import org.bukkit.plugin.PluginManager; import java.util.ArrayList; import java.util.List; @@ -12,10 +13,11 @@ import java.util.List; public class AddonParty implements Addon { private static AddonParty instance; - private final String name = "PartyRTP"; + private final String name = "Parties"; private final PartyCommand cmd = new PartyCommand(this); public PartyMessages msgs = new PartyMessages(); public List parties = new ArrayList<>(); + private final PartyHandler handler = new PartyHandler(); @Override public boolean isEnabled() { @@ -26,6 +28,8 @@ public class AddonParty implements Addon { public void load() { instance = this; BetterRTP.getInstance().getCmd().registerCommand(cmd, false); + PluginManager pm = BetterRTP.getInstance().getServer().getPluginManager(); + pm.registerEvents(handler, BetterRTP.getInstance()); } @Override 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 ca030f6..18dc99f 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 @@ -35,7 +35,7 @@ public class PartyData { } public boolean invite(Player p) { - if (!invited.contains(p)) { + if (!invited.contains(p) && !members.containsKey(p)) { invited.add(p); return true; } @@ -87,13 +87,15 @@ public class PartyData { if (!p.equals(getLeader())) { Location loc = e.getLocation(); //Async tp players - PaperLib.teleportAsync(p, loc, PlayerTeleportEvent.TeleportCause.PLUGIN).thenRun(() -> - BetterRTP.getInstance().getText().getSuccessBypass(p, + 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)); + 1);*/ + BetterRTP.getInstance().getRTP().getTeleport().afterTeleport(p, loc, 0, 0, e.getOldLocation(), e.getType()); + }); //Set cooldowns if (cooldownData != null) BetterRTP.getInstance().getPlayerDataManager().getData(p).setCooldown(new CooldownData(p.getUniqueId(), cooldownData.getTime(), cooldownData.getUses())); 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 45b84fe..5e8b0dd 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 @@ -55,6 +55,19 @@ public class PartyMessages implements AddonsMessages { sms(sendi, getLang().getString(preM + "Usage.Invite").replace("%command%", label)); } + //Ready + public void getReady_Readied(CommandSender sendi) { + sms(sendi, getLang().getString(preM + "Ready.Readied")); + } + + public void getReady_Already(CommandSender sendi) { + sms(sendi, getLang().getString(preM + "Ready.Already")); + } + + public void getReady_Leader(CommandSender sendi) { + sms(sendi, getLang().getString(preM + "Ready.Leader")); + } + //Members public void getMembers_NotReady(CommandSender sendi, String members) { sms(sendi, getLang().getString(preM + "Members.NotReady").replace("%members%", members)); @@ -64,10 +77,6 @@ public class PartyMessages implements AddonsMessages { sms(sendi, getLang().getString(preM + "Members.NotInParty").replace("%name%", name)); } - public void getMembers_Ready(CommandSender sendi) { - sms(sendi, getLang().getString(preM + "Members.Ready")); - } - public void getMembers_LeaderLeft(CommandSender sendi) { sms(sendi, getLang().getString(preM + "Members.LeaderLeft")); } @@ -85,6 +94,26 @@ public class PartyMessages implements AddonsMessages { sms(sendi, getLang().getString(preM + "Kick.Notification").replace("%name%", leader)); } + public void getKick_OnlyLeader(CommandSender sendi, String leader) { + sms(sendi, getLang().getString(preM + "Kick.OnlyLeader").replace("%name%", leader)); + } + //Accept + public void getAccept_NoInvites(CommandSender sendi) { + sms(sendi, getLang().getString(preM + "Accept.NoInvites")); + } + + public void getAccept_Success(CommandSender sendi, String leader) { + sms(sendi, getLang().getString(preM + "Accept.Success").replace("%name%", leader)); + } + + public void getAccept_Notification(CommandSender sendi, String member) { + sms(sendi, getLang().getString(preM + "Accept.Notification").replace("%name%", member)); + } + + public void getAccept_InAParty(CommandSender sendi) { + sms(sendi, getLang().getString(preM + "Accept.InAParty")); + } + //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_Accept.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Accept.java index 5f115a6..0e301fd 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Accept.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Accept.java @@ -1,17 +1,79 @@ 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.portals.region.PortalsRegionInfo; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; import java.util.ArrayList; import java.util.List; -public class PartyCommand_Accept implements PartyCommands { +public class PartyCommand_Accept implements PartyCommands, PartyCommandsTabable { @Override public void execute(CommandSender sendi, String label, String[] args, AddonParty addon) { + Player p = (Player) sendi; + if (HelperParty.isInParty(p)) { + AddonParty.getInstance().msgs.getAccept_InAParty(sendi); + return; + } + Player leader = null; + if (args.length >= 3) { + leader = Bukkit.getPlayer(args[2]); + if (leader == null) { + AddonParty.getInstance().msgs.getNotExist(sendi, args[2]); + return; + } + } else { + AddonParty.getInstance().msgs.usageAccept(sendi, label); + return; + } + //List invites + List invites = new ArrayList<>(); + for (PartyData party : AddonParty.getInstance().parties) { + for (Player invited_player : party.getInvited()) + if (invited_player.equals(p)) + invites.add(party); + } + if (!invites.isEmpty()) { + for (PartyData party : invites) { + if (party.getLeader().equals(leader)) { + party.add(p); + party.getInvited().remove(p); + //Success Message + AddonParty.getInstance().msgs.getAccept_Success(sendi, party.getLeader().getName()); + party.getMembers().forEach((member, ready) -> { //Message of new party member + if (!member.equals(p)) + AddonParty.getInstance().msgs.getAccept_Notification(member, p.getName()); + }); + //Party Leader Message + AddonParty.getInstance().msgs.getAccept_Notification(party.getLeader(), p.getName()); + } + } + } else + AddonParty.getInstance().msgs.getAccept_NoInvites(sendi); + } + + @Override + public List tabComplete(CommandSender sendi, String[] args, AddonParty addon) { + List list = new ArrayList<>(); + if (args.length == 3) { + List invites = new ArrayList<>(); + for (PartyData party : AddonParty.getInstance().parties) { + for (Player invited_player : party.getInvited()) + if (invited_player.equals(sendi)) + invites.add(party.getLeader()); + } + for (Player leader : invites) { + if (leader.getName().toLowerCase().startsWith(args[2].toLowerCase()) && !leader.equals(sendi)) + list.add(leader.getName()); + } + } + return list; } } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Invite.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Invite.java index b97fe91..7ab32aa 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Invite.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Invite.java @@ -29,7 +29,7 @@ public class PartyCommand_Invite implements PartyCommands, PartyCommandsTabable AddonParty.getInstance().msgs.getInvite_Invited(sendi, member.getName()); AddonParty.getInstance().msgs.getInvite_Notification(member, p.getName()); } else - AddonParty.getInstance().msgs.getInvite_Already(member, p.getName()); + AddonParty.getInstance().msgs.getInvite_Already(sendi, member.getName()); } else AddonParty.getInstance().msgs.getOnlyLeader(sendi, party.getLeader().getName()); } else 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 index c998357..00584b4 100644 --- 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 @@ -34,7 +34,7 @@ public class PartyCommand_Kick implements PartyCommands, PartyCommandsTabable { } else msgs.usageKick(sendi, label); } else - msgs.getOnlyLeader(sendi, party.getLeader().getName()); + msgs.getKick_OnlyLeader(sendi, party.getLeader().getName()); } else msgs.getNotInParty(sendi); } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Leave.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Leave.java index c5ec17a..11f388c 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Leave.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Leave.java @@ -13,7 +13,7 @@ public class PartyCommand_Leave implements PartyCommands { Player p = (Player) sendi; PartyData party = HelperParty.getParty(p); if (party != null) { - if (party.isLeader(p)) { + if (party.isLeader(p)) { //Leader deleted party AddonParty.getInstance().parties.remove(party); for (Player member : party.getMembers().keySet()) AddonParty.getInstance().msgs.getMembers_LeaderLeft(member); diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_ReadyUp.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_ReadyUp.java index 910772e..8d9b9fc 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_ReadyUp.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_ReadyUp.java @@ -1,12 +1,26 @@ 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 org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; public class PartyCommand_ReadyUp implements PartyCommands { @Override public void execute(CommandSender sendi, String label, String[] args, AddonParty addon) { - + Player p = (Player) sendi; + PartyData party = HelperParty.getParty(p); + if (party != null) { + if (!party.isLeader(p)) { + if (party.readyUp(p)) + AddonParty.getInstance().msgs.getReady_Readied(sendi); + else + AddonParty.getInstance().msgs.getReady_Already(sendi); + } else + AddonParty.getInstance().msgs.getReady_Leader(sendi); + } else + AddonParty.getInstance().msgs.getNotInParty(sendi); } } diff --git a/BetterRTPAddons/src/main/resources/config.yml b/BetterRTPAddons/src/main/resources/config.yml index ff2c0db..b4596a3 100644 --- a/BetterRTPAddons/src/main/resources/config.yml +++ b/BetterRTPAddons/src/main/resources/config.yml @@ -2,7 +2,7 @@ Language-File: 'en.yml' ##Addon Flashback Flashback: - Enabled: true + Enabled: false Timer: Delay: 600 #In Seconds Warnings: #Warning messages to send to a player when X amount of time is left @@ -56,5 +56,5 @@ Commands: Commands: - 'broadcast &e%player_name% moved while trying to rtp, chump!' -PartyRTP: - Enabled: false \ No newline at end of file +Parties: + Enabled: true \ No newline at end of file diff --git a/BetterRTPAddons/src/main/resources/lang/en.yml b/BetterRTPAddons/src/main/resources/lang/en.yml index cfd3552..f721207 100644 --- a/BetterRTPAddons/src/main/resources/lang/en.yml +++ b/BetterRTPAddons/src/main/resources/lang/en.yml @@ -33,24 +33,33 @@ Party: 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!' LeaderLeft: '&cParty leader quit! &fParty no longer exists' Leave: '&7You have left %name%''s rtp party!' + Ready: + Readied: '&eYou have readied up for the next party rtp!' + Already: '&7You are already ready! &8Lmao' + Leader: '&cYou are the leader... you are always ready!' Kick: + OnlyLeader: '&cOnly the leader &f%name% &ccan kick a member!' Kicked: '&fPlayer &e%name% &fhas been kicked!' Notification: '&cYou''ve been kicked from the RTP party by %name%!' LeaderQuit: '&cParty leader has destroyed the party!' Invite: - Already: '&e%name% is already been invited!' - Invited: '&f%name% has been invited to your rtp party!' - Notification: '&f%player_name% has invited you to join their rtp party!' + Already: '&7%name% &ehas already been invited!' + Invited: '&7%name% &fhas been invited to your rtp party!' + Notification: '&7%name% &fhas invited you to join their rtp party!' + Accept: + NoInvites: '&cYou don''t have any pending invites :(' + Success: '&aSuccessfully joined &7%name%''s &artp party!' + Notification: '&7%name% &ahas joined the rtp party!' + InAParty: '&cCannot join another rtp party while in one!' Usage: - Base: '&cUsage: &7/%command% party ' - Accept: '&cUsage: &7/%command% portals accept ' - Invite: '&cUsage: &7/%command% portals invite ' - Kick: '&cUsage: &7/%command% portals kick ' + Base: '&cUsage: &7/%command% party ' + Accept: '&cUsage: &7/%command% party accept ' + Invite: '&cUsage: &7/%command% party invite ' + Kick: '&cUsage: &7/%command% party kick ' Addons: List: Prefix: '&e&m-----&6&l BetterRTP &7&lAddons &8| Addons Info &e&m-----' diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java index a2e2989..1b0b84b 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java @@ -1,6 +1,7 @@ package me.SuperRonanCraft.BetterRTP.player.rtp; import lombok.Getter; +import me.RonanCraft.Pueblos.resources.tools.HelperEvent; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_SettingUpEvent; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; @@ -112,8 +113,9 @@ public class RTP { } public void start(RTPSetupInformation setup_info) { - - if (new RTP_SettingUpEvent(setup_info.player).isCancelled()) { + RTP_SettingUpEvent setup = new RTP_SettingUpEvent(setup_info.player); + Bukkit.getPluginManager().callEvent(setup); + if (setup.isCancelled()) { return; } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPlayer.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPlayer.java index 8c75c1e..2872e31 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPlayer.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPlayer.java @@ -4,6 +4,7 @@ import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_FindLocationEven import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldPlayer; import io.papermc.lib.PaperLib; import me.SuperRonanCraft.BetterRTP.BetterRTP; +import org.bukkit.Bukkit; import org.bukkit.Chunk; import org.bukkit.Location; import org.bukkit.World; @@ -41,6 +42,7 @@ public class RTPPlayer { else { //Try again to find a safe location //Find a queue'd location RTP_FindLocationEvent event = new RTP_FindLocationEvent(p, pWorld); //Find a queue'd location + Bukkit.getServer().getPluginManager().callEvent(event); Location loc; if (event.getLocation() != null && pWorld.checkIsValid(event.getLocation())) loc = event.getLocation();