inventory data definition

This commit is contained in:
austin 2025-05-13 14:15:45 -04:00
parent 1a9bd8daa5
commit e68e637a84
8 changed files with 65 additions and 13 deletions

View File

@ -7,7 +7,6 @@
"tokens" : [ "tokens" : [
"TARGETABLE", "TARGETABLE",
"CAN_EQUIP", "CAN_EQUIP",
"INVENTORY",
"OUTLINE", "OUTLINE",
"PLAYABLE", "PLAYABLE",
"UNIT_CONTROLS", "UNIT_CONTROLS",
@ -47,6 +46,9 @@
"primarySlot" : "handRight", "primarySlot" : "handRight",
"combinedSlot" : "handsCombined" "combinedSlot" : "handsCombined"
}, },
"inventoryData" : {
"naturalSize" : 10
},
"attackMoves" : [], "attackMoves" : [],
"healthSystem" : { "healthSystem" : {
"maxHealth" : 100, "maxHealth" : 100,

View File

@ -74,11 +74,13 @@
"GRAVITY", "GRAVITY",
"TARGETABLE", "TARGETABLE",
"CAN_EQUIP", "CAN_EQUIP",
"INVENTORY",
"OUTLINE", "OUTLINE",
"PLAYABLE", "PLAYABLE",
"UNIT_CONTROLS" "UNIT_CONTROLS"
], ],
"inventoryData" : {
"naturalSize" : 10
},
"visualAttributes" : [ "visualAttributes" : [
{ {
"attributeId" : "TorsoHeight", "attributeId" : "TorsoHeight",

View File

@ -61,11 +61,13 @@
"GRAVITY", "GRAVITY",
"TARGETABLE", "TARGETABLE",
"CAN_EQUIP", "CAN_EQUIP",
"INVENTORY",
"OUTLINE", "OUTLINE",
"PLAYABLE", "PLAYABLE",
"UNIT_CONTROLS" "UNIT_CONTROLS"
], ],
"inventoryData" : {
"naturalSize" : 10
},
"visualAttributes" : [ "visualAttributes" : [
], ],
"movementSystems" : [ "movementSystems" : [

View File

@ -1744,6 +1744,8 @@ Crops replace loot pool on completion of growth
Display name for all common entity data Display name for all common entity data
Enitity id collision validation Enitity id collision validation
Full-sized wheat plants spawn in forest now Full-sized wheat plants spawn in forest now
Natural inventory size explicitly defined in data
Fix server life tree missing nullcheck

View File

@ -6,6 +6,7 @@ import electrosphere.data.collidable.CollidableTemplate;
import electrosphere.data.collidable.HitboxData; import electrosphere.data.collidable.HitboxData;
import electrosphere.data.common.camera.CameraData; import electrosphere.data.common.camera.CameraData;
import electrosphere.data.common.interact.InteractionData; import electrosphere.data.common.interact.InteractionData;
import electrosphere.data.common.item.InventoryDescription;
import electrosphere.data.common.item.SpawnItemDescription; import electrosphere.data.common.item.SpawnItemDescription;
import electrosphere.data.common.life.HealthSystem; import electrosphere.data.common.life.HealthSystem;
import electrosphere.data.common.light.PointLightDescription; import electrosphere.data.common.light.PointLightDescription;
@ -173,6 +174,11 @@ public class CommonEntityType {
*/ */
GrowthData growthData; GrowthData growthData;
/**
* The data on the inventory of this entity
*/
InventoryDescription inventoryData;
/** /**
* Gets the id for this creature type * Gets the id for this creature type
* @return The id * @return The id
@ -453,5 +459,13 @@ public class CommonEntityType {
return growthData; return growthData;
} }
/**
* Gets the inventory data for this object
* @return The inventory data
*/
public InventoryDescription getInventoryData(){
return inventoryData;
}
} }

View File

@ -0,0 +1,21 @@
package electrosphere.data.common.item;
/**
* Describes the inventory on an inventory
*/
public class InventoryDescription {
/**
* The size of the natural inventory
*/
Integer naturalSize;
/**
* Gets the size of the natural inventory
* @return The size of the natural inventory
*/
public Integer getNaturalSize(){
return naturalSize;
}
}

View File

@ -387,10 +387,6 @@ public class CommonEntityUtils {
case "TARGETABLE": { case "TARGETABLE": {
Globals.clientScene.registerEntityToTag(entity, EntityTags.TARGETABLE); Globals.clientScene.registerEntityToTag(entity, EntityTags.TARGETABLE);
} break; } break;
case "INVENTORY":
entity.putData(EntityDataStrings.NATURAL_INVENTORY,UnrelationalInventoryState.createUnrelationalInventory(10));
InventoryUtils.clientSetInventoryState(entity, ClientInventoryState.clientCreateInventoryState(entity));
break;
case "OUTLINE": { case "OUTLINE": {
entity.putData(EntityDataStrings.DRAW_OUTLINE, true); entity.putData(EntityDataStrings.DRAW_OUTLINE, true);
} break; } break;
@ -445,6 +441,12 @@ public class CommonEntityUtils {
ClientLifeTree.attachTree(entity,rawType.getHealthSystem()); ClientLifeTree.attachTree(entity,rawType.getHealthSystem());
Globals.clientScene.registerEntityToTag(entity, EntityTags.LIFE_STATE); Globals.clientScene.registerEntityToTag(entity, EntityTags.LIFE_STATE);
} }
if(rawType.getInventoryData() != null){
if(rawType.getInventoryData().getNaturalSize() != null){
entity.putData(EntityDataStrings.NATURAL_INVENTORY,UnrelationalInventoryState.createUnrelationalInventory(rawType.getInventoryData().getNaturalSize()));
InventoryUtils.clientSetInventoryState(entity, ClientInventoryState.clientCreateInventoryState(entity));
}
}
return entity; return entity;
} }
@ -698,10 +700,6 @@ public class CommonEntityUtils {
case "TARGETABLE": { case "TARGETABLE": {
ServerEntityTagUtils.attachTagToEntity(entity, EntityTags.TARGETABLE); ServerEntityTagUtils.attachTagToEntity(entity, EntityTags.TARGETABLE);
} break; } break;
case "INVENTORY": {
entity.putData(EntityDataStrings.NATURAL_INVENTORY,UnrelationalInventoryState.createUnrelationalInventory(10));
InventoryUtils.serverSetInventoryState(entity, ServerInventoryState.serverCreateInventoryState(entity));
} break;
case "OUTLINE": { case "OUTLINE": {
entity.putData(EntityDataStrings.DRAW_OUTLINE, true); entity.putData(EntityDataStrings.DRAW_OUTLINE, true);
} break; } break;
@ -762,6 +760,13 @@ public class CommonEntityUtils {
ServerGrowthComponent.attachTree(entity, rawType.getGrowthData()); ServerGrowthComponent.attachTree(entity, rawType.getGrowthData());
} }
if(rawType.getInventoryData() != null){
if(rawType.getInventoryData().getNaturalSize() != null){
entity.putData(EntityDataStrings.NATURAL_INVENTORY,UnrelationalInventoryState.createUnrelationalInventory(rawType.getInventoryData().getNaturalSize()));
InventoryUtils.serverSetInventoryState(entity, ServerInventoryState.serverCreateInventoryState(entity));
}
}
/// ///
/// ///
/// AI (This SHOULD only be applied on the server with the way AI architected currently) /// AI (This SHOULD only be applied on the server with the way AI architected currently)

View File

@ -166,11 +166,15 @@ public class ServerHitboxResolutionCallback implements CollisionResolutionCallba
if(isItem){ if(isItem){
if(hitboxAttachParent != receiverEntity){ if(hitboxAttachParent != receiverEntity){
ServerLifeTree serverLifeTree = ServerLifeTree.getServerLifeTree(receiverEntity); ServerLifeTree serverLifeTree = ServerLifeTree.getServerLifeTree(receiverEntity);
serverLifeTree.addCollisionEvent(impactorEntity, impactorShapeStatus, receiverShapeStatus, worldPos, isDamageEvent, isBlockEvent); if(serverLifeTree != null){
serverLifeTree.addCollisionEvent(impactorEntity, impactorShapeStatus, receiverShapeStatus, worldPos, isDamageEvent, isBlockEvent);
}
} }
} else if(isCreature){ } else if(isCreature){
ServerLifeTree serverLifeTree = ServerLifeTree.getServerLifeTree(receiverEntity); ServerLifeTree serverLifeTree = ServerLifeTree.getServerLifeTree(receiverEntity);
serverLifeTree.addCollisionEvent(impactorEntity, impactorShapeStatus, receiverShapeStatus, worldPos, isDamageEvent, isBlockEvent); if(serverLifeTree != null){
serverLifeTree.addCollisionEvent(impactorEntity, impactorShapeStatus, receiverShapeStatus, worldPos, isDamageEvent, isBlockEvent);
}
} }
// //