fixed various bugs
This commit is contained in:
		| @@ -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(), | ||||
|   | ||||
| @@ -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); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -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()); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -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( | ||||
| @@ -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; | ||||
|   | ||||
| @@ -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); | ||||
|     } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user