party accept/readyup + api RTP_EventSettingUp fix

This commit is contained in:
RonanCraft 2022-03-03 16:57:21 -05:00
parent 22eff44288
commit 1ef7fe8959
12 changed files with 151 additions and 27 deletions

View File

@ -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<PartyData> 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

View File

@ -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()));

View File

@ -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"));

View File

@ -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<PartyData> 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<String> tabComplete(CommandSender sendi, String[] args, AddonParty addon) {
List<String> list = new ArrayList<>();
if (args.length == 3) {
List<Player> 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;
}
}

View File

@ -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

View File

@ -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);
}

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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
Parties:
Enabled: true

View File

@ -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 <invite, accept, leave, kick>'
Accept: '&cUsage: &7/%command% portals accept <player_name>'
Invite: '&cUsage: &7/%command% portals invite <player_name>'
Kick: '&cUsage: &7/%command% portals kick <player_name>'
Base: '&cUsage: &7/%command% party <invite, accept, leave, kick, readyup>'
Accept: '&cUsage: &7/%command% party accept <player_name>'
Invite: '&cUsage: &7/%command% party invite <player_name>'
Kick: '&cUsage: &7/%command% party kick <player_name>'
Addons:
List:
Prefix: '&e&m-----&6&l BetterRTP &7&lAddons &8| Addons Info &e&m-----'

View File

@ -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;
}

View File

@ -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();