fixed various bugs
This commit is contained in:
parent
88b55d4d7c
commit
8bb2d382b9
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user