Code: Select all
public void addPlayer(NetServerHandler par1NetServerHandler)
{
//DNCode Start
//this.connections.add(par1NetServerHandler);
this.connections.add(new GenericBTWAddonNetServerHandler(this.getServer(), par1NetServerHandler.netManager, par1NetServerHandler.playerEntity));
//DNCode End
}
Code: Select all
public void initializeConnectionToPlayer(INetworkManager par1INetworkManager, EntityPlayerMP par2EntityPlayerMP)
{
NBTTagCompound var3 = this.readPlayerDataFromFile(par2EntityPlayerMP);
par2EntityPlayerMP.setWorld(this.mcServer.worldServerForDimension(par2EntityPlayerMP.dimension));
par2EntityPlayerMP.theItemInWorldManager.setWorld((WorldServer)par2EntityPlayerMP.worldObj);
String var4 = "local";
if (par1INetworkManager.getSocketAddress() != null)
{
var4 = par1INetworkManager.getSocketAddress().toString();
}
this.mcServer.getLogAgent().logInfo(par2EntityPlayerMP.username + "[" + var4 + "] logged in with entity id " + par2EntityPlayerMP.entityId + " at (" + par2EntityPlayerMP.posX + ", " + par2EntityPlayerMP.posY + ", " + par2EntityPlayerMP.posZ + ")");
WorldServer var5 = this.mcServer.worldServerForDimension(par2EntityPlayerMP.dimension);
ChunkCoordinates var6 = var5.getSpawnPoint();
this.func_72381_a(par2EntityPlayerMP, (EntityPlayerMP)null, var5);
NetServerHandler var7 = new NetServerHandler(this.mcServer, par1INetworkManager, par2EntityPlayerMP);
var7.sendPacketToPlayer(new Packet1Login(par2EntityPlayerMP.entityId, var5.getWorldInfo().getTerrainType(), par2EntityPlayerMP.theItemInWorldManager.getGameType(), var5.getWorldInfo().isHardcoreModeEnabled(), var5.provider.dimensionId, var5.difficultySetting, var5.getHeight(), this.getMaxPlayers()));
var7.sendPacketToPlayer(new Packet6SpawnPosition(var6.posX, var6.posY, var6.posZ));
var7.sendPacketToPlayer(new Packet202PlayerAbilities(par2EntityPlayerMP.capabilities));
var7.sendPacketToPlayer(new Packet16BlockItemSwitch(par2EntityPlayerMP.inventory.currentItem));
this.func_96456_a((ServerScoreboard)var5.getScoreboard(), par2EntityPlayerMP);
this.updateTimeAndWeatherForPlayer(par2EntityPlayerMP, var5);
this.sendPacketToAllPlayers(new Packet3Chat(EnumChatFormatting.YELLOW + par2EntityPlayerMP.getTranslatedEntityName() + EnumChatFormatting.YELLOW + " joined the game."));
this.playerLoggedIn(par2EntityPlayerMP);
var7.setPlayerLocation(par2EntityPlayerMP.posX, par2EntityPlayerMP.posY, par2EntityPlayerMP.posZ, par2EntityPlayerMP.rotationYaw, par2EntityPlayerMP.rotationPitch);
this.mcServer.getNetworkThread().addPlayer(var7);
var7.sendPacketToPlayer(new Packet4UpdateTime(var5.getTotalWorldTime(), var5.getWorldTime()));
if (this.mcServer.getTexturePack().length() > 0)
{
par2EntityPlayerMP.requestTexturePackLoad(this.mcServer.getTexturePack(), this.mcServer.textureSize());
}
Iterator var8 = par2EntityPlayerMP.getActivePotionEffects().iterator();
while (var8.hasNext())
{
PotionEffect var9 = (PotionEffect)var8.next();
var7.sendPacketToPlayer(new Packet41EntityEffect(par2EntityPlayerMP.entityId, var9));
}
par2EntityPlayerMP.addSelfToInternalCraftingInventory();
if (var3 != null && var3.hasKey("Riding"))
{
Entity var10 = EntityList.createEntityFromNBT(var3.getCompoundTag("Riding"), var5);
if (var10 != null)
{
var10.field_98038_p = true;
var5.spawnEntityInWorld(var10);
par2EntityPlayerMP.mountEntity(var10);
var10.field_98038_p = false;
}
}
FCBetterThanWolves.ServerPlayerConnectionInitialized(var7, par2EntityPlayerMP);
}
Code: Select all
NetServerHandler var7 = new NetServerHandler(this.mcServer, par1INetworkManager, par2EntityPlayerMP);
this.mcServer.getNetworkThread().addPlayer(var7);
FCBetterThanWolves.ServerPlayerConnectionInitialized(var7, par2EntityPlayerMP);
This bug would be easy to fix if I could modify ServerConfigurationManager by changing the object type of var7 to be GenericBTWAddonNetServerHandler. It should be possible using bytecode manipulation to fix the bug otherwise, but it would be much easier to just change the class, so I'd like to request to distribute the BTW edits done to ServerConfigurationManger in the deco addon.