diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/Main.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/Main.java
index f60f0d7..772427e 100644
--- a/src/main/java/eu/mhsl/minecraft/pixelblocks/Main.java
+++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/Main.java
@@ -69,7 +69,7 @@ public final class Main extends JavaPlugin {
             new PlacePixelListener(),
             new PreventHopperActionsListener(),
             new PreventLiquidsFlowListener(),
-            new PreventPistonsListener(),
+            new PreventRedstoneListener(),
             new PreventEntityPlacementListener(),
             new DiscoverRecipesListener(),
             new QuitWhileInPixelBlockListener(),
diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/ExitPixelWorldListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/ExitPixelWorldListener.java
index 638f94a..a46b27c 100644
--- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/ExitPixelWorldListener.java
+++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/ExitPixelWorldListener.java
@@ -5,6 +5,7 @@ import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlockWorld;
 import org.bukkit.World;
 import org.bukkit.event.EventHandler;
 import org.bukkit.event.Listener;
+import org.bukkit.event.entity.EntityPortalEvent;
 import org.bukkit.event.player.PlayerPortalEvent;
 
 import java.util.Objects;
@@ -20,4 +21,12 @@ public class ExitPixelWorldListener implements Listener {
         Objects.requireNonNull(pixelBlock);
         pixelBlock.exitBlock(event.getPlayer());
     }
+
+    @EventHandler
+    public void onEntityPortal(EntityPortalEvent event) {
+        World pixelBlockWorld = event.getFrom().getWorld();
+        if(!PixelBlockWorld.isPixelWorld(pixelBlockWorld)) return;
+
+        event.setCancelled(true);
+    }
 }
diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventEntityPlacementListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventEntityPlacementListener.java
index 12e4929..e4f62f0 100644
--- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventEntityPlacementListener.java
+++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventEntityPlacementListener.java
@@ -4,10 +4,16 @@ import eu.mhsl.minecraft.pixelblocks.utils.EventCanceling;
 import org.bukkit.event.EventHandler;
 import org.bukkit.event.Listener;
 import org.bukkit.event.entity.EntityPlaceEvent;
+import org.bukkit.event.entity.ProjectileLaunchEvent;
 
 public class PreventEntityPlacementListener implements Listener {
     @EventHandler
     public void preventPlace(EntityPlaceEvent event) {
         EventCanceling.cancelIfInPixelWorld(event, event.getBlock().getWorld());
     }
+
+    @EventHandler
+    public void preventProjectile(ProjectileLaunchEvent event) {
+        EventCanceling.cancelIfInPixelWorld(event, event.getEntity().getWorld());
+    }
 }
diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventPistonsListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventRedstoneListener.java
similarity index 62%
rename from src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventPistonsListener.java
rename to src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventRedstoneListener.java
index 57cc363..c0a5680 100644
--- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventPistonsListener.java
+++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PreventRedstoneListener.java
@@ -1,11 +1,19 @@
 package eu.mhsl.minecraft.pixelblocks.listeners;
 
+import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlockWorld;
 import eu.mhsl.minecraft.pixelblocks.utils.EventCanceling;
 import org.bukkit.event.EventHandler;
 import org.bukkit.event.Listener;
 import org.bukkit.event.block.BlockPistonExtendEvent;
+import org.bukkit.event.block.BlockRedstoneEvent;
+
+public class PreventRedstoneListener implements Listener {
+    @EventHandler
+    public void preventRedstone(BlockRedstoneEvent event) {
+        boolean isInPixelBlock = PixelBlockWorld.isPixelWorld(event.getBlock().getWorld());
+        if(isInPixelBlock) event.setNewCurrent(0);
+    }
 
-public class PreventPistonsListener implements Listener {
     @EventHandler
     public void blockPistons(BlockPistonExtendEvent event) {
         EventCanceling.shouldCancelInPixelBlock(
diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/PixelBlockHitbox.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/PixelBlockHitbox.java
index 5d9e522..464a9dd 100644
--- a/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/PixelBlockHitbox.java
+++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/PixelBlockHitbox.java
@@ -44,9 +44,9 @@ public class PixelBlockHitbox {
             double endingZ = MinMaxUtil.getMaxProperty(pixels, pixel -> pixel.relativeLocation().getZ());
 
             Location spawnLocation = absoluteLocation.clone().add(
-                ((startingX+endingX)/2)/pixelsPerBlock,
+                ((startingX+endingX)/2+0.5)/pixelsPerBlock,
                 (startingY/pixelsPerBlock)-0,
-                ((startingZ+endingZ)/2)/pixelsPerBlock
+                ((startingZ+endingZ)/2+0.5)/pixelsPerBlock
             );
 
             float height = (float) (endingY-startingY+1)/pixelsPerBlock;
diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/utils/EventCanceling.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/utils/EventCanceling.java
index 9f5f975..bdce890 100644
--- a/src/main/java/eu/mhsl/minecraft/pixelblocks/utils/EventCanceling.java
+++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/utils/EventCanceling.java
@@ -4,15 +4,18 @@ import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock;
 import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlockWorld;
 import org.bukkit.World;
 import org.bukkit.event.Cancellable;
+import org.jetbrains.annotations.Nullable;
 
-import java.util.Objects;
 import java.util.function.Function;
 
 public class EventCanceling {
     public static void shouldCancelInPixelBlock(Cancellable event, World world, Function<PixelBlock, Boolean> callback) {
         if(!PixelBlockWorld.isPixelWorld(world)) return;
-        PixelBlock pixelBlock = PixelBlock.getPixelBlockFromBlockWorld(world);
-        Objects.requireNonNull(pixelBlock);
+        @Nullable PixelBlock pixelBlock = PixelBlock.getPixelBlockFromBlockWorld(world);
+        if(pixelBlock == null) {
+            event.setCancelled(true);
+            return;
+        }
         if(callback.apply(pixelBlock)) event.setCancelled(true);
     }