mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-08-17 09:05:47 +00:00
party addons command register + parties rtp with leader
This commit is contained in:
parent
23cca0311c
commit
66701c490f
@ -78,14 +78,20 @@
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.16.2-R0.1-SNAPSHOT</version>
|
||||
<version>1.8.8-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.13.2-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<!-- Spigot Stuff -->
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot</artifactId>
|
||||
<version>1.16.2-R0.1-SNAPSHOT</version>
|
||||
<version>1.8.8-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<!-- Paper Library for Async Chunk/Teleport -->
|
||||
@ -109,5 +115,11 @@
|
||||
<version>4.5.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.18.22</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
@ -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() {
|
||||
|
@ -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<PartyData> 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;
|
||||
}
|
||||
}
|
||||
|
@ -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<Player> members = new ArrayList<>();
|
||||
@Getter private final Player leader;
|
||||
private HashMap<Player, Boolean> 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<Player> 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));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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"));
|
||||
}
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ public class PartyCommand implements RTPCommand, RTPCommandHelpable {
|
||||
this.pl = pl;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "party";
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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 <loc1, loc2, create> [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'
|
||||
|
Loading…
x
Reference in New Issue
Block a user