Addon Party - blueprint

This commit is contained in:
RonanCraft 2021-10-06 18:03:15 -04:00
parent 9576a25af2
commit f0c219c52e
22 changed files with 386 additions and 40 deletions

View File

@ -99,7 +99,7 @@
<dependency>
<groupId>me.SuperRonanCraft</groupId>
<artifactId>BetterRTP</artifactId>
<version>LATEST</version>
<version>3.2.1-4</version>
<scope>provided</scope>
</dependency>
<!-- ProtocolLib -->

View File

@ -44,6 +44,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()),
;
Addon addon;

View File

@ -1,10 +1,7 @@
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;

View File

@ -0,0 +1,43 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTPAddons.Addon;
import me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.cmds.PartyCommand;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.PortalsMessages;
import me.SuperRonanCraft.BetterRTPAddons.util.Files;
import java.util.ArrayList;
import java.util.List;
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 List<PartyData> parties = new ArrayList<>();
@Override
public boolean isEnabled() {
return getFile(Files.FILETYPE.CONFIG).getBoolean(name + ".Enabled");
}
@Override
public void load() {
instance = this;
}
@Override
public void unload() {
}
public static AddonParty getInstance() {
return instance;
}
@Override
public RTPCommand getCmd() {
return null;
}
}

View File

@ -0,0 +1,29 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp;
import org.bukkit.entity.Player;
import java.util.List;
public class HelperParty {
public static boolean isInParty(Player p) {
List<PartyData> parties = getPl().parties;
for (PartyData party : parties)
if (party.contains(p))
return true;
return false;
}
public static PartyData getParty(Player p) {
List<PartyData> parties = getPl().parties;
for (PartyData party : parties)
if (party.contains(p))
return party;
return null;
}
private static AddonParty getPl() {
return AddonParty.getInstance();
}
}

View File

@ -0,0 +1,20 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class PartyData {
final Player leader;
List<Player> members = new ArrayList<>();
PartyData(Player leader) {
this.leader = leader;
}
public boolean contains(Player p) {
return leader.equals(p) || members.contains(p);
}
}

View File

@ -0,0 +1,93 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp;
import me.SuperRonanCraft.BetterRTPAddons.AddonsMessages;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
public class PartyMessages implements AddonsMessages {
private static final String preM = "Portals.";
public void getWarning(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "Warning"));
}
public String getHelp() {
return getLang().getString("Help.Portals");
}
//Create
public void getCreateConfirm(CommandSender sendi, String name) {
sms(sendi, getLang().getString(preM + "Created.Confirmation.Default").replace("%name%", name));
}
public void getCreateConfirmWorld(CommandSender sendi, String name, String world) {
sms(sendi, getLang().getString(preM + "Created.Confirmation.Destination").replace("%name%", name).replace("%world%", world));
}
public void getCreateInvalid(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "Created.Invalid"));
}
public void getCreateName(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "Created.Name"));
}
public void getCreateDuplicate(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "Created.Duplicate"));
}
//Location
public void getLocation_1(CommandSender sendi, Location loc) {
sms(sendi, getLang().getString(preM + "Location.1")
.replace("%location%", "x:" + loc.getBlockX() + ", y:" + loc.getBlockY() + ", z:" + loc.getBlockZ()));
}
public void getLocation_2(CommandSender sendi, Location loc) {
sms(sendi, getLang().getString(preM + "Location.2")
.replace("%location%", "x:" + loc.getBlockX() + ", y:" + loc.getBlockY() + ", z:" + loc.getBlockZ()));
}
public void getLocation_Look(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "Location.Look"));
}
public void getLocation_Ready(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "Location.Ready").replace("%command%", "rtp"));
}
//Remove
public void getRemoveConfirm(CommandSender sendi, String name) {
sms(sendi, getLang().getString(preM + "Remove.Confirm").replace("%name%", name));
}
public void getRemoveNone(CommandSender sendi, String name) {
sms(sendi, getLang().getString(preM + "Remove.None").replace("%name%", name));
}
//List
public String getListPrefix() {
return getLang().getString(preM + "List.Prefix");
}
public String getListPortal() {
return getLang().getString(preM + "List.Portal");
}
public void getListNone(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "List.None"));
}
//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));
}
}

View File

