Skip to content

Commit

Permalink
Make TPlayerStats an IExtendedEntityProperties + associated changes
Browse files Browse the repository at this point in the history
Inventory + Knapsack inventory (and whether you have the manual) is now synced
whenever the player data is (e.g. on disconnect, on changing dimensions and
when going into the menu in SSP.

Other changes:
 * Remove Armor sync packet as it's not needed anymore
 * Move dropping of inventory and knapsack items from TEventHandler to
     TPlayerHandler. Changes to drop items will all other inventory items.
 * Make playerstats store in TPlayerHandler and make it use player UUIDs
     instead of player names (for compatibility with 1.7.6+)
 * Don't sync inventory manually on logging off / changing dimension
     (it's unneeded)
  • Loading branch information
portablejim committed Mar 6, 2014
1 parent cc2aeb8 commit 2444289
Show file tree
Hide file tree
Showing 13 changed files with 133 additions and 219 deletions.
1 change: 1 addition & 0 deletions src/main/java/tconstruct/TConstruct.java
Expand Up @@ -158,6 +158,7 @@ public void preInit (FMLPreInitializationEvent event)
playerTracker = new TPlayerHandler();
// GameRegistry.registerPlayerTracker(playerTracker);
FMLCommonHandler.instance().bus().register(playerTracker);
MinecraftForge.EVENT_BUS.register(playerTracker);

if (event.getSide() == Side.CLIENT)
{
Expand Down
1 change: 0 additions & 1 deletion src/main/java/tconstruct/client/TClientEvents.java
Expand Up @@ -116,7 +116,6 @@ public void renderHealthbar (RenderGameOverlayEvent.Pre event)
int scaledHeight = scaledresolution.getScaledHeight();
int xBasePos = scaledWidth / 2 - 91;
int yBasePos = scaledHeight - 39;
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(mc.thePlayer.getDisplayName());

boolean highlight = mc.thePlayer.hurtResistantTime / 3 % 2 == 1;

Expand Down
3 changes: 2 additions & 1 deletion src/main/java/tconstruct/client/TProxyClient.java
Expand Up @@ -151,6 +151,7 @@
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.registry.VillagerRegistry;
import tconstruct.util.player.TPlayerStats;

public class TProxyClient extends TProxyCommon
{
Expand Down Expand Up @@ -1050,7 +1051,7 @@ public void postInit ()

public void recalculateHealth ()
{
armorExtended.recalculateHealth(mc.thePlayer, TConstruct.playerTracker.getPlayerStats(mc.thePlayer.getDisplayName()));
armorExtended.recalculateHealth(mc.thePlayer, TPlayerStats.get(mc.thePlayer));
}

private static IIcon getIcon (IIcon icon)
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/tconstruct/common/TProxyCommon.java
Expand Up @@ -65,12 +65,12 @@ else if (ID < 100)
}
if (ID == armorGuiID)
{
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.getDisplayName());
TPlayerStats stats = TPlayerStats.get(player);
return new ArmorExtendedContainer(player.inventory, stats.armor);
}
if (ID == knapsackGuiID)
{
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.getDisplayName());
TPlayerStats stats = TPlayerStats.get(player);
return new KnapsackContainer(player.inventory, stats.knapsack);
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/tconstruct/items/armor/HeartCanister.java
Expand Up @@ -36,7 +36,7 @@ public ItemStack onItemRightClick (ItemStack stack, World world, EntityPlayer pl
}
if (!world.isRemote && meta == 2)
{
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.getDisplayName());
TPlayerStats stats = TPlayerStats.get(player);
if (stats != null)
{
ArmorExtended armor = stats.armor;
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/tconstruct/util/TCraftingHandler.java
Expand Up @@ -25,7 +25,7 @@ public void onCrafting (ItemCraftedEvent event)// EntityPlayer player,
{
if (ComparisonHelper.areEquivalent(item, TRepo.toolStationWood))
{
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(event.player.getDisplayName());
TPlayerStats stats = TPlayerStats.get(event.player);
NBTTagCompound tags = event.player.getEntityData().getCompoundTag("TConstruct");
if (!tags.getBoolean("materialManual") || !stats.materialManual)
{
Expand All @@ -36,7 +36,7 @@ public void onCrafting (ItemCraftedEvent event)// EntityPlayer player,
}
if (ComparisonHelper.areEquivalent(item, TRepo.smeltery) || ComparisonHelper.areEquivalent(item, TRepo.lavaTank))
{
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(event.player.getDisplayName());
TPlayerStats stats = TPlayerStats.get(event.player);
NBTTagCompound tags = event.player.getEntityData().getCompoundTag("TConstruct");
if (!tags.getBoolean("smelteryManual") || !stats.smelteryManual)
{
Expand Down
15 changes: 1 addition & 14 deletions src/main/java/tconstruct/util/TEventHandler.java
Expand Up @@ -459,19 +459,6 @@ else if (event.source.damageType.equals("player"))
}
}
}

GameRules rules = player.worldObj.getGameRules(); // Player is null
// if this
// crashes
if (rules == null || !rules.getGameRuleBooleanValue("keepInventory"))
{
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.getDisplayName());
if (stats != null)
{
stats.armor.dropItems();
stats.knapsack.dropItems();
}
}
}
}

Expand Down Expand Up @@ -632,7 +619,7 @@ public void livingUpdate (LivingUpdateEvent event)
if (event.entityLiving instanceof EntityPlayer)
{
EntityPlayer player = (EntityPlayer) event.entityLiving;
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.getDisplayName());
TPlayerStats stats = TPlayerStats.get(player);

if (stats != null && stats.armor != null)
{
Expand Down
77 changes: 0 additions & 77 deletions src/main/java/tconstruct/util/network/packet/PacketArmorSync.java

This file was deleted.

Expand Up @@ -141,7 +141,6 @@ public void registerPackets ()
registerPacket(PacketSmeltery.class);
registerPacket(PacketStencilTable.class);
registerPacket(PacketToolStation.class);
registerPacket(PacketArmorSync.class);
}

// Method to call from FMLPostInitializationEvent
Expand Down
23 changes: 12 additions & 11 deletions src/main/java/tconstruct/util/player/ArmorExtended.java
Expand Up @@ -4,11 +4,13 @@

import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.UUID;

import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.entity.ai.attributes.IAttributeInstance;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
Expand Down Expand Up @@ -66,7 +68,7 @@ public ItemStack decrStackSize (int slot, int quantity)
inventory[slot] = null;
}
EntityPlayer player = parent.get();
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.getDisplayName());
TPlayerStats stats = TPlayerStats.get(player);
recalculateHealth(player, stats);
return split;
}
Expand Down Expand Up @@ -94,7 +96,7 @@ public void setInventorySlotContents (int slot, ItemStack itemstack)
}

