diff --git a/src/main/java/tconstruct/armor/ArmorProxyClient.java b/src/main/java/tconstruct/armor/ArmorProxyClient.java index d3ad1915..1dce9516 100644 --- a/src/main/java/tconstruct/armor/ArmorProxyClient.java +++ b/src/main/java/tconstruct/armor/ArmorProxyClient.java @@ -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); + } } diff --git a/src/main/java/tconstruct/armor/ArmorProxyCommon.java b/src/main/java/tconstruct/armor/ArmorProxyCommon.java index d7df1d28..51d507ee 100644 --- a/src/main/java/tconstruct/armor/ArmorProxyCommon.java +++ b/src/main/java/tconstruct/armor/ArmorProxyCommon.java @@ -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 ~~~~~~~~~~~~~~~~~"); + } } diff --git a/src/main/java/tconstruct/armor/TinkerArmorEvents.java b/src/main/java/tconstruct/armor/TinkerArmorEvents.java index 407b28c5..61fdeebb 100644 --- a/src/main/java/tconstruct/armor/TinkerArmorEvents.java +++ b/src/main/java/tconstruct/armor/TinkerArmorEvents.java @@ -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); + } + + } } diff --git a/src/main/java/tconstruct/util/network/ArmourGuiSyncPacket.java b/src/main/java/tconstruct/util/network/ArmourGuiSyncPacket.java new file mode 100644 index 00000000..e2c56ff0 --- /dev/null +++ b/src/main/java/tconstruct/util/network/ArmourGuiSyncPacket.java @@ -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. + } + +} diff --git a/src/main/java/tconstruct/util/network/PacketPipeline.java b/src/main/java/tconstruct/util/network/PacketPipeline.java index c87eaa6b..551213be 100644 --- a/src/main/java/tconstruct/util/network/PacketPipeline.java +++ b/src/main/java/tconstruct/util/network/PacketPipeline.java @@ -135,6 +135,8 @@ public class PacketPipeline extends MessageToMessageCodec