@ -0,0 +1,77 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.cmds;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
import me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.AddonParty;
import org.bukkit.command.CommandSender;
import java.util.ArrayList;
import java.util.List;
public class PartyCommand implements RTPCommand, RTPCommandHelpable {
AddonParty pl;
public PartyCommand(AddonParty pl) {
this.pl = pl;
}
public String getName() {
return "party";
}
@Override
public void execute(CommandSender sendi, String label, String[] args) {
if (args.length > 1)
for (subCmd subCmd : subCmd.values()) {
if (args[1].equalsIgnoreCase(subCmd.name())) {
subCmd.cmd.execute(sendi, label, args, pl);
return;
}
}
pl.msgs.usageBase(sendi, label);
}
@Override
public List<String> tabComplete(CommandSender sendi, String[] args) {
List<String> list = new ArrayList<>();
if (args.length == 2) {
for (subCmd cmd : subCmd.values()) {
if (cmd.name().toLowerCase().startsWith(args[1].toLowerCase())) {
list.add(cmd.name().toLowerCase());
}
}
} else if (args.length >= 3) {
for (subCmd cmd : subCmd.values()) {
if (cmd.name().toLowerCase().startsWith(args[1].toLowerCase())) {
if (cmd.cmd instanceof PartyCommandsTabable)
list.addAll(((PartyCommandsTabable) cmd.cmd).tabComplete(sendi, args, pl));
}
}
}
return list;
}
@Override
public boolean permission(CommandSender sendi) {
return BetterRTP.getInstance().getPerms().checkPerm("betterrtp.addon.portals", sendi);
}
@Override
public String getHelp() {
return pl.msgs.getHelp();
}
private enum subCmd {
CREATE(new PartyCommand_Invite()),
REMOVE(new PartyCommand_Leave()),
LIST(new PartyCommand_Accept());
PartyCommands cmd;
subCmd(PartyCommands cmd) {
this.cmd = cmd;
}
}
}

View File

@ -0,0 +1,17 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.cmds;
import me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.AddonParty;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInfo;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import java.util.ArrayList;
import java.util.List;
public class PartyCommand_Accept implements PartyCommands {
@Override
public void execute(CommandSender sendi, String label, String[] args, AddonParty addon) {
}
}

View File

@ -0,0 +1,37 @@
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.Bukkit;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class PartyCommand_Invite implements PartyCommands, PartyCommandsTabable {
@Override
public void execute(CommandSender sendi, String label, String[] args, AddonParty addon) {
Player p = (Player) sendi;
PartyData party = null;
if (HelperParty.isInParty(p))
party = HelperParty.getParty(p);
else
party = new PartyData()
}
//rtp party invite [args]
@Override
public List<String> tabComplete(CommandSender sendi, String[] args, AddonParty addon) {
List<String> list = new ArrayList<>();
if (args.length == 4) {
for (World world : Bukkit.getWorlds())
if (world.getName().toLowerCase().startsWith(args[3].toLowerCase()))
list.add(world.getName());
}
return list;
}
}

View File

@ -0,0 +1,12 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.cmds;
import me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.AddonParty;
import org.bukkit.command.CommandSender;
public class PartyCommand_Leave implements PartyCommands {
@Override
public void execute(CommandSender sendi, String label, String[] args, AddonParty addon) {
}
}

View File

@ -0,0 +1,10 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.cmds;
import me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.AddonParty;
import org.bukkit.command.CommandSender;
public interface PartyCommands {
void execute(CommandSender sendi, String label, String[] args, AddonParty addonPortals);
}

View File

@ -0,0 +1,13 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.cmds;
import me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.AddonParty;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
import org.bukkit.command.CommandSender;
import java.util.List;
public interface PartyCommandsTabable {
List<String> tabComplete(CommandSender sendi, String[] args, AddonParty addon);
}

View File

