Skip to content

Commit

Permalink
Fix for #1552
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
covers1624 committed May 1, 2015
1 parent dfed1dd commit b38cfee
Show file tree
Hide file tree
Showing 5 changed files with 143 additions and 3 deletions.
19 changes: 16 additions & 3 deletions src/main/java/tconstruct/armor/ArmorProxyClient.java
Expand Up @@ -38,6 +38,7 @@
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;
Expand All @@ -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() {
Expand Down Expand Up @@ -522,5 +525,15 @@ private float interpolateRotation(float par1, float par2, float par3) {
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);
}

}
45 changes: 45 additions & 0 deletions src/main/java/tconstruct/armor/ArmorProxyCommon.java
Expand Up @@ -2,7 +2,9 @@

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;
Expand Down Expand Up @@ -65,4 +67,47 @@ public void registerKeys ()
{

}

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 ~~~~~~~~~~~~~~~~~");
}
}
18 changes: 18 additions & 0 deletions src/main/java/tconstruct/armor/TinkerArmorEvents.java
Expand Up @@ -6,15 +6,18 @@
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;
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
Expand Down Expand Up @@ -122,4 +125,19 @@ public void perfectDodge(LivingAttackEvent event)
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);
}

}
}
62 changes: 62 additions & 0 deletions 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.
}

}
2 changes: 2 additions & 0 deletions src/main/java/tconstruct/util/network/PacketPipeline.java
Expand Up @@ -135,6 +135,8 @@ public void registerPackets ()
registerPacket(GogglePacket.class);

registerPacket(MovementUpdatePacket.class);

registerPacket(ArmourGuiSyncPacket.class);
}

// Method to call from FMLPostInitializationEvent
Expand Down

0 comments on commit b38cfee

Please sign in to comment.