The Server was not syncing the players TPlayerStats to the client until
the Armor tab was opened.
Added Packet.
Send Packet on EntityJoinEvent.

Format Derp.

Changed to Debug and added Knapsack slot output.
This commit is contained in:
covers1624 committed 2015-05-01 23:33:08 +09:30
1 parent dfed1dd9f4
commit b38cfee5ff
5 files changed
+143 -3

No files matched your search

@@ -38,6 +38,7 @@ import tconstruct.armor.model.HiddenPlayerModel;
import tconstruct.armor.model.WingModel;
import tconstruct.armor.player.ArmorExtended;
import tconstruct.armor.player.KnapsackInventory;
import tconstruct.armor.player.TPlayerStats;
import tconstruct.client.ArmorControls;
import tconstruct.client.tabs.InventoryTabArmorExtended;
import tconstruct.client.tabs.InventoryTabKnapsack;
@@ -58,9 +59,11 @@ public class ArmorProxyClient extends ArmorProxyCommon {
public static HiddenPlayerModel glove = new HiddenPlayerModel(0.25F, 4);
public static HiddenPlayerModel vest = new HiddenPlayerModel(0.25f, 1);
public static BeltModel belt = new BeltModel();
public static KnapsackInventory knapsack = new KnapsackInventory();
public static ArmorExtended armorExtended = new ArmorExtended();
public static TPlayerStats playerStats = new TPlayerStats();
public static KnapsackInventory knapsack = playerStats.knapsack;
public static ArmorExtended armorExtended = playerStats.armor;
@Override
public void preInit() {
@@ -522,5 +525,15 @@ public class ArmorProxyClient extends ArmorProxyCommon {
protected float handleRotationFloat(EntityLivingBase par1EntityLivingBase, float par2) {
return (float) par1EntityLivingBase.ticksExisted + par2;
}
@Override
public void updatePlayerStats (TPlayerStats stats)
{
playerStats.copyFrom(stats, false);
armorExtended = stats.armor;
knapsack = stats.knapsack;
//dumpTPlayerStats(stats);
}
}
@@ -2,7 +2,9 @@ package tconstruct.armor;
import cpw.mods.fml.common.network.IGuiHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import tconstruct.TConstruct;
import tconstruct.armor.inventory.*;
import tconstruct.armor.player.TPlayerStats;
import tconstruct.common.TProxyCommon;
@@ -65,4 +67,47 @@ public class ArmorProxyCommon implements IGuiHandler
{
}
public void updatePlayerStats(TPlayerStats stats)
{
}
public void dumpTPlayerStats(TPlayerStats stats)
{
TConstruct.logger.debug("~~~~~~~~~~~~~~~~~ STATS ~~~~~~~~~~~~~~~~~");
TConstruct.logger.debug("Player: " + stats.player.get().getCommandSenderName());
TConstruct.logger.debug("Level: " + stats.level);
TConstruct.logger.debug("BonusHealth: " + stats.bonusHealth);
TConstruct.logger.debug("Damage: " + stats.damage);
TConstruct.logger.debug("Hunger: " + stats.hunger);
TConstruct.logger.debug("Prev Dim: " + stats.previousDimension);
TConstruct.logger.debug("Climb Walls: " + stats.climbWalls);
TConstruct.logger.debug("Activate Goggles: " + stats.activeGoggles);
TConstruct.logger.debug("Beginer Manual: " + stats.beginnerManual);
TConstruct.logger.debug("Material Manual: " + stats.materialManual);
TConstruct.logger.debug("Smeltery Manual: " + stats.smelteryManual);
TConstruct.logger.debug("Weponary Manual: " + stats.weaponryManual);
TConstruct.logger.debug("BattleSign Bonus: " + stats.battlesignBonus);
TConstruct.logger.debug("Derp Level: " + stats.derpLevel);
int i = 0;
for (ItemStack stack : stats.armor.inventory)
{
if (stack != null)
{
TConstruct.logger.debug("Armor Slot: " + i + " Contains: " + stack.getDisplayName());
}
i++;
}
i = 0;
for (ItemStack stack : stats.knapsack.inventory)
{
if (stack != null)
{
TConstruct.logger.debug("Knapsack Slot: " + i + " Contains: " + stack.getDisplayName());
}
i++;
}
TConstruct.logger.debug("~~~~~~~~~~~~~~~~~ STATS ~~~~~~~~~~~~~~~~~");
}
}
@@ -6,8 +6,10 @@ import net.minecraft.entity.boss.*;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.monster.IMob;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
import net.minecraftforge.event.entity.living.*;
import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent;
import tconstruct.TConstruct;
@@ -15,6 +17,7 @@ import tconstruct.armor.items.TravelWings;
import tconstruct.armor.player.ArmorExtended;
import tconstruct.armor.player.TPlayerStats;
import tconstruct.library.modifier.IModifyable;
import tconstruct.util.network.ArmourGuiSyncPacket;
import tconstruct.world.entity.BlueSlime;
public class TinkerArmorEvents
@@ -122,4 +125,19 @@ public class TinkerArmorEvents
if(dodge > TConstruct.random.nextInt(10))
event.setCanceled(true);
}
@SubscribeEvent
public void joinWorld(EntityJoinWorldEvent event)
{
if (event.entity instanceof EntityPlayerMP)
{
EntityPlayerMP player = (EntityPlayerMP)event.entity;
TPlayerStats stats = TPlayerStats.get(player);
NBTTagCompound tag = new NBTTagCompound();
stats.saveNBTData(tag);
ArmourGuiSyncPacket syncPacket = new ArmourGuiSyncPacket(tag);
TConstruct.packetPipeline.sendTo(syncPacket, player);
}
}
}
@@ -0,0 +1,62 @@
package tconstruct.util.network;
import tconstruct.TConstruct;
import tconstruct.armor.TinkerArmor;
import tconstruct.armor.player.TPlayerStats;
import cpw.mods.fml.common.network.ByteBufUtils;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import mantle.common.network.AbstractPacket;
/**
* This Packet is for sending the players TPlayerStats from the server to the client.
*
* @author covers1624
*/
public class ArmourGuiSyncPacket extends AbstractPacket
{
NBTTagCompound playerStats = new NBTTagCompound();
public ArmourGuiSyncPacket()
{
}
/**
* For sending the players TPlayerStats to the client.
* @param tag, The players TPlayerStats written to NBT.
*/
public ArmourGuiSyncPacket(NBTTagCompound tag)
{
playerStats = tag;
}
@Override
public void encodeInto (ChannelHandlerContext ctx, ByteBuf buffer)
{
ByteBufUtils.writeTag(buffer, playerStats);
}
@Override
public void decodeInto (ChannelHandlerContext ctx, ByteBuf buffer)
{
playerStats = ByteBufUtils.readTag(buffer);
}
@Override
public void handleClientSide (EntityPlayer player)
{
TConstruct.logger.info("Packet Arrived!");
TPlayerStats stats = new TPlayerStats(player);
stats.loadNBTData(playerStats);
TinkerArmor.proxy.updatePlayerStats(stats);
}
@Override
public void handleServerSide (EntityPlayer player)
{
//NO-OP. this is a Server -> client packet.
}
}
@@ -135,6 +135,8 @@ public class PacketPipeline extends MessageToMessageCodec<FMLProxyPacket, Abstra
registerPacket(GogglePacket.class);
registerPacket(MovementUpdatePacket.class);
registerPacket(ArmourGuiSyncPacket.class);
}
// Method to call from FMLPostInitializationEvent