diff --git a/src/main/java/org/terasology/climbables/ClamberComponent.java b/src/main/java/org/terasology/climbables/ClamberComponent.java index 799e743..dd6b280 100644 --- a/src/main/java/org/terasology/climbables/ClamberComponent.java +++ b/src/main/java/org/terasology/climbables/ClamberComponent.java @@ -15,9 +15,10 @@ */ package org.terasology.climbables; +import org.joml.Vector3i; +import org.joml.Vector3ic; import org.terasology.entitySystem.Component; import org.terasology.math.Side; -import org.terasology.math.geom.Vector3i; public class ClamberComponent implements Component { @@ -25,15 +26,15 @@ public class ClamberComponent implements Component { public boolean support = false; public int maxPlacementDistance = 3; - public Vector3i getPlacingModeDirection() { + public Vector3ic getPlacingModeDirection() { switch (this.placingMode) { case ROPING: - return Side.BOTTOM.getVector3i(); + return Side.BOTTOM.direction(); case STACKING: - return Side.TOP.getVector3i(); + return Side.TOP.direction(); case NORMAL: - return Vector3i.zero(); + default: + return new Vector3i(0, 0, 0); } - return Vector3i.zero(); } } diff --git a/src/main/java/org/terasology/climbables/ClimbablesPlacingSystem.java b/src/main/java/org/terasology/climbables/ClimbablesPlacingSystem.java index 6e0ce89..ee45f26 100644 --- a/src/main/java/org/terasology/climbables/ClimbablesPlacingSystem.java +++ b/src/main/java/org/terasology/climbables/ClimbablesPlacingSystem.java @@ -16,6 +16,8 @@ package org.terasology.climbables; +import org.joml.Vector3f; +import org.joml.Vector3i; import org.terasology.audio.AudioManager; import org.terasology.audio.events.PlaySoundEvent; import org.terasology.entitySystem.entity.EntityRef; @@ -31,9 +33,7 @@ import org.terasology.logic.inventory.InventoryUtils; import org.terasology.logic.inventory.ItemComponent; import org.terasology.math.ChunkMath; -import org.terasology.math.JomlUtil; import org.terasology.math.Side; -import org.terasology.math.geom.Vector3i; import org.terasology.registry.In; import org.terasology.utilities.Assets; import org.terasology.world.BlockEntityRegistry; @@ -42,6 +42,7 @@ import org.terasology.world.block.BlockComponent; import org.terasology.world.block.entity.placement.PlaceBlocks; import org.terasology.world.block.family.BlockFamily; +import org.terasology.world.block.family.BlockPlacementData; import org.terasology.world.block.items.BlockItemComponent; import org.terasology.world.block.items.OnBlockItemPlaced; @@ -61,7 +62,7 @@ public class ClimbablesPlacingSystem extends BaseComponentSystem { @ReceiveEvent(priority = EventPriority.PRIORITY_HIGH) public void onDestroyed(DoDestroyEvent event, EntityRef entity, ClamberComponent clamberComponent, BlockComponent blockComponent) { - Vector3i nextBlockPos = new Vector3i(blockComponent.getPosition()); + Vector3i nextBlockPos = blockComponent.getPosition(new Vector3i()); nextBlockPos.add(clamberComponent.getPlacingModeDirection()); EntityRef nextBlockEntity = blockEntityRegistry.getBlockEntityAt(nextBlockPos); @@ -93,11 +94,11 @@ public void onPlaceBlock(ActivateEvent event, EntityRef item) { return; } - Vector3i placementDirection = Vector3i.zero(); + Vector3i placementDirection = new Vector3i(); ClamberComponent targetClamberComponent = targetEntity.getComponent(ClamberComponent.class); - Vector3i climbablePlacementPos = new Vector3i(blockComponent.getPosition()); - Block blockToPlace = type.getBlockForPlacement(climbablePlacementPos, Side.LEFT, secondaryDirection); + Vector3i climbablePlacementPos = blockComponent.getPosition(new Vector3i()); + Block blockToPlace = type.getBlockForPlacement(new BlockPlacementData(climbablePlacementPos, Side.LEFT, new Vector3f(secondaryDirection.direction()))); if (blockToPlace == null) { event.consume(); return; @@ -109,7 +110,7 @@ public void onPlaceBlock(ActivateEvent event, EntityRef item) { event.consume(); return; } else { - placementDirection = placingClamberComponent.getPlacingModeDirection(); + placementDirection.set(placingClamberComponent.getPlacingModeDirection()); } } else { return; @@ -135,11 +136,11 @@ public void onPlaceBlock(ActivateEvent event, EntityRef item) { while (targetClamberComponent.placingMode == newBlockClamberComponent.placingMode && placementDistance < targetClamberComponent.maxPlacementDistance); if (newBlock.isReplacementAllowed()) { - PlaceBlocks placeBlocks = new PlaceBlocks(JomlUtil.from(climbablePlacementPos), blockToPlace, event.getInstigator()); + PlaceBlocks placeBlocks = new PlaceBlocks(climbablePlacementPos, blockToPlace, event.getInstigator()); worldProvider.getWorldEntity().send(placeBlocks); if (!placeBlocks.isConsumed()) { - item.send(new OnBlockItemPlaced(climbablePlacementPos, blockEntityRegistry.getBlockEntityAt(climbablePlacementPos))); + item.send(new OnBlockItemPlaced(climbablePlacementPos, blockEntityRegistry.getBlockEntityAt(climbablePlacementPos), EntityRef.NULL)); } event.getInstigator().send(new PlaySoundEvent(Assets.getSound("engine:PlaceBlock").get(), 0.5f));