fix move util on client inventory side
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit

This commit is contained in:
austin 2025-05-14 12:42:57 -04:00
parent ea86e06734
commit a3ab967b1c
2 changed files with 21 additions and 17 deletions

View File

@ -67,7 +67,7 @@ public class ClientEntityUtils {
//is an item in an inventory
if(ItemUtils.getContainingParent(entity) != null){
ClientInventoryState.clientRemoveItemFromInventories(ItemUtils.getContainingParent(entity), entity);
ClientInventoryState.clientRemoveItemFromInventories(entity);
}

View File

@ -62,12 +62,13 @@ public class ClientInventoryState implements BehaviorTree {
networkMessageQueue.remove(message);
switch(message.getMessageSubtype()){
case SERVERCOMMANDSTOREITEM: {
LoggerInterface.loggerNetworking.WARNING("Client create/move item " + message.getitemEntId());
Entity clientSideContainer = Globals.clientSceneWrapper.getEntityFromServerId(message.gettargetEntId());
Entity clientSideItem = null;
if(Globals.clientSceneWrapper.containsServerId(message.getitemEntId())){
LoggerInterface.loggerNetworking.WARNING("Client move item " + message.getitemEntId());
clientSideItem = Globals.clientSceneWrapper.getEntityFromServerId(message.getitemEntId());
} else {
LoggerInterface.loggerNetworking.WARNING("Client create item " + message.getitemEntId());
clientSideItem = ClientInventoryState.clientConstructInInventoryItem(clientSideContainer,message.getitemTemplate());
Globals.clientSceneWrapper.mapIdToId(clientSideItem.getId(), message.getitemEntId());
}
@ -88,10 +89,10 @@ public class ClientInventoryState implements BehaviorTree {
WindowUtils.attemptRedrawInventoryWindows();
} break;
case REMOVEITEMFROMINVENTORY: {
LoggerInterface.loggerNetworking.WARNING("Client destroy item " + message.getentityId());
LoggerInterface.loggerNetworking.WARNING("Client remove item from inventories " + message.getentityId());
Entity item = Globals.clientSceneWrapper.getEntityFromServerId(message.getentityId());
if(item != null){
ClientInventoryState.clientRemoveItemFromInventories(parent, item);
ClientInventoryState.clientRemoveItemFromInventories(item);
//attempt re-render ui
WindowUtils.attemptRedrawInventoryWindows();
}
@ -332,6 +333,9 @@ public class ClientInventoryState implements BehaviorTree {
}
}
}
//
//set containing parent
ItemUtils.setContainingParent(itemEnt, containerEnt);
}
/**
@ -423,13 +427,9 @@ public class ClientInventoryState implements BehaviorTree {
/**
* [CLIENT ONLY] Called when the server says to remove an item from all inventories
* Only does the remove, doesn't create the in-world item
* @param creature The creature to remove the item from (likely to be player entity)
* @param item The item to remove
*/
public static void clientRemoveItemFromInventories(Entity creature, Entity item){
if(creature == null){
throw new Error("Creature is null!");
}
public static void clientRemoveItemFromInventories(Entity item){
if(item == null){
throw new Error("Item is null!");
}
@ -439,31 +439,35 @@ public class ClientInventoryState implements BehaviorTree {
if(!ItemUtils.itemIsInInventory(item)){
throw new Error("Item is not in an inventory!");
}
if(ItemUtils.getContainingParent(item) == null){
throw new Error("Trying to remove non-container item from inventories");
}
Entity container = ItemUtils.getContainingParent(item);
//check if the item is in an inventory
if(InventoryUtils.hasNaturalInventory(creature)){
if(InventoryUtils.hasNaturalInventory(container)){
//get inventory
UnrelationalInventoryState inventory = InventoryUtils.getNaturalInventory(creature);
UnrelationalInventoryState inventory = InventoryUtils.getNaturalInventory(container);
//remove item from inventory
inventory.removeItem(item);
}
if(InventoryUtils.hasEquipInventory(creature)){
if(InventoryUtils.hasEquipInventory(container)){
//get inventory
RelationalInventoryState inventory = InventoryUtils.getEquipInventory(creature);
RelationalInventoryState inventory = InventoryUtils.getEquipInventory(container);
//get real world item
Entity realWorldItem = ItemUtils.getRealWorldEntity(item);
if(realWorldItem != null){
//drop item
ClientEquipState equipState = ClientEquipState.getEquipState(creature);
ClientEquipState equipState = ClientEquipState.getEquipState(container);
equipState.clientTransformUnequipPoint(inventory.getItemSlot(item));
}
//remove item from inventory
inventory.tryRemoveItem(item);
}
if(InventoryUtils.hasToolbarInventory(creature)){
RelationalInventoryState toolbarInventory = InventoryUtils.getToolbarInventory(creature);
if(InventoryUtils.hasToolbarInventory(container)){
RelationalInventoryState toolbarInventory = InventoryUtils.getToolbarInventory(container);
toolbarInventory.tryRemoveItem(item);
Globals.cursorState.hintClearBlockCursor();
ClientToolbarState.getClientToolbarState(creature).update();
ClientToolbarState.getClientToolbarState(container).update();
}
}