fixed various bugs

This commit is contained in:
Lars Neuhaus 2024-12-14 14:59:42 +01:00
parent 88b55d4d7c
commit 8bb2d382b9
6 changed files with 33 additions and 7 deletions

View File

@ -69,7 +69,7 @@ public final class Main extends JavaPlugin {
new PlacePixelListener(), new PlacePixelListener(),
new PreventHopperActionsListener(), new PreventHopperActionsListener(),
new PreventLiquidsFlowListener(), new PreventLiquidsFlowListener(),
new PreventPistonsListener(), new PreventRedstoneListener(),
new PreventEntityPlacementListener(), new PreventEntityPlacementListener(),
new DiscoverRecipesListener(), new DiscoverRecipesListener(),
new QuitWhileInPixelBlockListener(), new QuitWhileInPixelBlockListener(),

View File

@ -5,6 +5,7 @@ import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlockWorld;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityPortalEvent;
import org.bukkit.event.player.PlayerPortalEvent; import org.bukkit.event.player.PlayerPortalEvent;
import java.util.Objects; import java.util.Objects;
@ -20,4 +21,12 @@ public class ExitPixelWorldListener implements Listener {
Objects.requireNonNull(pixelBlock); Objects.requireNonNull(pixelBlock);
pixelBlock.exitBlock(event.getPlayer()); pixelBlock.exitBlock(event.getPlayer());
} }
@EventHandler
public void onEntityPortal(EntityPortalEvent event) {
World pixelBlockWorld = event.getFrom().getWorld();
if(!PixelBlockWorld.isPixelWorld(pixelBlockWorld)) return;
event.setCancelled(true);
}
} }

View File

@ -4,10 +4,16 @@ import eu.mhsl.minecraft.pixelblocks.utils.EventCanceling;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityPlaceEvent; import org.bukkit.event.entity.EntityPlaceEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent;
public class PreventEntityPlacementListener implements Listener { public class PreventEntityPlacementListener implements Listener {
@EventHandler @EventHandler
public void preventPlace(EntityPlaceEvent event) { public void preventPlace(EntityPlaceEvent event) {
EventCanceling.cancelIfInPixelWorld(event, event.getBlock().getWorld()); EventCanceling.cancelIfInPixelWorld(event, event.getBlock().getWorld());
} }
@EventHandler
public void preventProjectile(ProjectileLaunchEvent event) {
EventCanceling.cancelIfInPixelWorld(event, event.getEntity().getWorld());
}
} }

View File

@ -1,11 +1,19 @@
package eu.mhsl.minecraft.pixelblocks.listeners; package eu.mhsl.minecraft.pixelblocks.listeners;
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlockWorld;
import eu.mhsl.minecraft.pixelblocks.utils.EventCanceling; import eu.mhsl.minecraft.pixelblocks.utils.EventCanceling;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPistonExtendEvent; 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 @EventHandler
public void blockPistons(BlockPistonExtendEvent event) { public void blockPistons(BlockPistonExtendEvent event) {
EventCanceling.shouldCancelInPixelBlock( EventCanceling.shouldCancelInPixelBlock(

View File

@ -44,9 +44,9 @@ public class PixelBlockHitbox {
double endingZ = MinMaxUtil.getMaxProperty(pixels, pixel -> pixel.relativeLocation().getZ()); double endingZ = MinMaxUtil.getMaxProperty(pixels, pixel -> pixel.relativeLocation().getZ());
Location spawnLocation = absoluteLocation.clone().add( Location spawnLocation = absoluteLocation.clone().add(
((startingX+endingX)/2)/pixelsPerBlock, ((startingX+endingX)/2+0.5)/pixelsPerBlock,
(startingY/pixelsPerBlock)-0, (startingY/pixelsPerBlock)-0,
((startingZ+endingZ)/2)/pixelsPerBlock ((startingZ+endingZ)/2+0.5)/pixelsPerBlock
); );
float height = (float) (endingY-startingY+1)/pixelsPerBlock; float height = (float) (endingY-startingY+1)/pixelsPerBlock;

View File

@ -4,15 +4,18 @@ import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock;
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlockWorld; import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlockWorld;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.event.Cancellable; import org.bukkit.event.Cancellable;
import org.jetbrains.annotations.Nullable;
import java.util.Objects;
import java.util.function.Function; import java.util.function.Function;
public class EventCanceling { public class EventCanceling {
public static void shouldCancelInPixelBlock(Cancellable event, World world, Function<PixelBlock, Boolean> callback) { public static void shouldCancelInPixelBlock(Cancellable event, World world, Function<PixelBlock, Boolean> callback) {
if(!PixelBlockWorld.isPixelWorld(world)) return; if(!PixelBlockWorld.isPixelWorld(world)) return;
PixelBlock pixelBlock = PixelBlock.getPixelBlockFromBlockWorld(world); @Nullable PixelBlock pixelBlock = PixelBlock.getPixelBlockFromBlockWorld(world);
Objects.requireNonNull(pixelBlock); if(pixelBlock == null) {
event.setCancelled(true);
return;
}
if(callback.apply(pixelBlock)) event.setCancelled(true); if(callback.apply(pixelBlock)) event.setCancelled(true);
} }