diff --git a/BetterRTPAddons/pom.xml b/BetterRTPAddons/pom.xml
index 01421c1..cd0b31c 100644
--- a/BetterRTPAddons/pom.xml
+++ b/BetterRTPAddons/pom.xml
@@ -78,14 +78,20 @@
org.spigotmc
spigot-api
- 1.16.2-R0.1-SNAPSHOT
+ 1.8.8-R0.1-SNAPSHOT
+ provided
+
+
+ org.spigotmc
+ spigot-api
+ 1.13.2-R0.1-SNAPSHOT
provided
org.spigotmc
spigot
- 1.16.2-R0.1-SNAPSHOT
+ 1.8.8-R0.1-SNAPSHOT
provided
@@ -109,5 +115,11 @@
4.5.0
provided
+
+ org.projectlombok
+ lombok
+ 1.18.22
+ compile
+
\ No newline at end of file
diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java
index d268f39..dc05da3 100644
--- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java
+++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java
@@ -7,10 +7,12 @@ import me.SuperRonanCraft.BetterRTPAddons.addons.extraEffects.AddonExtraEffects;
import me.SuperRonanCraft.BetterRTPAddons.addons.flashback.AddonFlashback;
import me.SuperRonanCraft.BetterRTPAddons.addons.logger.AddonLogger;
import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.AddonMagicStick;
+import me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.AddonParty;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
import java.util.ArrayList;
import java.util.List;
+import java.util.logging.Level;
public class AddonsHandler {
@@ -44,7 +46,7 @@ public class AddonsHandler {
MAGICSTICK(new AddonMagicStick()), //Handy teleport want
EXTRAEFFECTS(new AddonExtraEffects()), //New cosmetica!
COMMANDS(new AddonCommands()), //Commands on rtp events
- PARTY_RTP(new me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.AddonParty()),
+ PARTY_RTP(new AddonParty()), //Adds parties!
;
Addon addon;
@@ -59,7 +61,7 @@ public class AddonsHandler {
void load() {
addon.load();
- //Main.getInstance().getLogger().log(Level.INFO, "Addon " + this.name() + " has been enabled!");
+ BetterRTP.debug("Addon " + this.name() + " has been enabled!");
}
void disable() {
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 dd2c84a..aebd9a8 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
@@ -1,5 +1,6 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp;
+import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTPAddons.Addon;
import me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.cmds.PartyCommand;
@@ -14,7 +15,7 @@ public class AddonParty implements Addon {
private static AddonParty instance;
private final String name = "PartyRTP";
private final PartyCommand cmd = new PartyCommand(this);
- public PortalsMessages msgs = new PortalsMessages();
+ public PartyMessages msgs = new PartyMessages();
public List parties = new ArrayList<>();
@Override
@@ -25,6 +26,7 @@ public class AddonParty implements Addon {
@Override
public void load() {
instance = this;
+ BetterRTP.getInstance().getCmd().registerCommand(cmd, false);
}
@Override
@@ -38,6 +40,6 @@ public class AddonParty implements Addon {
@Override
public RTPCommand getCmd() {
- return null;
+ return cmd;
}
}
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 8c33e1f..3e016da 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
@@ -1,20 +1,84 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp;
+import io.papermc.lib.PaperLib;
+import lombok.Getter;
+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 org.bukkit.Location;
import org.bukkit.entity.Player;
+import org.bukkit.event.player.PlayerTeleportEvent;
+import org.bukkit.scheduler.BukkitRunnable;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
public class PartyData {
- final Player leader;
- List members = new ArrayList<>();
+ @Getter private final Player leader;
+ private HashMap members = new HashMap<>();
public PartyData(Player leader) {
this.leader = leader;
}
+ public boolean add(Player p) {
+ if (!members.containsKey(p)) {
+ members.put(p, false);
+ return true;
+ }
+ return false;
+ }
+
+ public boolean remove(Player p) {
+ return members.remove(p) != null;
+ }
+
public boolean contains(Player p) {
- return leader.equals(p) || members.contains(p);
+ return leader.equals(p) || members.containsKey(p);
+ }
+
+ public boolean isLeader(Player p) {
+ return this.leader.equals(p);
+ }
+
+ public boolean allReady() {
+ return !members.containsValue(false);
+ }
+
+ public void readyUp(Player p) {
+ if (members.containsKey(p))
+ members.put(p, true);
+ }
+
+ public void clear() {
+ members.replaceAll((p, v) -> false);
+ }
+
+ public String getNotReady() {
+ List notReady = new ArrayList<>();
+ members.forEach((p, ready) -> {
+ if (!ready) notReady.add(p);
+ });
+ StringBuilder notReady_str = new StringBuilder("[");
+ notReady.forEach(p -> notReady_str.append(p.getName()));
+ notReady_str.append("]");
+ return notReady_str.toString();
+ }
+
+ public void tpAll(RTP_TeleportPostEvent e) {
+ 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));
+ });
}
}
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 0084fe3..0e1601d 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
@@ -1,6 +1,8 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_SettingUpEvent;
+import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportEvent;
+import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@@ -9,6 +11,26 @@ public class PartyHandler implements Listener {
//Dissallow players from teleporting unless all party members are ready
@EventHandler
public void onRTP(RTP_SettingUpEvent e) {
-
+ PartyData party = HelperParty.getParty(e.getPlayer());
+ if (party != null) {
+ if (party.isLeader(e.getPlayer())) {
+ if (!party.allReady()) { //NOT ALL READY
+ AddonParty.getInstance().msgs.getMembers_NotReady(e.getPlayer(), party.getNotReady());
+ e.setCancelled(true);
+ } //else rtp!
+ } else {
+ AddonParty.getInstance().msgs.getOnlyLeader(e.getPlayer(), party.getLeader());
+ e.setCancelled(true);
+ }
+ }
}
+
+ @EventHandler
+ public void onRTP_end(RTP_TeleportPostEvent e) {
+ PartyData party = HelperParty.getParty(e.getPlayer());
+ if (party != null && party.isLeader(e.getPlayer())) {
+ party.tpAll(e);
+ }
+ }
+
}
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 bd1177f..7fcd0f5 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
@@ -3,16 +3,17 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp;
import me.SuperRonanCraft.BetterRTPAddons.AddonsMessages;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
public class PartyMessages implements AddonsMessages {
private static final String preM = "Party.";
- public void getWarning(CommandSender sendi) {
- sms(sendi, getLang().getString(preM + "Warning"));
+ public void getOnlyLeader(CommandSender sendi, Player leader) {
+ sms(sendi, getLang().getString(preM + "OnlyLeader").replace("%name%", leader.getName()));
}
public String getHelp() {
- return getLang().getString("Help.Portals");
+ return getLang().getString("Help.Party");
}
//Invite
@@ -30,4 +31,17 @@ public class PartyMessages implements AddonsMessages {
public void usageBase(CommandSender sendi, String label) {
sms(sendi, getLang().getString(preM + "Usage.Base").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_Ready(CommandSender sendi) {
+ sms(sendi, getLang().getString(preM + "Members.Ready"));
+ }
+ //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.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand.java
index 955e870..1e26535 100644
--- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand.java
+++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand.java
@@ -17,6 +17,7 @@ public class PartyCommand implements RTPCommand, RTPCommandHelpable {
this.pl = pl;
}
+ @Override
public String getName() {
return "party";
}
diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/region/PortalsCache.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/region/PortalsCache.java
index 8ecc180..77d3927 100644
--- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/region/PortalsCache.java
+++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/region/PortalsCache.java
@@ -110,10 +110,14 @@ public class PortalsCache {
packet.sendPacket(p);
//}
} else {
- if (loc2)
- p.sendBlockChange(portal.loc_2, Material.GLOWSTONE.createBlockData());
- else
- p.sendBlockChange(portal.loc_1, Material.GLOWSTONE.createBlockData());
+ try {
+ if (loc2)
+ p.sendBlockChange(portal.loc_2, Material.GLOWSTONE.createBlockData());
+ else
+ p.sendBlockChange(portal.loc_1, Material.GLOWSTONE.createBlockData());
+ } catch (Exception e) {
+ //Not 1.13+ (dont show block changes)
+ }
}
}
diff --git a/BetterRTPAddons/src/main/resources/lang/en.yml b/BetterRTPAddons/src/main/resources/lang/en.yml
index 6884841..a64ee74 100644
--- a/BetterRTPAddons/src/main/resources/lang/en.yml
+++ b/BetterRTPAddons/src/main/resources/lang/en.yml
@@ -30,16 +30,21 @@ MagicStick:
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!'
+ Members:
+ Ready: '&eYou have readied up for the next party rtp!'
+ NotReady: '&cNot all members are ready! &7%members%'
Addons:
List:
Prefix: '&e&m-----&6&l BetterRTP &7&lAddons &8| Addons Info &e&m-----'
Enabled: ' &7- &e%addon% &7- &aEnabled'
Disabled: ' &7- &e%addon% &7- &cDisabled'
-
Help:
Portals: ' &7- &e/%command% portals [args...] &7- Setup an rtp portal'
MagicStick: ' &7- &e/%command% magicstick give [player] &7- Give a magic stick to a player'
+ Party: ' &7- &e/%command% party [...] &7- View a list of party commands'
Addons: ' &7- &e/%command% addons &7- View a list of addons commands'
Base:
Help: ' &7- &e/%command% addons help &7- View a list of available commands'