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
|
//is an item in an inventory
|
||||||
if(ItemUtils.getContainingParent(entity) != null){
|
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);
|
networkMessageQueue.remove(message);
|
||||||
switch(message.getMessageSubtype()){
|
switch(message.getMessageSubtype()){
|
||||||
case SERVERCOMMANDSTOREITEM: {
|
case SERVERCOMMANDSTOREITEM: {
|
||||||
LoggerInterface.loggerNetworking.WARNING("Client create/move item " + message.getitemEntId());
|
|
||||||
Entity clientSideContainer = Globals.clientSceneWrapper.getEntityFromServerId(message.gettargetEntId());
|
Entity clientSideContainer = Globals.clientSceneWrapper.getEntityFromServerId(message.gettargetEntId());
|
||||||
Entity clientSideItem = null;
|
Entity clientSideItem = null;
|
||||||
if(Globals.clientSceneWrapper.containsServerId(message.getitemEntId())){
|
if(Globals.clientSceneWrapper.containsServerId(message.getitemEntId())){
|
||||||
|
LoggerInterface.loggerNetworking.WARNING("Client move item " + message.getitemEntId());
|
||||||
clientSideItem = Globals.clientSceneWrapper.getEntityFromServerId(message.getitemEntId());
|
clientSideItem = Globals.clientSceneWrapper.getEntityFromServerId(message.getitemEntId());
|
||||||
} else {
|
} else {
|
||||||
|
LoggerInterface.loggerNetworking.WARNING("Client create item " + message.getitemEntId());
|
||||||
clientSideItem = ClientInventoryState.clientConstructInInventoryItem(clientSideContainer,message.getitemTemplate());
|
clientSideItem = ClientInventoryState.clientConstructInInventoryItem(clientSideContainer,message.getitemTemplate());
|
||||||
Globals.clientSceneWrapper.mapIdToId(clientSideItem.getId(), message.getitemEntId());
|
Globals.clientSceneWrapper.mapIdToId(clientSideItem.getId(), message.getitemEntId());
|
||||||
}
|
}
|
||||||
@ -88,10 +89,10 @@ public class ClientInventoryState implements BehaviorTree {
|
|||||||
WindowUtils.attemptRedrawInventoryWindows();
|
WindowUtils.attemptRedrawInventoryWindows();
|
||||||
} break;
|
} break;
|
||||||
case REMOVEITEMFROMINVENTORY: {
|
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());
|
Entity item = Globals.clientSceneWrapper.getEntityFromServerId(message.getentityId());
|
||||||
if(item != null){
|
if(item != null){
|
||||||
ClientInventoryState.clientRemoveItemFromInventories(parent, item);
|
ClientInventoryState.clientRemoveItemFromInventories(item);
|
||||||
//attempt re-render ui
|
//attempt re-render ui
|
||||||
WindowUtils.attemptRedrawInventoryWindows();
|
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
|
* [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
|
* 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
|
* @param item The item to remove
|
||||||
*/
|
*/
|
||||||
public static void clientRemoveItemFromInventories(Entity creature, Entity item){
|
public static void clientRemoveItemFromInventories(Entity item){
|
||||||
if(creature == null){
|
|
||||||
throw new Error("Creature is null!");
|
|
||||||
}
|
|
||||||
if(item == null){
|
if(item == null){
|
||||||
throw new Error("Item is null!");
|
throw new Error("Item is null!");
|
||||||
}
|
}
|
||||||
@ -439,31 +439,35 @@ public class ClientInventoryState implements BehaviorTree {
|
|||||||
if(!ItemUtils.itemIsInInventory(item)){
|
if(!ItemUtils.itemIsInInventory(item)){
|
||||||
throw new Error("Item is not in an inventory!");
|
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
|
//check if the item is in an inventory
|
||||||
if(InventoryUtils.hasNaturalInventory(creature)){
|
if(InventoryUtils.hasNaturalInventory(container)){
|
||||||
//get inventory
|
//get inventory
|
||||||
UnrelationalInventoryState inventory = InventoryUtils.getNaturalInventory(creature);
|
UnrelationalInventoryState inventory = InventoryUtils.getNaturalInventory(container);
|
||||||
//remove item from inventory
|
//remove item from inventory
|
||||||
inventory.removeItem(item);
|
inventory.removeItem(item);
|
||||||
}
|
}
|
||||||
if(InventoryUtils.hasEquipInventory(creature)){
|
if(InventoryUtils.hasEquipInventory(container)){
|
||||||
//get inventory
|
//get inventory
|
||||||
RelationalInventoryState inventory = InventoryUtils.getEquipInventory(creature);
|
RelationalInventoryState inventory = InventoryUtils.getEquipInventory(container);
|
||||||
//get real world item
|
//get real world item
|
||||||
Entity realWorldItem = ItemUtils.getRealWorldEntity(item);
|
Entity realWorldItem = ItemUtils.getRealWorldEntity(item);
|
||||||
if(realWorldItem != null){
|
if(realWorldItem != null){
|
||||||
//drop item
|
//drop item
|
||||||
ClientEquipState equipState = ClientEquipState.getEquipState(creature);
|
ClientEquipState equipState = ClientEquipState.getEquipState(container);
|
||||||
equipState.clientTransformUnequipPoint(inventory.getItemSlot(item));
|
equipState.clientTransformUnequipPoint(inventory.getItemSlot(item));
|
||||||
}
|
}
|
||||||
//remove item from inventory
|
//remove item from inventory
|
||||||
inventory.tryRemoveItem(item);
|
inventory.tryRemoveItem(item);
|
||||||
}
|
}
|
||||||
if(InventoryUtils.hasToolbarInventory(creature)){
|
if(InventoryUtils.hasToolbarInventory(container)){
|
||||||
RelationalInventoryState toolbarInventory = InventoryUtils.getToolbarInventory(creature);
|
RelationalInventoryState toolbarInventory = InventoryUtils.getToolbarInventory(container);
|
||||||
toolbarInventory.tryRemoveItem(item);
|
toolbarInventory.tryRemoveItem(item);
|
||||||
Globals.cursorState.hintClearBlockCursor();
|
Globals.cursorState.hintClearBlockCursor();
|
||||||
ClientToolbarState.getClientToolbarState(creature).update();
|
ClientToolbarState.getClientToolbarState(container).update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user