Party Leave and Kick commands complete

This commit is contained in:
SuperRonanCraft 2022-03-02 23:53:25 -05:00
parent ba99c7957b
commit 22eff44288
9 changed files with 126 additions and 20 deletions

View File

@ -19,7 +19,8 @@ import java.util.List;
public class PartyData {
@Getter private final Player leader;
private final HashMap<Player, Boolean> members = new HashMap<>();
@Getter private final HashMap<Player, Boolean> members = new HashMap<>();
@Getter private final List<Player> invited = new ArrayList<>();
public PartyData(Player leader) {
this.leader = leader;
@ -33,6 +34,14 @@ public class PartyData {
return false;
}
public boolean invite(Player p) {
if (!invited.contains(p)) {
invited.add(p);
return true;
}
return false;
}
public boolean remove(Player p) {
return members.remove(p) != null;
}
@ -49,9 +58,12 @@ public class PartyData {
return !members.containsValue(false);
}
public void readyUp(Player p) {
if (members.containsKey(p))
public boolean readyUp(Player p) {
if (members.containsKey(p) && !members.get(p)) {
members.put(p, true);
return true;
}
return false;
}
public void clear() {

View File

@ -3,8 +3,11 @@ 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 me.SuperRonanCraft.BetterRTP.references.systems.playerdata.PlayerData;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerQuitEvent;
public class PartyHandler implements Listener {
@ -33,4 +36,16 @@ public class PartyHandler implements Listener {
}
}
@EventHandler
public void onLeave(PlayerQuitEvent e) {
PartyData party = HelperParty.getParty(e.getPlayer());
if (party != null) {
if (party.isLeader(e.getPlayer())) {
AddonParty.getInstance().parties.remove(party);
for (Player member : party.getMembers().keySet())
AddonParty.getInstance().msgs.getMembers_LeaderLeft(member);
}
}
}
}

View File

@ -25,8 +25,16 @@ public class PartyMessages implements AddonsMessages {
}
//Invite
public void getInvite(CommandSender sendi, String name) {
sms(sendi, getLang().getString(preM + "Invite").replace("%name%", name));
public void getInvite_Invited(CommandSender sendi, String name) {
sms(sendi, getLang().getString(preM + "Invite.Invited").replace("%name%", name));
}
public void getInvite_Notification(CommandSender sendi, String name) {
sms(sendi, getLang().getString(preM + "Invite.Notification").replace("%name%", name));
}
public void getInvite_Already(CommandSender sendi, String name) {
sms(sendi, getLang().getString(preM + "Invite.Already").replace("%name%", name));
}
//Usages
@ -60,6 +68,13 @@ public class PartyMessages implements AddonsMessages {
sms(sendi, getLang().getString(preM + "Members.Ready"));
}
public void getMembers_LeaderLeft(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "Members.LeaderLeft"));
}
public void getMembers_Leave(CommandSender sendi, String leader) {
sms(sendi, getLang().getString(preM + "Members.Leave").replace("%name%", leader));
}
//Kick
public void getKick_Kicked(CommandSender sendi, String kicked) {

View File

@ -69,6 +69,7 @@ public class PartyCommand implements RTPCommand, RTPCommandHelpable {
INVITE(new PartyCommand_Invite()),
KICK(new PartyCommand_Kick()),
LEAVE(new PartyCommand_Leave()),
READYUP(new PartyCommand_ReadyUp()),
;
PartyCommands cmd;

View File

@ -16,11 +16,26 @@ 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(p);
if (args.length >= 3) {
Player member = Bukkit.getPlayer(args[2]);
if (member != null && !member.equals(p)) {
PartyData party = HelperParty.getParty(p);
if (party == null) {
party = new PartyData(p);
AddonParty.getInstance().parties.add(party);
}
if (party.isLeader(p)) {
if (party.invite(member)) {
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());
} else
AddonParty.getInstance().msgs.getOnlyLeader(sendi, party.getLeader().getName());
} else
AddonParty.getInstance().msgs.getNotExist(sendi, args[2]);
} else
AddonParty.getInstance().msgs.usageInvite(sendi, label);
}
@ -28,10 +43,10 @@ public class PartyCommand_Invite implements PartyCommands, PartyCommandsTabable
@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());
if (args.length == 3) {
for (Player p : Bukkit.getOnlinePlayers())
if (p.getName().toLowerCase().startsWith(args[2].toLowerCase()) && !p.equals(sendi))
list.add(p.getName());
}
return list;
}

View File

@ -8,7 +8,10 @@ import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class PartyCommand_Kick implements PartyCommands {
import java.util.ArrayList;
import java.util.List;
public class PartyCommand_Kick implements PartyCommands, PartyCommandsTabable {
@Override
public void execute(CommandSender sendi, String label, String[] args, AddonParty addon) {
@ -21,7 +24,9 @@ public class PartyCommand_Kick implements PartyCommands {
Player member = Bukkit.getPlayer(args[2]);
if (member != null) {
if (party.isMember(member)) {
party.remove(member);
msgs.getKick_Kicked(sendi, member.getName());
msgs.getKick_Notification(member, sendi.getName());
} else
msgs.getMembers_NotInParty(sendi, member.getName());
} else
@ -33,4 +38,16 @@ public class PartyCommand_Kick implements PartyCommands {
} else
msgs.getNotInParty(sendi);
}
@Override public List<String> tabComplete(CommandSender sendi, String[] args, AddonParty addon) {
List<String> list = new ArrayList<>();
if (args.length == 3) {
PartyData party = HelperParty.getParty((Player) sendi);
if (party != null)
for (Player p : party.getMembers().keySet())
if (p.getName().toLowerCase().startsWith(args[2].toLowerCase()) && !p.equals(sendi))
list.add(p.getName());
}
return list;
}
}

View File

@ -1,12 +1,27 @@
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_Leave 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)) {
AddonParty.getInstance().parties.remove(party);
for (Player member : party.getMembers().keySet())
AddonParty.getInstance().msgs.getMembers_LeaderLeft(member);
} else {
party.remove(p);
AddonParty.getInstance().msgs.getMembers_Leave(sendi, party.getLeader().getName());
}
} else
AddonParty.getInstance().msgs.getNotInParty(p);
}
}

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_ReadyUp implements PartyCommands {
@Override
public void execute(CommandSender sendi, String label, String[] args, AddonParty addon) {
}
}

View File

@ -29,8 +29,6 @@ MagicStick:
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!'
@ -38,10 +36,16 @@ Party:
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!'
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!'
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!'
Usage:
Base: '&cUsage: &7/%command% party <invite, accept, leave, kick>'
Accept: '&cUsage: &7/%command% portals accept <player_name>'