serialization inventory work
Some checks reported errors
studiorailgun/Renderer/pipeline/head Something is wrong with the build of this commit
Some checks reported errors
studiorailgun/Renderer/pipeline/head Something is wrong with the build of this commit
This commit is contained in:
parent
fa9bc77638
commit
9ba0e7d881
@ -1713,6 +1713,10 @@ Structures are stored in character data as IDs into macro data now
|
|||||||
Item acquisition tree can be triggered by setting macro goal correctly
|
Item acquisition tree can be triggered by setting macro goal correctly
|
||||||
Macro sim triggers character to try to get mats to build structure
|
Macro sim triggers character to try to get mats to build structure
|
||||||
|
|
||||||
|
(05/11/2025)
|
||||||
|
Fix inventory handling in creature templates
|
||||||
|
Fix character data associated ids serialization bug
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -175,7 +175,7 @@ public class LoadingUtils {
|
|||||||
};
|
};
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for(String itemId : itemIds){
|
for(String itemId : itemIds){
|
||||||
template.getCreatureToolbarData().setSlotItem(i + "", ContentSerialization.createNewSerialization(EntityType.ITEM, itemId));
|
template.getInventoryData().addToolbarItem(i + "", ContentSerialization.createNewSerialization(EntityType.ITEM, itemId));
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
//set player character template
|
//set player character template
|
||||||
@ -184,7 +184,7 @@ public class LoadingUtils {
|
|||||||
|
|
||||||
//set player world-space coordinates
|
//set player world-space coordinates
|
||||||
Player playerObject = Globals.playerManager.getFirstPlayer();
|
Player playerObject = Globals.playerManager.getFirstPlayer();
|
||||||
Realm realm = Globals.realmManager.getRealms().iterator().next();
|
Realm realm = Globals.realmManager.getRealms().iterator(). next();
|
||||||
Vector3d spawnPoint = realm.getSpawnPoint();
|
Vector3d spawnPoint = realm.getSpawnPoint();
|
||||||
playerObject.setWorldPos(new Vector3i(
|
playerObject.setWorldPos(new Vector3i(
|
||||||
ServerWorldData.convertRealToChunkSpace(spawnPoint.x),
|
ServerWorldData.convertRealToChunkSpace(spawnPoint.x),
|
||||||
|
|||||||
@ -0,0 +1,158 @@
|
|||||||
|
package electrosphere.entity.types.creature;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import electrosphere.server.entity.serialization.EntitySerialization;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inventory data for a creature template
|
||||||
|
*/
|
||||||
|
public class CreatureInventoryData {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toolbar items
|
||||||
|
*/
|
||||||
|
Map<String,EntitySerialization> toolbarItemMap = new HashMap<String,EntitySerialization>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Equipped items
|
||||||
|
*/
|
||||||
|
Map<String,EntitySerialization> equipItemMap = new HashMap<String,EntitySerialization>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Natural inventory items
|
||||||
|
*/
|
||||||
|
List<EntitySerialization> naturalItems = new LinkedList<EntitySerialization>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maps toolbar slot -> id of the entity that was serialized
|
||||||
|
*/
|
||||||
|
Map<String,Integer> toolbarIdMap = new HashMap<String,Integer>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maps equipped slot -> id of the entity that was serialized
|
||||||
|
*/
|
||||||
|
Map<String,Integer> equippedIdMap = new HashMap<String,Integer>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maps natural slot -> id of the entity that was serialized
|
||||||
|
*/
|
||||||
|
Map<Integer,Integer> naturalIdMap = new HashMap<Integer,Integer>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds an item to the toolbar
|
||||||
|
* @param slot The slot to add it at
|
||||||
|
* @param itemSerialization The item serialization
|
||||||
|
*/
|
||||||
|
public void addToolbarItem(String slot, EntitySerialization itemSerialization){
|
||||||
|
if(toolbarItemMap.containsKey(slot)){
|
||||||
|
throw new Error("Item slot already occupied " + slot);
|
||||||
|
}
|
||||||
|
toolbarItemMap.put(slot, itemSerialization);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds an item to the equipped item set
|
||||||
|
* @param slot The slot to add it at
|
||||||
|
* @param itemSerialization The item serialization
|
||||||
|
*/
|
||||||
|
public void addEquippedItem(String slot, EntitySerialization itemSerialization){
|
||||||
|
if(equipItemMap.containsKey(slot)){
|
||||||
|
throw new Error("Item slot already occupied " + slot);
|
||||||
|
}
|
||||||
|
equipItemMap.put(slot, itemSerialization);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds an item to the natural inventory
|
||||||
|
* @param itemSerialization The item serialization
|
||||||
|
*/
|
||||||
|
public void addNaturalItem(EntitySerialization itemSerialization){
|
||||||
|
naturalItems.add(itemSerialization);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the set of entries of toolbar items
|
||||||
|
* @return The set
|
||||||
|
*/
|
||||||
|
public Set<Entry<String,EntitySerialization>> getToolbarItems(){
|
||||||
|
return toolbarItemMap.entrySet();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the set of entries of equipped items
|
||||||
|
* @return The set
|
||||||
|
*/
|
||||||
|
public Set<Entry<String,EntitySerialization>> getEquipItems(){
|
||||||
|
return equipItemMap.entrySet();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the list of natural items
|
||||||
|
* @return The list of natural items
|
||||||
|
*/
|
||||||
|
public List<EntitySerialization> getNaturalItems(){
|
||||||
|
return naturalItems;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the id of a toolbar entity
|
||||||
|
* @param slot The slot of the entity on the toolbar
|
||||||
|
* @param id The id
|
||||||
|
*/
|
||||||
|
public void setToolbarId(String slot, int id){
|
||||||
|
toolbarIdMap.put(slot, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the id of a toolbar entity
|
||||||
|
* @param slot The slot in the toolbar
|
||||||
|
* @return The id
|
||||||
|
*/
|
||||||
|
public int getToolbarId(String slot){
|
||||||
|
return toolbarIdMap.get(slot);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the id of an equipped entity
|
||||||
|
* @param slot The slot of the equipped entity
|
||||||
|
* @param id The id
|
||||||
|
*/
|
||||||
|
public void setEquippedId(String slot, int id){
|
||||||
|
equippedIdMap.put(slot, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the id of an euqipped entity
|
||||||
|
* @param slot The slot equipped to
|
||||||
|
* @return The id
|
||||||
|
*/
|
||||||
|
public int getEquippedId(String slot){
|
||||||
|
return equippedIdMap.get(slot);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the id of a natural inventory entity
|
||||||
|
* @param slot The slot of the natural item
|
||||||
|
* @param id The id
|
||||||
|
*/
|
||||||
|
public void setNaturalId(int slot, int id){
|
||||||
|
naturalIdMap.put(slot, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the id of a natural inventory item
|
||||||
|
* @param slot The slot of the natural item
|
||||||
|
* @return The id
|
||||||
|
*/
|
||||||
|
public int getNaturalId(int slot){
|
||||||
|
return naturalIdMap.get(slot);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@ -24,14 +24,9 @@ public class CreatureTemplate {
|
|||||||
private Map<String,CreatureTemplateAttributeValue> attributeMap = new HashMap<String,CreatureTemplateAttributeValue>();
|
private Map<String,CreatureTemplateAttributeValue> attributeMap = new HashMap<String,CreatureTemplateAttributeValue>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The equip data for the creature
|
* Data about the inventory of the creature
|
||||||
*/
|
*/
|
||||||
private CreatureEquipData equipData = new CreatureEquipData();
|
private CreatureInventoryData inventoryData = new CreatureInventoryData();
|
||||||
|
|
||||||
/**
|
|
||||||
* The toolbar data for the creature
|
|
||||||
*/
|
|
||||||
private CreatureToolbarData toolbarData = new CreatureToolbarData();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The collection of synchronized values
|
* The collection of synchronized values
|
||||||
@ -85,19 +80,11 @@ public class CreatureTemplate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the creature equip data for the template
|
* Gets the inventory data for the creature
|
||||||
* @return The creature equip data for the template
|
* @return The inventory data
|
||||||
*/
|
*/
|
||||||
public CreatureEquipData getCreatureEquipData(){
|
public CreatureInventoryData getInventoryData(){
|
||||||
return this.equipData;
|
return this.inventoryData;
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the toolbar data for the template
|
|
||||||
* @return The toolbar data for the template
|
|
||||||
*/
|
|
||||||
public CreatureToolbarData getCreatureToolbarData(){
|
|
||||||
return this.toolbarData;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package electrosphere.entity.types.creature;
|
package electrosphere.entity.types.creature;
|
||||||
|
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import org.joml.Quaterniond;
|
import org.joml.Quaterniond;
|
||||||
import org.joml.Vector3d;
|
import org.joml.Vector3d;
|
||||||
|
|
||||||
@ -21,11 +23,11 @@ import electrosphere.entity.state.equip.ServerToolbarState;
|
|||||||
import electrosphere.entity.state.idle.ClientIdleTree;
|
import electrosphere.entity.state.idle.ClientIdleTree;
|
||||||
import electrosphere.entity.state.inventory.InventoryUtils;
|
import electrosphere.entity.state.inventory.InventoryUtils;
|
||||||
import electrosphere.entity.state.inventory.RelationalInventoryState;
|
import electrosphere.entity.state.inventory.RelationalInventoryState;
|
||||||
|
import electrosphere.entity.state.inventory.UnrelationalInventoryState;
|
||||||
import electrosphere.entity.state.movement.groundmove.ClientGroundMovementTree;
|
import electrosphere.entity.state.movement.groundmove.ClientGroundMovementTree;
|
||||||
import electrosphere.entity.state.movement.groundmove.ServerGroundMovementTree;
|
import electrosphere.entity.state.movement.groundmove.ServerGroundMovementTree;
|
||||||
import electrosphere.entity.types.EntityTypes.EntityType;
|
import electrosphere.entity.types.EntityTypes.EntityType;
|
||||||
import electrosphere.entity.types.common.CommonEntityUtils;
|
import electrosphere.entity.types.common.CommonEntityUtils;
|
||||||
import electrosphere.entity.types.creature.CreatureEquipData.EquippedItem;
|
|
||||||
import electrosphere.entity.types.item.ItemUtils;
|
import electrosphere.entity.types.item.ItemUtils;
|
||||||
import electrosphere.game.data.creature.type.CreatureData;
|
import electrosphere.game.data.creature.type.CreatureData;
|
||||||
import electrosphere.game.data.creature.type.visualattribute.AttributeVariant;
|
import electrosphere.game.data.creature.type.visualattribute.AttributeVariant;
|
||||||
@ -156,35 +158,44 @@ public class CreatureUtils {
|
|||||||
//must happen after the player is attached to the entity, or server won't send packet to add item to player's entity
|
//must happen after the player is attached to the entity, or server won't send packet to add item to player's entity
|
||||||
//now that creature has been spawned, need to create all attached items
|
//now that creature has been spawned, need to create all attached items
|
||||||
if(template != null){
|
if(template != null){
|
||||||
if(template.getCreatureEquipData() != null && template.getCreatureEquipData().getSlots() != null){
|
if(template.getInventoryData() != null){
|
||||||
for(String equipSlotId : template.getCreatureEquipData().getSlots()){
|
CreatureInventoryData inventoryData = template.getInventoryData();
|
||||||
|
for(Entry<String,EntitySerialization> toolbarItem : inventoryData.getToolbarItems()){
|
||||||
|
EntitySerialization serialization = toolbarItem.getValue();
|
||||||
|
String toolbarSlot = toolbarItem.getKey();
|
||||||
//add the item to the creature's inventory
|
//add the item to the creature's inventory
|
||||||
EquippedItem itemDefinition = template.getCreatureEquipData().getSlotItem(equipSlotId);
|
Entity itemInWorld = ContentSerialization.clientHydrateEntitySerialization(serialization);
|
||||||
Entity itemInInventory = InventoryUtils.clientConstructInInventoryItem(creature,itemDefinition.getItemType());
|
|
||||||
|
|
||||||
//equip the item to the slot defined in the template
|
|
||||||
ClientEquipState clientEquipState = ClientEquipState.getEquipState(creature);
|
|
||||||
clientEquipState.attemptEquip(itemInInventory, clientEquipState.getEquipPoint(equipSlotId));
|
|
||||||
|
|
||||||
//map the constructed item to its server id
|
|
||||||
Globals.clientSceneWrapper.mapIdToId(itemInInventory.getId(), itemDefinition.getEntityId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(template.getCreatureToolbarData() != null && template.getCreatureToolbarData().getSlots() != null){
|
|
||||||
for(String equipSlotId : template.getCreatureToolbarData().getSlots()){
|
|
||||||
|
|
||||||
//add the item to the creature's inventory
|
|
||||||
EntitySerialization itemDefinition = template.getCreatureToolbarData().getSlotItem(equipSlotId);
|
|
||||||
Entity itemInWorld = ContentSerialization.clientHydrateEntitySerialization(itemDefinition);
|
|
||||||
Entity itemInInventory = ItemUtils.clientRecreateContainerItem(itemInWorld, creature);
|
Entity itemInInventory = ItemUtils.clientRecreateContainerItem(itemInWorld, creature);
|
||||||
|
|
||||||
//equip the item to the slot defined in the template
|
//equip the item to the slot defined in the template
|
||||||
ClientToolbarState clientToolbarState = ClientToolbarState.getClientToolbarState(creature);
|
ClientToolbarState clientToolbarState = ClientToolbarState.getClientToolbarState(creature);
|
||||||
clientToolbarState.attemptAddToToolbar(itemInInventory, Integer.parseInt(equipSlotId));
|
clientToolbarState.attemptAddToToolbar(itemInInventory, Integer.parseInt(toolbarSlot));
|
||||||
|
|
||||||
//map the constructed item to its server id
|
//map the constructed item to its server id
|
||||||
Globals.clientSceneWrapper.mapIdToId(itemInInventory.getId(), template.getCreatureToolbarData().getId(equipSlotId));
|
Globals.clientSceneWrapper.mapIdToId(itemInInventory.getId(), inventoryData.getToolbarId(toolbarSlot));
|
||||||
|
}
|
||||||
|
for(Entry<String,EntitySerialization> equippedItem : inventoryData.getEquipItems()){
|
||||||
|
EntitySerialization serialization = equippedItem.getValue();
|
||||||
|
String equipSlot = equippedItem.getKey();
|
||||||
|
|
||||||
|
//add the item to the creature's inventory
|
||||||
|
Entity itemInInventory = InventoryUtils.clientConstructInInventoryItem(creature,serialization.getSubtype());
|
||||||
|
|
||||||
|
//equip the item to the slot defined in the template
|
||||||
|
ClientEquipState clientEquipState = ClientEquipState.getEquipState(creature);
|
||||||
|
clientEquipState.attemptEquip(itemInInventory, clientEquipState.getEquipPoint(equipSlot));
|
||||||
|
|
||||||
|
//map the constructed item to its server id
|
||||||
|
Globals.clientSceneWrapper.mapIdToId(itemInInventory.getId(), inventoryData.getEquippedId(equipSlot));
|
||||||
|
}
|
||||||
|
int i = 0;
|
||||||
|
for(EntitySerialization naturalItem : inventoryData.getNaturalItems()){
|
||||||
|
//add the item to the creature's inventory
|
||||||
|
Entity itemInInventory = InventoryUtils.clientConstructInInventoryItem(creature,naturalItem.getSubtype());
|
||||||
|
|
||||||
|
//map the constructed item to its server id
|
||||||
|
Globals.clientSceneWrapper.mapIdToId(itemInInventory.getId(), inventoryData.getNaturalId(i));
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -306,34 +317,41 @@ public class CreatureUtils {
|
|||||||
//must happen after the player is attached to the entity, or server won't send packet to add item to player's entity
|
//must happen after the player is attached to the entity, or server won't send packet to add item to player's entity
|
||||||
//now that creature has been spawned, need to create all attached items
|
//now that creature has been spawned, need to create all attached items
|
||||||
if(template != null){
|
if(template != null){
|
||||||
if(template.getCreatureEquipData() != null && template.getCreatureEquipData().getSlots() != null){
|
if(template.getInventoryData() != null){
|
||||||
for(String equipSlotId : template.getCreatureEquipData().getSlots()){
|
CreatureInventoryData inventoryData = template.getInventoryData();
|
||||||
|
for(Entry<String,EntitySerialization> toolbarItem : inventoryData.getToolbarItems()){
|
||||||
//spawn the item in the world
|
EntitySerialization serialization = toolbarItem.getValue();
|
||||||
EquippedItem itemDefinition = template.getCreatureEquipData().getSlotItem(equipSlotId);
|
String toolbarSlot = toolbarItem.getKey();
|
||||||
Entity itemInWorld = ItemUtils.serverSpawnBasicItem(realm, EntityUtils.getPosition(creature), itemDefinition.getItemType());
|
|
||||||
|
|
||||||
//add the item to the creature's inventory
|
//add the item to the creature's inventory
|
||||||
Entity itemInInventory = InventoryUtils.serverAttemptStoreItemTransform(creature, EntityLookupUtils.getEntityById(itemInWorld.getId()));
|
Entity itemInWorld = ContentSerialization.serverHydrateEntitySerialization(realm, serialization);
|
||||||
|
|
||||||
//equip the item to the slot defined in the template
|
|
||||||
ServerEquipState serverEquipState = ServerEquipState.getEquipState(creature);
|
|
||||||
serverEquipState.commandAttemptEquip(itemInInventory,serverEquipState.getEquipPoint(equipSlotId));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(template.getCreatureToolbarData() != null && template.getCreatureToolbarData().getSlots() != null){
|
|
||||||
for(String equipSlotId : template.getCreatureToolbarData().getSlots()){
|
|
||||||
|
|
||||||
//spawn the item in the world
|
|
||||||
EntitySerialization itemDefinition = template.getCreatureToolbarData().getSlotItem(equipSlotId);
|
|
||||||
Entity itemInWorld = ContentSerialization.serverHydrateEntitySerialization(realm, itemDefinition);
|
|
||||||
|
|
||||||
//add the item to the creature's inventory
|
//add the item to the creature's inventory
|
||||||
Entity itemInInventory = InventoryUtils.serverAttemptStoreItemTransform(creature, EntityLookupUtils.getEntityById(itemInWorld.getId()));
|
Entity itemInInventory = InventoryUtils.serverAttemptStoreItemTransform(creature, EntityLookupUtils.getEntityById(itemInWorld.getId()));
|
||||||
|
|
||||||
//equip the item to the slot defined in the template
|
//equip the item to the slot defined in the template
|
||||||
ServerToolbarState serverToolbarState = ServerToolbarState.getServerToolbarState(creature);
|
ServerToolbarState serverToolbarState = ServerToolbarState.getServerToolbarState(creature);
|
||||||
serverToolbarState.attemptEquip(itemInInventory, Integer.parseInt(equipSlotId));
|
serverToolbarState.attemptEquip(itemInInventory, Integer.parseInt(toolbarSlot));
|
||||||
|
}
|
||||||
|
for(Entry<String,EntitySerialization> equippedItem : inventoryData.getEquipItems()){
|
||||||
|
EntitySerialization serialization = equippedItem.getValue();
|
||||||
|
String equipSlot = equippedItem.getKey();
|
||||||
|
|
||||||
|
//add the item to the creature's inventory
|
||||||
|
Entity itemInWorld = ItemUtils.serverSpawnBasicItem(realm, EntityUtils.getPosition(creature), serialization.getSubtype());
|
||||||
|
|
||||||
|
//add the item to the creature's inventory
|
||||||
|
Entity itemInInventory = InventoryUtils.serverAttemptStoreItemTransform(creature, EntityLookupUtils.getEntityById(itemInWorld.getId()));
|
||||||
|
|
||||||
|
//equip the item to the slot defined in the template
|
||||||
|
ServerEquipState serverEquipState = ServerEquipState.getEquipState(creature);
|
||||||
|
serverEquipState.commandAttemptEquip(itemInInventory,serverEquipState.getEquipPoint(equipSlot));
|
||||||
|
}
|
||||||
|
for(EntitySerialization naturalItem : inventoryData.getNaturalItems()){
|
||||||
|
//add the item to the creature's inventory
|
||||||
|
Entity itemInWorld = ItemUtils.serverSpawnBasicItem(realm, EntityUtils.getPosition(creature), naturalItem.getSubtype());
|
||||||
|
|
||||||
|
//add the item to the creature's inventory
|
||||||
|
InventoryUtils.serverAttemptStoreItemTransform(creature, EntityLookupUtils.getEntityById(itemInWorld.getId()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -536,13 +554,14 @@ public class CreatureUtils {
|
|||||||
*/
|
*/
|
||||||
public static CreatureTemplate getCreatureTemplate(Entity e){
|
public static CreatureTemplate getCreatureTemplate(Entity e){
|
||||||
CreatureTemplate template = (CreatureTemplate)e.getData(EntityDataStrings.CREATURE_TEMPLATE);
|
CreatureTemplate template = (CreatureTemplate)e.getData(EntityDataStrings.CREATURE_TEMPLATE);
|
||||||
|
CreatureInventoryData inventoryData = template.getInventoryData();
|
||||||
if(ServerEquipState.hasEquipState(e)){
|
if(ServerEquipState.hasEquipState(e)){
|
||||||
ServerEquipState serverEquipState = ServerEquipState.getEquipState(e);
|
ServerEquipState serverEquipState = ServerEquipState.getEquipState(e);
|
||||||
CreatureEquipData equipData = template.getCreatureEquipData();
|
|
||||||
equipData.clear();
|
|
||||||
for(String point : serverEquipState.equippedPoints()){
|
for(String point : serverEquipState.equippedPoints()){
|
||||||
Entity item = serverEquipState.getEquippedItemAtPoint(point);
|
Entity item = serverEquipState.getEquippedItemAtPoint(point);
|
||||||
equipData.setSlotItem(point, new EquippedItem(item.getId(),ItemUtils.getType(item)));
|
EntitySerialization itemSerialized = ContentSerialization.constructEntitySerialization(item);
|
||||||
|
inventoryData.addEquippedItem(point, itemSerialized);
|
||||||
|
inventoryData.setEquippedId(point, item.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(InventoryUtils.hasToolbarInventory(e)){
|
if(InventoryUtils.hasToolbarInventory(e)){
|
||||||
@ -551,8 +570,20 @@ public class CreatureUtils {
|
|||||||
Entity slotItem = toolbarInventory.getItemSlot(slot);
|
Entity slotItem = toolbarInventory.getItemSlot(slot);
|
||||||
if(slotItem != null){
|
if(slotItem != null){
|
||||||
EntitySerialization itemSerialized = ContentSerialization.constructEntitySerialization(slotItem);
|
EntitySerialization itemSerialized = ContentSerialization.constructEntitySerialization(slotItem);
|
||||||
template.getCreatureToolbarData().setSlotItem(slot,itemSerialized);
|
inventoryData.addToolbarItem(slot, itemSerialized);
|
||||||
template.getCreatureToolbarData().setSlotId(slot, slotItem.getId());
|
inventoryData.setToolbarId(slot, slotItem.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(InventoryUtils.hasNaturalInventory(e)){
|
||||||
|
UnrelationalInventoryState toolbarInventory = InventoryUtils.getNaturalInventory(e);
|
||||||
|
int i = 0;
|
||||||
|
for(Entity item : toolbarInventory.getItems()){
|
||||||
|
if(item != null){
|
||||||
|
EntitySerialization itemSerialized = ContentSerialization.constructEntitySerialization(item);
|
||||||
|
inventoryData.addNaturalItem(itemSerialized);
|
||||||
|
inventoryData.setNaturalId(i, item.getId());
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -159,7 +159,7 @@ public class CharacterProtocol implements ServerProtocolTemplate<CharacterMessag
|
|||||||
};
|
};
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for(String itemId : itemIds){
|
for(String itemId : itemIds){
|
||||||
template.getCreatureToolbarData().setSlotItem(i + "", ContentSerialization.createNewSerialization(EntityType.ITEM, itemId));
|
template.getInventoryData().addToolbarItem(i + "", ContentSerialization.createNewSerialization(EntityType.ITEM, itemId));
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
//set player character template
|
//set player character template
|
||||||
@ -189,7 +189,7 @@ public class CharacterProtocol implements ServerProtocolTemplate<CharacterMessag
|
|||||||
};
|
};
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for(String itemId : itemIds){
|
for(String itemId : itemIds){
|
||||||
template.getCreatureToolbarData().setSlotItem(i + "", ContentSerialization.createNewSerialization(EntityType.ITEM, itemId));
|
template.getInventoryData().addToolbarItem(i + "", ContentSerialization.createNewSerialization(EntityType.ITEM, itemId));
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
//set player character template
|
//set player character template
|
||||||
|
|||||||
@ -48,7 +48,7 @@ public class CharacterUtils {
|
|||||||
* @param shelter The shelter
|
* @param shelter The shelter
|
||||||
*/
|
*/
|
||||||
public static void addShelter(Character character, Structure shelter){
|
public static void addShelter(Character character, Structure shelter){
|
||||||
character.putData(CharacterDataStrings.SHELTER, new CharacterAssociatedId(shelter.getId()));
|
character.putData(CharacterDataStrings.SHELTER, new CharacterAssociatedId(CharacterDataStrings.SHELTER, shelter.getId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -13,8 +13,8 @@ public class CharacterAssociatedId extends CharacterData {
|
|||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*/
|
*/
|
||||||
public CharacterAssociatedId(int id){
|
public CharacterAssociatedId(String key, int id){
|
||||||
super("AssociatedId");
|
super(key);
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,11 @@ public class CharacterDataStrings {
|
|||||||
public static final String HOMETOWN = "hometown";
|
public static final String HOMETOWN = "hometown";
|
||||||
public static final String TOWN = "town";
|
public static final String TOWN = "town";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data string for an associated id
|
||||||
|
*/
|
||||||
|
public static final String ASSOCIATED_ID = "associatedId";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Goal for a given entity
|
* Goal for a given entity
|
||||||
*/
|
*/
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user