[spoiler=Core]
public static Map<String, SCoreEntityPlayerSP> playersClient = new HashMap<String, SCoreEntityPlayerSP>();
public static Map<String, SCoreEntityPlayerMP> playersServer = new HashMap<String, SCoreEntityPlayerMP>();
[spoiler=SCoreEntityPlayerMP]
package nuclear.mods.space.entity.player;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemInWorldManager;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
import nuclear.mods.space.SLog;
import nuclear.mods.space.SpaceCore;
public class SCoreEntityPlayerMP extends EntityPlayerMP {
private long tick;
public SCoreEntityPlayerMP(MinecraftServer server, World world, String username, ItemInWorldManager itemInWorldManager)
{
super(server, world, username, itemInWorldManager);
if (!SpaceCore.playersServer.containsKey(this.username))
{
SpaceCore.playersServer.put(this.username, this);
SLog.info(" ADD");
}
}
@Override
public void onDeath(DamageSource damageSource)
{
SpaceCore.playersServer.remove(this);
SLog.info(" REMOVE");
super.onDeath(damageSource);
}
@Override
public void onUpdate()
{
super.onUpdate();
if (!SpaceCore.playersServer.containsKey(this.username) || this.tick % 360 == 0)
{
SpaceCore.playersServer.put(this.username, this);
SLog.info(" ADD");
}
if (this.tick >= Long.MAX_VALUE)
{
this.tick = 0;
}
this.tick++;
}
}
[spoiler=SCoreEntityPlayerSP]
package nuclear.mods.space.entity.player;
import java.util.ArrayList;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityClientPlayerMP;
import net.minecraft.client.multiplayer.NetClientHandler;
import net.minecraft.util.DamageSource;
import net.minecraft.util.Session;
import net.minecraft.world.World;
import nuclear.mods.space.SLog;
import nuclear.mods.space.SpaceCore;
import nuclear.mods.space.api.ISchematicPage;
public class SCoreEntityPlayerSP extends EntityClientPlayerMP {
public ArrayList<ISchematicPage> unlockedSchematics = new ArrayList<ISchematicPage>();
public long tick;
public SCoreEntityPlayerSP(Minecraft par1Minecraft, World par2World, Session par3Session, NetClientHandler par4NetClientHandler)
{
super(par1Minecraft, par2World, par3Session, par4NetClientHandler);
if (!SpaceCore.playersClient.containsKey(this.username))
{
SpaceCore.playersClient.put(this.username, this);
SLog.info(" ADD");
}
}
@Override
public void onDeath(DamageSource var1)
{
SpaceCore.playersClient.remove(this);
SLog.info(" REMOVE");
super.onDeath(var1);
}
@Override
public void onUpdate()
{
this.tick++;
if (!SpaceCore.playersClient.containsKey(this.username) || this.tick % 360 == 0)
{
SpaceCore.playersClient.put(this.username, this);
SLog.info(" ADD");
}
super.onUpdate();
}
}
[spoiler=PlayerUtil]
package nuclear.mods.space.util;
import java.util.Iterator;
import java.util.Map;
import net.minecraft.entity.player.EntityPlayer;
import nuclear.mods.space.SLog;
import nuclear.mods.space.SpaceCore;
import nuclear.mods.space.entity.player.SCoreEntityPlayerMP;
import nuclear.mods.space.entity.player.SCoreEntityPlayerSP;
public class PlayerUtil
{
public static SCoreEntityPlayerMP getPlayerBaseServerFromPlayerUsername(String username)
{
if (SpaceCore.playersServer.isEmpty())
{
// new EmptyStackException().printStackTrace();
}
final Iterator<Map.Entry<String, SCoreEntityPlayerMP>> it = SpaceCore.playersServer.entrySet().iterator();
while (it.hasNext())
{
Map.Entry<String, SCoreEntityPlayerMP> entry = it.next();
if (entry.getKey().equals(username))
{
return entry.getValue();
}
}
SLog.severe("Warning: Could not find player base server instance for player " + username);
return null;
}
public static SCoreEntityPlayerMP getPlayerBaseServerFromPlayer(EntityPlayer player)
{
if (player == null)
{
return null;
}
if (SpaceCore.playersServer.isEmpty())
{
// new EmptyStackException().printStackTrace();
}
final Iterator<Map.Entry<String, SCoreEntityPlayerMP>> it = SpaceCore.playersServer.entrySet().iterator();
while (it.hasNext())
{
final Map.Entry<String, SCoreEntityPlayerMP> entry = it.next();
if (entry.getKey().equals(player.username))
{
return entry.getValue();
}
}
SLog.severe("Warning: Could not find player base server instance for player " + player.username);
return null;
}
public static SCoreEntityPlayerSP getPlayerBaseClientFromPlayer(EntityPlayer player)
{
if (player == null)
{
return null;
}
if (SpaceCore.playersClient.isEmpty())
{
return null;
}
final Iterator<Map.Entry<String, SCoreEntityPlayerSP>> it = SpaceCore.playersClient.entrySet().iterator();
while (it.hasNext())
{
final Map.Entry<String, SCoreEntityPlayerSP> entry = it.next();
if (entry.getKey() != null && entry.getKey().equals(player.username))
{
return entry.getValue();
}
}
SLog.severe("Warning: Could not find player base client instance for player " + player.username);
return null;
}
}
If I call SCoreEntityPlayerMP,SCoreEntityPlayerSP using PlayerUtil, I get a null value