EntityPlayer player = parent.get();
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.getDisplayName());
TPlayerStats stats = TPlayerStats.get(player);
recalculateHealth(player, stats);
}

Expand All @@ -120,7 +122,7 @@ public int getInventoryStackLimit ()
public void markDirty ()
{
EntityPlayer player = parent.get();
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.getDisplayName());
TPlayerStats stats = TPlayerStats.get(player);
// recalculateSkills(player, stats);
recalculateHealth(player, stats);

Expand Down Expand Up @@ -223,9 +225,8 @@ public boolean isItemValidForSlot (int slot, ItemStack itemstack)
}

/* Save/Load */
public void saveToNBT (EntityPlayer entityplayer)
public void saveToNBT (NBTTagCompound tagCompound)
{
NBTTagCompound tags = entityplayer.getEntityData();
NBTTagList tagList = new NBTTagList();
NBTTagCompound invSlot;

Expand All @@ -240,13 +241,12 @@ public void saveToNBT (EntityPlayer entityplayer)
}
}

tags.setTag("TConstruct.Inventory", tagList);
tagCompound.setTag("Inventory", tagList);
}

public void readFromNBT (EntityPlayer entityplayer)
public void readFromNBT (NBTTagCompound tagCompound)
{
NBTTagCompound tags = entityplayer.getEntityData();
NBTTagList tagList = tags.getTagList("TConstruct.Inventory", 10);
NBTTagList tagList = tagCompound.getTagList("Inventory", 10);
for (int i = 0; i < tagList.tagCount(); ++i)
{
NBTTagCompound nbttagcompound = (NBTTagCompound) tagList.getCompoundTagAt(i);
Expand All @@ -260,14 +260,15 @@ public void readFromNBT (EntityPlayer entityplayer)
}
}

public void dropItems ()
public void dropItems(ArrayList<EntityItem> drops)
{
EntityPlayer player = parent.get();
for (int i = 0; i < 4; ++i)
{
if (this.inventory[i] != null)
{
player.dropPlayerItemWithRandomChoice(this.inventory[i], true);
EntityItem entityItem = player.func_146097_a(this.inventory[i], true, false);
drops.add(entityItem);
this.inventory[i] = null;
}
}
Expand Down
16 changes: 8 additions & 8 deletions src/main/java/tconstruct/util/player/KnapsackInventory.java
Expand Up @@ -2,6 +2,7 @@

import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.ArrayList;

import cpw.mods.fml.common.network.ByteBufUtils;
import io.netty.buffer.ByteBuf;
Expand Down Expand Up @@ -124,9 +125,8 @@ public boolean isUseableByPlayer (EntityPlayer entityplayer)
}

/* Save/Load */
public void saveToNBT (EntityPlayer entityplayer)
public void saveToNBT (NBTTagCompound tagCompound)
{
NBTTagCompound tags = entityplayer.getEntityData();
NBTTagList tagList = new NBTTagList();
NBTTagCompound invSlot;

Expand All @@ -141,13 +141,12 @@ public void saveToNBT (EntityPlayer entityplayer)
}
}

tags.setTag("TConstruct.Knapsack", tagList);
tagCompound.setTag("Knapsack", tagList);
}

public void readFromNBT (EntityPlayer entityplayer)
public void readFromNBT (NBTTagCompound tagCompound)
{
NBTTagCompound tags = entityplayer.getEntityData();
NBTTagList tagList = tags.getTagList("TConstruct.Knapsack", 10);
NBTTagList tagList = tagCompound.getTagList("Knapsack", 10);
for (int i = 0; i < tagList.tagCount(); ++i)
{
NBTTagCompound nbttagcompound = (NBTTagCompound) tagList.getCompoundTagAt(i);
Expand All @@ -161,14 +160,15 @@ public void readFromNBT (EntityPlayer entityplayer)
}
}

public void dropItems ()
public void dropItems(ArrayList<EntityItem> drops)
{
EntityPlayer player = parent.get();
for (int i = 0; i < inventory.length; ++i)
{
if (this.inventory[i] != null)
{
player.dropPlayerItemWithRandomChoice(this.inventory[i], true);
EntityItem entityItem = player.func_146097_a(this.inventory[i], true, false);
drops.add(entityItem);
this.inventory[i] = null;
}
}
Expand Down

0 comments on commit 2444289

Please sign in to comment.