@ -16,7 +16,6 @@ import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import java.util.HashMap;
import java.util.List;
public class PortalsEvents implements Listener {

View File

@ -1,9 +1,7 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.util.BlockIterator;

View File

@ -4,7 +4,6 @@ import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.*;
import org.bukkit.command.CommandSender;
import java.util.ArrayList;

View File

@ -13,24 +13,24 @@ import java.util.List;
public class PortalsCommand_Create implements PortalsCommands, PortalsCommandsTabable {
@Override
public void execute(CommandSender sendi, String label, String[] args, AddonPortals addonPortals) {
public void execute(CommandSender sendi, String label, String[] args, AddonPortals addon) {
if (!(sendi instanceof Player)) {
sendi.sendMessage("Console cannot perform this command!");
return;
}
//Valid Name
if (args.length < 3 || args[2].length() < 1) {
addonPortals.msgs.getCreateName(sendi);
addon.msgs.getCreateName(sendi);
return;
}
Player p = (Player) sendi;
PortalsRegionInfo portal = addonPortals.getPortals().getPortal(p);
PortalsRegionInfo portal = addon.getPortals().getPortal(p);
//Valid region
if ( portal == null ||
portal.getLoc1() == null ||
portal.getLoc2() == null ||
portal.getLoc1().getWorld() != portal.getLoc2().getWorld()) {
addonPortals.msgs.getCreateInvalid(sendi);
addon.msgs.getCreateInvalid(sendi);
return;
}
String name = args[2];
@ -38,17 +38,17 @@ public class PortalsCommand_Create implements PortalsCommands, PortalsCommandsTa
portal.setWorld(args[3]);
}
//Duplicate Name
for (PortalsRegionInfo portals : addonPortals.getPortals().getRegisteredPortals()) {
for (PortalsRegionInfo portals : addon.getPortals().getRegisteredPortals()) {
if (portals.getName().equals(name)) {
addonPortals.msgs.getCreateDuplicate(sendi);
addon.msgs.getCreateDuplicate(sendi);
return;
}
}
if (addonPortals.getPortals().addRegisteredPortal(p, name)) {
if (addon.getPortals().addRegisteredPortal(p, name)) {
if (portal.getWorld() == null)
addonPortals.msgs.getCreateConfirm(p, name);
addon.msgs.getCreateConfirm(p, name);
else
addonPortals.msgs.getCreateConfirmWorld(p, name, portal.getWorld());
addon.msgs.getCreateConfirmWorld(p, name, portal.getWorld());
} else
sendi.sendMessage("Something went wrong when creating a portal!");
}

View File

@ -11,23 +11,23 @@ import java.util.List;
public class PortalsCommand_List implements PortalsCommands {
@Override
public void execute(CommandSender sendi, String label, String[] args, AddonPortals addonPortals) {
List<PortalsRegionInfo> portalList = addonPortals.getPortals().getRegisteredPortals();
public void execute(CommandSender sendi, String label, String[] args, AddonPortals addon) {
List<PortalsRegionInfo> portalList = addon.getPortals().getRegisteredPortals();
if (portalList.isEmpty()) {
addonPortals.msgs.getListNone(sendi);
addon.msgs.getListNone(sendi);
return;
}
String strPrefix = addonPortals.msgs.getListPrefix();
String strPrefix = addon.msgs.getListPrefix();
List<String> list = new ArrayList<>();
list.add(strPrefix);
String strPortal = addonPortals.msgs.getListPortal();
String strPortal = addon.msgs.getListPortal();
for (PortalsRegionInfo portal : portalList) {
String locInfo = "World: " + portal.getLoc1().getWorld().getName() +
" Loc1: " + locToString(portal.getLoc1()) +
" Loc2: " + locToString(portal.getLoc2());
list.add(strPortal.replace("%name%", portal.getName()).replace("%location%", locInfo));
}
addonPortals.msgs.sms(sendi, list);
addon.msgs.sms(sendi, list);
}
private String locToString(Location loc) {

View File

@ -12,15 +12,15 @@ public class PortalsCommand_Loc1 implements PortalsCommands, LocationFinder {
private PacketContainer fakeBlock;
@Override
public void execute(CommandSender sendi, String label, String[] args, AddonPortals addonPortals) {
public void execute(CommandSender sendi, String label, String[] args, AddonPortals addon) {
Player p = (Player) sendi;
Block block = getTargetBlock(p, 10);
if (block != null) {
Location loc = block.getLocation();
addonPortals.msgs.getLocation_1(sendi, loc);
addonPortals.getPortals().cachePortal(p, loc, false);
addon.msgs.getLocation_1(sendi, loc);
addon.getPortals().cachePortal(p, loc, false);
} else {
addonPortals.msgs.getLocation_Look(sendi);
addon.msgs.getLocation_Look(sendi);
}
}
}

View File

@ -9,15 +9,15 @@ import org.bukkit.entity.Player;
public class PortalsCommand_Loc2 implements PortalsCommands, LocationFinder {
@Override
public void execute(CommandSender sendi, String label, String[] args, AddonPortals addonPortals) {
public void execute(CommandSender sendi, String label, String[] args, AddonPortals addon) {
Player p = (Player) sendi;
Block block = getTargetBlock(p, 10);
if (block != null) {
Location loc = block.getLocation();
addonPortals.msgs.getLocation_2(sendi, loc);
addonPortals.getPortals().cachePortal(p, loc, true);
addon.msgs.getLocation_2(sendi, loc);
addon.getPortals().cachePortal(p, loc, true);
} else {
addonPortals.msgs.getLocation_Look(sendi);
addon.msgs.getLocation_Look(sendi);
}
}
}

View File

@ -1,10 +1,8 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsCache;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInfo;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
@ -12,23 +10,23 @@ import java.util.List;
public class PortalsCommand_Remove implements PortalsCommands, PortalsCommandsTabable {
@Override
public void execute(CommandSender sendi, String label, String[] args, AddonPortals addonPortals) {
public void execute(CommandSender sendi, String label, String[] args, AddonPortals addon) {
if (args.length < 3) {
addonPortals.msgs.usageRemove(sendi, label);
addon.msgs.usageRemove(sendi, label);
return;
}
String portalName = args[2];
for (PortalsRegionInfo portal : addonPortals.getPortals().getRegisteredPortals()) {
for (PortalsRegionInfo portal : addon.getPortals().getRegisteredPortals()) {
if (portal.getName().equals(portalName)) {
if (addonPortals.getPortals().removeRegisteredPortal(portal))
addonPortals.msgs.getRemoveConfirm(sendi, portal.getName());
if (addon.getPortals().removeRegisteredPortal(portal))
addon.msgs.getRemoveConfirm(sendi, portal.getName());
else
sendi.sendMessage("Error Removing portal " + portalName);
return;
}
}
//None found
addonPortals.msgs.getRemoveNone(sendi, portalName);
addon.msgs.getRemoveNone(sendi, portalName);
}
@Override

View File

@ -55,3 +55,6 @@ Commands:
Enabled: false
Commands:
- 'broadcast &e%player_name% moved while trying to rtp, chump!'
PartyRTP:
Enabled: false