item + loot pool updates
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good

This commit is contained in:
austin 2025-04-30 17:42:13 -04:00
parent 4c9cad96f2
commit b91654d7c3
13 changed files with 54 additions and 23 deletions

View File

@ -18,7 +18,7 @@
"lootPool" : { "lootPool" : {
"tickets" : [ "tickets" : [
{ {
"itemId" : "Stick", "itemId" : "mat:Stick",
"rarity" : 1.0, "rarity" : 1.0,
"minQuantity" : 1, "minQuantity" : 1,
"maxQuantity" : 1 "maxQuantity" : 1

View File

@ -26,7 +26,7 @@
"lootPool" : { "lootPool" : {
"tickets" : [ "tickets" : [
{ {
"itemId" : "Rock", "itemId" : "mat:Rock",
"rarity" : 1.0, "rarity" : 1.0,
"minQuantity" : 1, "minQuantity" : 1,
"maxQuantity" : 1 "maxQuantity" : 1

View File

@ -194,10 +194,10 @@
"lootPool" : { "lootPool" : {
"tickets" : [ "tickets" : [
{ {
"itemId" : "Log", "itemId" : "mat:Log",
"rarity" : 0.8, "rarity" : 0.8,
"minQuantity" : 0, "minQuantity" : 2,
"maxQuantity" : 2 "maxQuantity" : 5
}, },
{ {
"itemId" : "block:wood", "itemId" : "block:wood",

View File

@ -1,7 +1,7 @@
{ {
"items" : [ "items" : [
{ {
"id" : "Grain", "id" : "mat:Grain",
"tokens" : [ "tokens" : [
"GRAVITY", "GRAVITY",
"TARGETABLE" "TARGETABLE"

View File

@ -1,7 +1,7 @@
{ {
"items" : [ "items" : [
{ {
"id" : "Rock", "id" : "mat:Rock",
"maxStack" : 100, "maxStack" : 100,
"tokens" : [ "tokens" : [
"GRAVITY", "GRAVITY",
@ -32,7 +32,7 @@
"iconPath" : "Textures/icons/itemIconItemGeneric.png" "iconPath" : "Textures/icons/itemIconItemGeneric.png"
}, },
{ {
"id" : "Copper", "id" : "mat:Copper",
"maxStack" : 100, "maxStack" : 100,
"tokens" : [ "tokens" : [
"GRAVITY", "GRAVITY",
@ -70,7 +70,7 @@
"iconPath" : "Textures/icons/itemIconItemGeneric.png" "iconPath" : "Textures/icons/itemIconItemGeneric.png"
}, },
{ {
"id" : "Tin", "id" : "mat:Tin",
"maxStack" : 100, "maxStack" : 100,
"tokens" : [ "tokens" : [
"GRAVITY", "GRAVITY",
@ -101,7 +101,7 @@
"iconPath" : "Textures/icons/itemIconItemGeneric.png" "iconPath" : "Textures/icons/itemIconItemGeneric.png"
}, },
{ {
"id" : "Clay", "id" : "mat:Clay",
"maxStack" : 100, "maxStack" : 100,
"tokens" : [ "tokens" : [
"GRAVITY", "GRAVITY",

View File

@ -1,7 +1,7 @@
{ {
"items" : [ "items" : [
{ {
"id" : "Log", "id" : "mat:Log",
"maxStack" : 100, "maxStack" : 100,
"tokens" : [ "tokens" : [
"GRAVITY", "GRAVITY",
@ -32,7 +32,7 @@
"iconPath" : "Textures/icons/itemIconItemGeneric.png" "iconPath" : "Textures/icons/itemIconItemGeneric.png"
}, },
{ {
"id" : "Stick", "id" : "mat:Stick",
"maxStack" : 100, "maxStack" : 100,
"tokens" : [ "tokens" : [
"GRAVITY", "GRAVITY",

View File

@ -5,7 +5,7 @@
"craftingTag" : "HAND", "craftingTag" : "HAND",
"ingredients": [ "ingredients": [
{ {
"itemType": "Log", "itemType": "mat:Log",
"count": 1 "count": 1
} }
], ],

View File

@ -5,7 +5,7 @@
"craftingTag" : "HAND", "craftingTag" : "HAND",
"ingredients": [ "ingredients": [
{ {
"itemType": "Log", "itemType": "mat:Log",
"count": 1 "count": 1
} }
], ],

View File

@ -5,11 +5,11 @@
"craftingTag" : "HAND", "craftingTag" : "HAND",
"ingredients": [ "ingredients": [
{ {
"itemType": "Stick", "itemType": "mat:Stick",
"count": 1 "count": 1
}, },
{ {
"itemType": "Rock", "itemType": "mat:Rock",
"count": 1 "count": 1
} }
], ],
@ -25,11 +25,11 @@
"craftingTag" : "HAND", "craftingTag" : "HAND",
"ingredients": [ "ingredients": [
{ {
"itemType": "Stick", "itemType": "mat:Stick",
"count": 1 "count": 1
}, },
{ {
"itemType": "Rock", "itemType": "mat:Rock",
"count": 1 "count": 1
} }
], ],
@ -45,11 +45,11 @@
"craftingTag" : "HAND", "craftingTag" : "HAND",
"ingredients": [ "ingredients": [
{ {
"itemType": "Stick", "itemType": "mat:Stick",
"count": 1 "count": 1
}, },
{ {
"itemType": "Rock", "itemType": "mat:Rock",
"count": 1 "count": 1
} }
], ],

View File

@ -1623,6 +1623,9 @@ Cache busting when physics sync pulls player entity TELEPORT distances
Lotta inventory work to bugfix charges, crafting, in-inventory items, etc Lotta inventory work to bugfix charges, crafting, in-inventory items, etc
Collapse client hooks for item usage into main itemusage class Collapse client hooks for item usage into main itemusage class
Debounce fab placement Debounce fab placement
Blocks stack
Item tag adjustments
Pine tree loot pool update
@ -1661,6 +1664,7 @@ Floating world origin
- Separately simulated regions of physics that dynamically merge/unmerge based on chunk loading - Separately simulated regions of physics that dynamically merge/unmerge based on chunk loading
Bug Fixes Bug Fixes
- Fix characters stored in db not saving items because the items aren't being stored to db
- Fix hitbox placement does not scale with entity scale on server - Fix hitbox placement does not scale with entity scale on server
- Calculate bounding sphere for meshes by deforming vertices with bone default pose instead of no bone deform - Calculate bounding sphere for meshes by deforming vertices with bone default pose instead of no bone deform
- Fix light cluster mapping for foliage shader - Fix light cluster mapping for foliage shader

View File

@ -270,6 +270,11 @@ public class ItemUtils {
*/ */
public static Entity serverSpawnBasicItem(Realm realm, Vector3d position, String name){ public static Entity serverSpawnBasicItem(Realm realm, Vector3d position, String name){
Item item = Globals.gameConfigCurrent.getItemMap().getItem(name); Item item = Globals.gameConfigCurrent.getItemMap().getItem(name);
if(item == null){
throw new Error("Failed to resolve item with name " + name);
}
//must correct the position such that it spawns inside the realm //must correct the position such that it spawns inside the realm
Vector3d correctedPosition = ServerEntityUtils.guaranteePositionIsInBounds(realm, position); Vector3d correctedPosition = ServerEntityUtils.guaranteePositionIsInBounds(realm, position);
Entity rVal = EntityCreationUtils.createServerEntity(realm, correctedPosition); Entity rVal = EntityCreationUtils.createServerEntity(realm, correctedPosition);
@ -509,7 +514,16 @@ public class ItemUtils {
if(itemData.getMaxStack() != null){ if(itemData.getMaxStack() != null){
ClientChargeState.attachTree(rVal, itemData.getMaxStack()); ClientChargeState.attachTree(rVal, itemData.getMaxStack());
} }
rVal.putData(EntityDataStrings.ITEM_ICON,ItemUtils.getItemIcon(item));
//
//icon
if(itemData.getIconPath() != null && !itemData.getIconPath().equals("")){
rVal.putData(EntityDataStrings.ITEM_ICON,itemData.getIconPath());
} else {
rVal.putData(EntityDataStrings.ITEM_ICON,AssetDataStrings.UI_TEXTURE_ITEM_ICON_GENERIC);
}
rVal.putData(EntityDataStrings.ITEM_EQUIP_CLASS, item.getData(EntityDataStrings.ITEM_EQUIP_CLASS)); rVal.putData(EntityDataStrings.ITEM_EQUIP_CLASS, item.getData(EntityDataStrings.ITEM_EQUIP_CLASS));
CommonEntityUtils.setEntityType(rVal, EntityType.ITEM); CommonEntityUtils.setEntityType(rVal, EntityType.ITEM);
rVal.putData(EntityDataStrings.ITEM_IS_IN_INVENTORY, true); rVal.putData(EntityDataStrings.ITEM_IS_IN_INVENTORY, true);

View File

@ -29,6 +29,11 @@ public class Item extends CommonEntityType {
*/ */
static final String DEFAULT_ITEM_ICON_PATH = "Textures/icons/itemIconItemGeneric.png"; static final String DEFAULT_ITEM_ICON_PATH = "Textures/icons/itemIconItemGeneric.png";
/**
* Maximum stack of a given block type
*/
static final int MAX_BLOCK_STACK = 250;
/** /**
* The array of default tokens for all items * The array of default tokens for all items
*/ */
@ -164,6 +169,9 @@ public class Item extends CommonEntityType {
rVal.setSecondaryUsage(usage); rVal.setSecondaryUsage(usage);
rVal.setPrimaryUsage(usage); rVal.setPrimaryUsage(usage);
//set stacking data
rVal.setMaxStack(MAX_BLOCK_STACK);
//attach common tokens //attach common tokens
List<String> tokens = new LinkedList<String>(Arrays.asList(DEFAULT_TOKENS)); List<String> tokens = new LinkedList<String>(Arrays.asList(DEFAULT_TOKENS));

View File

@ -27,6 +27,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
import electrosphere.engine.Globals; import electrosphere.engine.Globals;
import electrosphere.entity.Entity; import electrosphere.entity.Entity;
import electrosphere.net.parser.net.message.SynchronizationMessage; import electrosphere.net.parser.net.message.SynchronizationMessage;
import electrosphere.net.parser.net.message.SynchronizationMessage.SynchronizationMessageType;
import electrosphere.net.synchronization.enums.BehaviorTreeIdEnums; import electrosphere.net.synchronization.enums.BehaviorTreeIdEnums;
import electrosphere.net.synchronization.enums.FieldIdEnums; import electrosphere.net.synchronization.enums.FieldIdEnums;
@ -48,7 +49,7 @@ public class ClientSynchronizationManager {
/** /**
* The count at which to warn about a message bouncing * The count at which to warn about a message bouncing
*/ */
static final int MESSAGE_BOUNCE_WARNING_COUNT = 10; static final int MESSAGE_BOUNCE_WARNING_COUNT = 100;
/** /**
* Pushes a message into the queue to be processed * Pushes a message into the queue to be processed
@ -137,8 +138,12 @@ public class ClientSynchronizationManager {
//warn if a message has bounced a certain number of times //warn if a message has bounced a certain number of times
if(messageBounceCount.containsKey(message) && messageBounceCount.get(message) > MESSAGE_BOUNCE_WARNING_COUNT){ if(messageBounceCount.containsKey(message) && messageBounceCount.get(message) > MESSAGE_BOUNCE_WARNING_COUNT){
SynchronizationMessageType type = message.getMessageSubtype();
String warningMessage = String warningMessage =
"A synchronization message has bounced at least " + MESSAGE_BOUNCE_WARNING_COUNT + "times!"; "A synchronization message has bounced at least " + MESSAGE_BOUNCE_WARNING_COUNT + "times!\n" +
type + "\n" +
""
;
LoggerInterface.loggerNetworking.WARNING(warningMessage); LoggerInterface.loggerNetworking.WARNING(warningMessage);
} }
} }