fix move util on client inventory side
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit
This commit is contained in:
parent
ea86e06734
commit
a3ab967b1c
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user