From 25993434271e3aa318b2244c19fbc265dd8c95b5 Mon Sep 17 00:00:00 2001 From: austin Date: Mon, 19 May 2025 15:49:33 -0400 Subject: [PATCH] editor entities dont use charges --- docs/src/progress/renderertodo.md | 1 + .../data/entity/creature/CreatureTypeLoader.java | 12 ++++++++++++ .../electrosphere/server/player/BlockActions.java | 9 +++++++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 19a69ad3..eef89763 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1904,6 +1904,7 @@ OpenGLState VAO caching Ambient light sent in dedicated variable to shader Major lighting shader organization rework Material albedo work +Editor entities don't use charges on placing blocks diff --git a/src/main/java/electrosphere/data/entity/creature/CreatureTypeLoader.java b/src/main/java/electrosphere/data/entity/creature/CreatureTypeLoader.java index 0925e84e..b74f77ff 100644 --- a/src/main/java/electrosphere/data/entity/creature/CreatureTypeLoader.java +++ b/src/main/java/electrosphere/data/entity/creature/CreatureTypeLoader.java @@ -8,6 +8,9 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.locks.ReentrantLock; +import electrosphere.entity.Entity; +import electrosphere.entity.types.creature.CreatureUtils; + /** * The creature type loader */ @@ -83,6 +86,15 @@ public class CreatureTypeLoader { return idTypeMap.get(id); } + /** + * Gets entity data from the entity + * @param ent The entity + * @return The entity data if it exists, null otherwise + */ + public CreatureData getType(Entity ent){ + return idTypeMap.get(CreatureUtils.getType(ent)); + } + /** * Gets the collection of all entity data * @return the collection of all entity data diff --git a/src/main/java/electrosphere/server/player/BlockActions.java b/src/main/java/electrosphere/server/player/BlockActions.java index 978ee43e..3d422fec 100644 --- a/src/main/java/electrosphere/server/player/BlockActions.java +++ b/src/main/java/electrosphere/server/player/BlockActions.java @@ -5,6 +5,7 @@ import org.joml.Vector3i; import electrosphere.data.block.BlockType; import electrosphere.data.entity.item.Item; import electrosphere.engine.Globals; +import electrosphere.engine.loadingthreads.LoadingUtils; import electrosphere.entity.Entity; import electrosphere.entity.state.equip.ServerToolbarState; import electrosphere.entity.state.item.ServerChargeState; @@ -45,7 +46,9 @@ public class BlockActions { if(equippedItemType.equals(goalBlockEntityId)){ //place the block ServerBlockEditing.editBlockArea(playerRealm, chunkPos, blockPos, blockType, (short)0, editSize); - ServerChargeState.attemptRemoveCharges(creature, 1); + if(!Globals.gameConfigCurrent.getCreatureTypeLoader().getType(creature).getId().equals(LoadingUtils.EDITOR_RACE_NAME)){ + ServerChargeState.attemptRemoveCharges(creature, 1); + } } } } @@ -61,7 +64,9 @@ public class BlockActions { public static void placeFab(Entity creature, Vector3i chunkPos, Vector3i blockPos, int blockRotation, String fabPath){ Realm playerRealm = Globals.serverState.realmManager.getEntityRealm(creature); ServerBlockEditing.placeBlockFab(playerRealm, chunkPos, blockPos, blockRotation, fabPath); - ServerChargeState.attemptRemoveCharges(creature, 1); + if(!Globals.gameConfigCurrent.getCreatureTypeLoader().getType(creature).getId().equals(LoadingUtils.EDITOR_RACE_NAME)){ + ServerChargeState.attemptRemoveCharges(creature, 1); + } if(CreatureUtils.hasControllerPlayerId(creature)){ Player player = Globals.serverState.playerManager.getPlayerFromId(CreatureUtils.getControllerPlayerId(creature)); Globals.serverState.structureScanningService.queue(player, ServerWorldData.convertLocalBlockToRealSpace(chunkPos, blockPos));