2024-01-10 22:14:00 -06:00
|
|
|
package noppes.npcs.controllers;
|
|
|
|
|
|
2024-01-11 18:24:33 -06:00
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
2024-03-01 20:00:09 -05:00
|
|
|
import net.minecraft.entity.player.EntityPlayerMP;
|
2024-03-01 20:51:25 -05:00
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
|
|
|
import net.minecraft.nbt.NBTTagList;
|
|
|
|
|
import net.minecraft.nbt.NBTTagString;
|
2024-01-11 18:24:33 -06:00
|
|
|
import noppes.npcs.NoppesUtilServer;
|
2024-03-01 20:00:09 -05:00
|
|
|
import noppes.npcs.Server;
|
|
|
|
|
import noppes.npcs.constants.EnumPacketClient;
|
2024-03-01 20:51:25 -05:00
|
|
|
import noppes.npcs.constants.EnumQuestCompletion;
|
2024-01-10 22:14:00 -06:00
|
|
|
import noppes.npcs.controllers.data.Party;
|
2024-01-11 18:24:33 -06:00
|
|
|
import noppes.npcs.controllers.data.PlayerData;
|
2024-03-01 20:51:25 -05:00
|
|
|
import noppes.npcs.controllers.data.Quest;
|
2024-01-10 22:14:00 -06:00
|
|
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.UUID;
|
2024-03-01 20:51:25 -05:00
|
|
|
import java.util.Vector;
|
|
|
|
|
|
|
|
|
|
import static noppes.npcs.PacketHandlerServer.sendInviteData;
|
2024-01-10 22:14:00 -06:00
|
|
|
|
|
|
|
|
public class PartyController {
|
|
|
|
|
private static PartyController Instance;
|
|
|
|
|
|
|
|
|
|
private HashMap<UUID, Party> parties = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
private PartyController() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static PartyController Instance() {
|
|
|
|
|
if (Instance == null) {
|
|
|
|
|
Instance = new PartyController();
|
|
|
|
|
}
|
|
|
|
|
return Instance;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Party createParty() {
|
|
|
|
|
Party party = new Party();
|
|
|
|
|
this.parties.put(party.getPartyUUID(), party);
|
|
|
|
|
return party;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Party getParty(UUID partyUUID) {
|
|
|
|
|
return this.parties.get(partyUUID);
|
|
|
|
|
}
|
|
|
|
|
|
2024-01-11 18:24:33 -06:00
|
|
|
public void disbandParty(UUID partyUUID) {
|
|
|
|
|
Party party = this.parties.get(partyUUID);
|
|
|
|
|
if (party != null) {
|
|
|
|
|
for (UUID uuid: party.getPlayerUUIDs()) {
|
|
|
|
|
EntityPlayer player = NoppesUtilServer.getPlayer(uuid);
|
2024-03-01 20:51:25 -05:00
|
|
|
PlayerData playerData;
|
|
|
|
|
if(player != null){
|
|
|
|
|
playerData = PlayerDataController.Instance.getPlayerData(player);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
playerData = PlayerDataController.Instance.getPlayerDataCache(uuid.toString());
|
|
|
|
|
}
|
|
|
|
|
if(playerData != null){
|
|
|
|
|
playerData.partyUUID = null;
|
|
|
|
|
if(player != null){
|
|
|
|
|
sendInviteData((EntityPlayerMP) player);
|
|
|
|
|
Server.sendData((EntityPlayerMP) player, EnumPacketClient.PARTY_MESSAGE, "party.disbandAlert");
|
|
|
|
|
Server.sendData((EntityPlayerMP) player, EnumPacketClient.CHAT, "\u00A7c", "party.disbandMessage", "!");
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-01-11 18:24:33 -06:00
|
|
|
}
|
|
|
|
|
this.parties.remove(partyUUID);
|
|
|
|
|
}
|
2024-01-10 22:14:00 -06:00
|
|
|
}
|
2024-03-01 20:00:09 -05:00
|
|
|
|
|
|
|
|
public void sendKickMessages(Party party, EntityPlayer kickPlayer){
|
|
|
|
|
if(kickPlayer == null || party == null)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
for(String name : party.getPlayerNames()){
|
|
|
|
|
EntityPlayer playerMP = NoppesUtilServer.getPlayerByName(name);
|
|
|
|
|
if(playerMP != null){
|
|
|
|
|
Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.PARTY_MESSAGE, "party.kickOtherAlert", kickPlayer.getCommandSenderName());
|
2024-03-01 20:51:25 -05:00
|
|
|
Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.CHAT, "\u00A7e", kickPlayer.getCommandSenderName(), " \u00A74", "party.kickOtherChat", "!");
|
2024-03-01 20:00:09 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Server.sendData((EntityPlayerMP) kickPlayer, EnumPacketClient.PARTY_MESSAGE, "party.kickYouAlert", "");
|
2024-03-01 20:51:25 -05:00
|
|
|
Server.sendData((EntityPlayerMP) kickPlayer, EnumPacketClient.CHAT, "\u00A74", "party.kickYouChat", "!");
|
2024-03-01 20:00:09 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void sendLeavingMessages(Party party, EntityPlayer leavingPlayer){
|
|
|
|
|
if(leavingPlayer == null || party == null)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
for(String name : party.getPlayerNames()){
|
|
|
|
|
EntityPlayer playerMP = NoppesUtilServer.getPlayerByName(name);
|
|
|
|
|
if(playerMP != null){
|
|
|
|
|
Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.PARTY_MESSAGE, "party.leaveOtherAlert", leavingPlayer.getCommandSenderName());
|
2024-03-01 20:51:25 -05:00
|
|
|
Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.CHAT, "\u00A7e", leavingPlayer.getCommandSenderName(), " \u00A7c", "party.leaveOtherChat", "!");
|
2024-03-01 20:00:09 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Server.sendData((EntityPlayerMP) leavingPlayer, EnumPacketClient.PARTY_MESSAGE, "party.leaveYouAlert", "");
|
2024-03-01 20:51:25 -05:00
|
|
|
Server.sendData((EntityPlayerMP) leavingPlayer, EnumPacketClient.CHAT, "\u00A7c", "party.leaveYouChat", "!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void pingPartyUpdate(Party party){
|
|
|
|
|
if(party == null)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
NBTTagCompound compound = party.writeToNBT();
|
2024-03-02 17:13:50 -05:00
|
|
|
if (party.getQuest() != null) {
|
|
|
|
|
Quest quest = (Quest) party.getQuest();
|
|
|
|
|
Vector<String> vector = quest.questInterface.getPartyQuestLogStatus(party);
|
|
|
|
|
NBTTagList list = new NBTTagList();
|
|
|
|
|
for (String s : vector) {
|
|
|
|
|
list.appendTag(new NBTTagString(s));
|
|
|
|
|
}
|
|
|
|
|
compound.setTag("QuestProgress", list);
|
|
|
|
|
if(quest.completion == EnumQuestCompletion.Npc && quest.questInterface.isPartyCompleted(party)) {
|
|
|
|
|
compound.setString("QuestCompleteWith", quest.completerNpc);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-01 20:51:25 -05:00
|
|
|
for(String name : party.getPlayerNames()){
|
|
|
|
|
EntityPlayer playerMP = NoppesUtilServer.getPlayerByName(name);
|
|
|
|
|
if(playerMP != null){
|
|
|
|
|
PlayerData playerData = PlayerDataController.Instance.getPlayerData(playerMP);
|
|
|
|
|
if(playerData != null){
|
2024-03-01 20:56:24 -05:00
|
|
|
Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.PARTY_DATA, compound);
|
2024-03-01 20:51:25 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-03-01 20:00:09 -05:00
|
|
|
}
|
2024-01-10 22:14:00 -06:00
|
|
|
}
|