package me.km.playerbank; import java.util.HashMap; import java.util.UUID; import me.kcm.events.PlayerConnectionEvent; import me.km.module.Module; import me.km.databank.DataBank; import me.km.scoreboard.ScoreboardUtils; import me.km.world.ModDimensions; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.text.TextFormatting; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.PlayerEvent; public class PlayerManager extends Module { private final PlayerBank bank; private final HashMap playerIds = new HashMap<>(); public PlayerManager(String prefix, TextFormatting color, DataBank c) { super(prefix, color); bank = new PlayerBank(); registerEvent(this); } public PlayerBank getDataBank() { return bank; } public int getPlayerId(UUID uuid) { Integer i = playerIds.get(uuid); if(i != null) { return i; } return bank.getId(uuid); } @SubscribeEvent(priority = EventPriority.HIGH) public void onPlayerJoin(PlayerEvent.PlayerLoggedInEvent e) { EntityPlayer p = e.player; if(p == null) { return; } if(bank.add(p.getUniqueID(), p.getName())) { sendToConsole(p.getName() + " was added."); int id = bank.getId(p.getUniqueID()); if(id == -1) { // this should never happen sendToConsole(p.getName() + " has no id."); } else { playerIds.put(p.getUniqueID(), id); } } else { bank.changeName(p.getUniqueID(), p.getName()); } } @SubscribeEvent(priority = EventPriority.LOW) public void onPlayerLeaveCleanup(PlayerEvent.PlayerLoggedOutEvent e) { EntityPlayer p = e.player; ScoreboardUtils.remove(p.getUniqueID()); } @SubscribeEvent public void onPlayerConnection(PlayerConnectionEvent e) { ModDimensions.sendNotificationsForDimensions(e.getEntityPlayer()); } }