diff --git a/assets/Data/entity/items/weapons.json b/assets/Data/entity/items/weapons.json index 0a470e25..b115b0cd 100644 --- a/assets/Data/entity/items/weapons.json +++ b/assets/Data/entity/items/weapons.json @@ -96,9 +96,6 @@ "offset": [0, 0, 0.15] } ] - }, - "itemBlockData": { - }, "equipData": { "equipClass" : "weapon2H" diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index ab4e079f..3aa29cb8 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1156,7 +1156,7 @@ Convert PhysicsEntityUtils to use generic interface to load tri geom rigid bodie Fix winding order on block meshes Add texture atlasing to blocks -(!1/25/2024) +(11/25/2024) Remove unused import Geometry mesh generation class Cloud shader @@ -1164,6 +1164,9 @@ VisualShader refactoring VisualShader #include macro implementation Fix particles not spawning in correct positions +(11/28/2024) +Fix block not firing + # TODO diff --git a/src/main/java/electrosphere/entity/state/equip/ServerEquipState.java b/src/main/java/electrosphere/entity/state/equip/ServerEquipState.java index 518eb8c7..c0a1eb19 100644 --- a/src/main/java/electrosphere/entity/state/equip/ServerEquipState.java +++ b/src/main/java/electrosphere/entity/state/equip/ServerEquipState.java @@ -423,7 +423,7 @@ public class ServerEquipState implements BehaviorTree { BlockSystem blockData = blockTree.getBlockSystem(); for(EquipPoint point : pointsThatCanBlock){ Entity item = getEquippedItemAtPoint(point.getEquipPointId()); - if(item != null && Globals.gameConfigCurrent.getItemMap().getItem(item) != null && Globals.gameConfigCurrent.getItemMap().getItem(item).getItemBlockData() != null){ + if(item != null && Globals.gameConfigCurrent.getItemMap().getItem(item) != null && Globals.gameConfigCurrent.getItemMap().getItem(item).getBlockSystem() != null){ BlockVariant blockVariant = blockData.getVariantForPointWithItem(point.getEquipPointId(),ItemUtils.getEquipClass(item)); //TODO: refactor to allow sending more than one variant at a time diff --git a/src/main/java/electrosphere/entity/state/equip/ServerToolbarState.java b/src/main/java/electrosphere/entity/state/equip/ServerToolbarState.java index 33a77006..8db9ac25 100644 --- a/src/main/java/electrosphere/entity/state/equip/ServerToolbarState.java +++ b/src/main/java/electrosphere/entity/state/equip/ServerToolbarState.java @@ -15,7 +15,6 @@ import electrosphere.game.data.creature.type.block.BlockVariant; import electrosphere.game.data.creature.type.equip.EquipPoint; import electrosphere.game.data.creature.type.equip.ToolbarData; import electrosphere.game.data.item.EquipWhitelist; -import electrosphere.logger.LoggerInterface; import java.util.List; @@ -234,7 +233,7 @@ public class ServerToolbarState implements BehaviorTree { } BlockSystem blockData = blockTree.getBlockSystem(); - if(selectedItemEntity != null && Globals.gameConfigCurrent.getItemMap().getItem(selectedItemEntity) != null && Globals.gameConfigCurrent.getItemMap().getItem(selectedItemEntity).getItemBlockData() != null){ + if(selectedItemEntity != null && Globals.gameConfigCurrent.getItemMap().getItem(selectedItemEntity) != null){ BlockVariant blockVariant = blockData.getVariantForPointWithItem(targetPoint.getEquipPointId(),ItemUtils.getEquipClass(selectedItemEntity)); //TODO: refactor to allow sending more than one variant at a time @@ -242,7 +241,7 @@ public class ServerToolbarState implements BehaviorTree { if(blockVariant != null){ blockTree.setCurrentBlockVariant(blockVariant.getVariantId()); } else { - LoggerInterface.loggerEngine.ERROR(new IllegalStateException("Equipped item to equip point that does not have assigned block variant!!")); + blockTree.setCurrentBlockVariant(""); } } } diff --git a/src/main/java/electrosphere/game/data/item/Item.java b/src/main/java/electrosphere/game/data/item/Item.java index 0c2ff995..92b1b39b 100644 --- a/src/main/java/electrosphere/game/data/item/Item.java +++ b/src/main/java/electrosphere/game/data/item/Item.java @@ -62,12 +62,7 @@ public class Item extends CommonEntityType { * The usage logic for a secondary usage of this item */ ItemUsage secondaryUsage; - - /** - * The block data for this item - */ - ItemBlockData itemBlockData; - + /** * Creates item data from a spawn item description * @param description The spawn item description @@ -160,15 +155,6 @@ public class Item extends CommonEntityType { public String getClientSideSecondary(){ return clientSideSecondary; } - - /** - * Gets the block data for the item - * @return THe block data - */ - public ItemBlockData getItemBlockData(){ - return this.itemBlockData; - } - /** * Gets the secondary usage logic of this item * @return The secondary usage logic diff --git a/src/main/java/electrosphere/game/data/item/ItemBlockData.java b/src/main/java/electrosphere/game/data/item/ItemBlockData.java deleted file mode 100644 index ffa453a7..00000000 --- a/src/main/java/electrosphere/game/data/item/ItemBlockData.java +++ /dev/null @@ -1,9 +0,0 @@ -package electrosphere.game.data.item; - -/** - * Block data for the item - */ -public class ItemBlockData { - - -} diff --git a/src/main/java/electrosphere/server/ai/AIManager.java b/src/main/java/electrosphere/server/ai/AIManager.java index 5c707db8..fd06a594 100644 --- a/src/main/java/electrosphere/server/ai/AIManager.java +++ b/src/main/java/electrosphere/server/ai/AIManager.java @@ -58,10 +58,10 @@ public class AIManager { */ public void simulate(){ //exec the services - execServices(); + this.execServices(); //simulate each tree - if(isActive()){ + if(this.isActive()){ for(AI ai : aiList){ ai.simulate(); } diff --git a/src/main/java/electrosphere/server/player/PlayerActions.java b/src/main/java/electrosphere/server/player/PlayerActions.java index d82635ab..66513850 100644 --- a/src/main/java/electrosphere/server/player/PlayerActions.java +++ b/src/main/java/electrosphere/server/player/PlayerActions.java @@ -8,6 +8,9 @@ import electrosphere.entity.Entity; import electrosphere.entity.state.block.ServerBlockTree; import electrosphere.entity.state.equip.ServerToolbarState; import electrosphere.entity.types.common.CommonEntityUtils; +import electrosphere.entity.types.creature.CreatureUtils; +import electrosphere.game.data.creature.type.CreatureData; +import electrosphere.game.data.creature.type.block.BlockVariant; import electrosphere.game.data.item.Item; import electrosphere.game.data.item.ItemUsage; import electrosphere.net.parser.net.message.InventoryMessage; @@ -32,7 +35,22 @@ public class PlayerActions { ServerToolbarState serverToolbarState = ServerToolbarState.getServerToolbarState(playerEntity); if(serverToolbarState != null && serverToolbarState.getRealWorldItem() != null){ Item item = Globals.gameConfigCurrent.getItemMap().getItem(serverToolbarState.getRealWorldItem()); - if(item.getBlockSystem() != null){ + CreatureData creatureData = Globals.gameConfigCurrent.getCreatureTypeLoader().getType(CreatureUtils.getType(playerEntity)); + ServerBlockTree serverBlockTree = ServerBlockTree.getServerBlockTree(playerEntity); + + //check block status + boolean shouldBlock = false; + if(creatureData.getBlockSystem() != null && creatureData.getBlockSystem().getAllVariants() != null && serverBlockTree != null){ + for(BlockVariant variant : creatureData.getBlockSystem().getAllVariants()){ + if(variant.getVariantId().equals(serverBlockTree.getCurrentBlockVariant())){ + shouldBlock = true; + break; + } + } + } + + //actually perform actions + if(shouldBlock){ PlayerActions.block(playerEntity, message); } else if(item.getSecondaryUsage() != null){ PlayerActions.secondaryUsage(playerEntity, item, message);