finished code cleanup

This commit is contained in:
2024-07-24 20:21:35 +02:00
parent 93dc9d8a80
commit e8a0523b68
17 changed files with 198 additions and 180 deletions

View File

@@ -11,15 +11,11 @@ import org.bukkit.event.Listener;
public class BreakPixelBlockListener implements Listener {
@EventHandler
static void destroyPixelBlock(PrePlayerAttackEntityEvent event) {
if(event.getAttacked() instanceof Interaction) {
Location blockLocation = event.getAttacked().getLocation().add(0, PixelBlocksPlugin.configuration.hitboxOffset(), 0).toBlockLocation();
blockLocation.setYaw(0);
blockLocation.setPitch(0);
if(!(event.getAttacked() instanceof Interaction)) return;
PixelBlock pixelBlock = PixelBlock.getPixelBlockFromPlacedLocation(blockLocation);
assert pixelBlock != null;
pixelBlock.destroy(event.getPlayer());
}
Location blockLocation = event.getAttacked().getLocation().add(0, PixelBlocksPlugin.configuration.hitboxOffset(), 0).toBlockLocation();
PixelBlock pixelBlock = PixelBlock.getPixelBlockFromPlacedLocation(blockLocation);
if(pixelBlock == null) return;
pixelBlock.destroy(event.getPlayer());
}
}

View File

@@ -1,27 +1,17 @@
package eu.mhsl.minecraft.pixelblocks.listeners;
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock;
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlockWorld;
import org.bukkit.Location;
import org.bukkit.World;
import eu.mhsl.minecraft.pixelblocks.utils.EventCanceling;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import java.util.Objects;
public class BreakPixelListener implements Listener {
@EventHandler
static void onBlockBreak(BlockBreakEvent event) {
World world = event.getBlock().getWorld();
if(!PixelBlockWorld.isPixelWorld(world)) return;
PixelBlock pixelBlock = PixelBlock.getPixelBlockFromBlockWorld(world);
Objects.requireNonNull(pixelBlock);
PixelBlockWorld pixelBlockWorld = pixelBlock.getPixelWorld();
Location blockLocation = event.getBlock().getLocation();
if(!pixelBlockWorld.allowPlacements(blockLocation)) event.setCancelled(true);
EventCanceling.shouldCancelInPixelBlock(
event,
event.getBlock().getWorld(),
pixelBlock -> !pixelBlock.getPixelWorld().allowPlacements(event.getBlock().getLocation())
);
}
}

View File

@@ -1,25 +0,0 @@
package eu.mhsl.minecraft.pixelblocks.listeners;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.event.Cancellable;
import java.util.List;
import static eu.mhsl.minecraft.pixelblocks.PixelBlocksPlugin.plugin;
public class CommonEventHandlers {
public static boolean isInPixelWorld(World world) {
List<World> standardWorlds = Bukkit.getWorlds().stream()
.filter(w -> !w.getName().startsWith(plugin.getDataFolder().getPath()))
.toList();
return !standardWorlds.contains(world);
}
public static void cancelIfInPixelWorld(Cancellable event, World world) {
if(isInPixelWorld(world)) {
event.setCancelled(true);
}
}
}

View File

@@ -11,20 +11,15 @@ import org.bukkit.event.player.PlayerInteractEntityEvent;
public class EnterPixelBlockListener implements Listener {
@EventHandler
static void enterPixelBlock(PlayerInteractEntityEvent event) {
if(event.getRightClicked() instanceof Interaction) {
Location interactionLocation = event
if(!(event.getRightClicked() instanceof Interaction)) return;
Location interactionLocation = event
.getRightClicked()
.getLocation()
.add(0, PixelBlocksPlugin.configuration.hitboxOffset(), 0)
.toBlockLocation();
interactionLocation.setYaw(0);
interactionLocation.setPitch(0);
PixelBlock pixelBlock = PixelBlock.getPixelBlockFromPlacedLocation(interactionLocation);
assert pixelBlock != null;
pixelBlock.enterBlock(event.getPlayer());
}
PixelBlock pixelBlock = PixelBlock.getPixelBlockFromPlacedLocation(interactionLocation);
if(pixelBlock == null) return;
pixelBlock.enterBlock(event.getPlayer());
}
}

View File

@@ -10,7 +10,7 @@ import org.bukkit.event.player.PlayerPortalEvent;
import java.util.Objects;
public class PixelWorldExitListener implements Listener {
public class ExitPixelWorldListener implements Listener {
@EventHandler
static void onPlayerChangeWorld(PlayerChangedWorldEvent event) {
World changingFrom = event.getFrom();

View File

@@ -1,42 +0,0 @@
package eu.mhsl.minecraft.pixelblocks.listeners;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockExplodeEvent;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerPortalEvent;
public class PixelWorldBehaviourListener implements Listener {
@EventHandler
static void onBlockExplode(BlockExplodeEvent event) {
CommonEventHandlers.cancelIfInPixelWorld(event, event.getBlock().getWorld());
}
@EventHandler
static void onCreatureSpawn(CreatureSpawnEvent event) {
CommonEventHandlers.cancelIfInPixelWorld(event, event.getLocation().getWorld());
}
@EventHandler
static void onEntityDamage(EntityDamageEvent event) {
CommonEventHandlers.cancelIfInPixelWorld(event, event.getEntity().getWorld());
}
@EventHandler
static void onEntityExplode(EntityExplodeEvent event) {
CommonEventHandlers.cancelIfInPixelWorld(event, event.getLocation().getWorld());
}
@EventHandler
static void onPlayerDropItem(PlayerDropItemEvent event) {
CommonEventHandlers.cancelIfInPixelWorld(event, event.getItemDrop().getWorld());
}
@EventHandler
static void onPlayerPortal(PlayerPortalEvent event) {
CommonEventHandlers.cancelIfInPixelWorld(event, event.getFrom().getWorld());
}
}

View File

@@ -1,53 +0,0 @@
package eu.mhsl.minecraft.pixelblocks.listeners;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.*;
import org.bukkit.inventory.CraftingInventory;
import org.bukkit.inventory.PlayerInventory;
public class PixelWorldInventoryListener implements Listener {
@EventHandler
static void onInventoryOpen(InventoryOpenEvent event) {
if(CommonEventHandlers.isInPixelWorld(event.getPlayer().getWorld())) {
if(!(event.getInventory() instanceof PlayerInventory) && !(event.getInventory() instanceof CraftingInventory)) {
event.setCancelled(true);
}
}
}
@EventHandler
static void onInventoryDrag(InventoryDragEvent event) {
if(CommonEventHandlers.isInPixelWorld(event.getWhoClicked().getWorld())) {
if(!(event.getInventory() instanceof PlayerInventory) && !(event.getInventory() instanceof CraftingInventory)) {
event.setCancelled(true);
}
}
}
@EventHandler
static void onInventoryClick(InventoryClickEvent event) {
if(CommonEventHandlers.isInPixelWorld(event.getWhoClicked().getWorld())) {
if(!(event.getInventory() instanceof PlayerInventory) && !(event.getInventory() instanceof CraftingInventory)) {
event.setCancelled(true);
}
}
}
@EventHandler
static void onInventoryInteract(InventoryInteractEvent event) {
if(CommonEventHandlers.isInPixelWorld(event.getWhoClicked().getWorld())) {
if(!(event.getInventory() instanceof PlayerInventory) && !(event.getInventory() instanceof CraftingInventory)) {
event.setCancelled(true);
}
}
}
@EventHandler
static void onInventoryPickupItem(InventoryPickupItemEvent event) {
if(CommonEventHandlers.isInPixelWorld(event.getItem().getWorld())
&& event.getInventory().getType() == InventoryType.HOPPER) {
event.setCancelled(true);
}
}
}

View File

@@ -1,27 +1,27 @@
package eu.mhsl.minecraft.pixelblocks.listeners;
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock;
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlockWorld;
import org.bukkit.Location;
import org.bukkit.World;
import eu.mhsl.minecraft.pixelblocks.utils.EventCanceling;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;
import java.util.Objects;
import org.bukkit.event.player.PlayerBucketEmptyEvent;
public class PlacePixelListener implements Listener {
@EventHandler
static void onBlockPlace(BlockPlaceEvent event) {
World world = event.getBlock().getWorld();
if(!PixelBlockWorld.isPixelWorld(world)) return;
EventCanceling.shouldCancelInPixelBlock(
event,
event.getBlock().getWorld(),
pixelBlock -> !pixelBlock.getPixelWorld().allowPlacements(event.getBlock().getLocation())
);
}
PixelBlock pixelBlock = PixelBlock.getPixelBlockFromBlockWorld(world);
Objects.requireNonNull(pixelBlock);
PixelBlockWorld pixelBlockWorld = pixelBlock.getPixelWorld();
Location blockLocation = event.getBlock().getLocation();
if(!pixelBlockWorld.allowPlacements(blockLocation)) event.setCancelled(true);
@EventHandler
static void onBuketEmpty(PlayerBucketEmptyEvent event) {
EventCanceling.shouldCancelInPixelBlock(
event,
event.getBlock().getWorld(),
pixelBlock -> !pixelBlock.getPixelWorld().allowPlacements(event.getBlock().getLocation())
);
}
}

View File

@@ -0,0 +1,13 @@
package eu.mhsl.minecraft.pixelblocks.listeners;
import eu.mhsl.minecraft.pixelblocks.utils.EventCanceling;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityPlaceEvent;
public class PreventEntityPlacementListener implements Listener {
@EventHandler
public static void preventPlace(EntityPlaceEvent event) {
EventCanceling.cancelIfInPixelWorld(event, event.getBlock().getWorld());
}
}

View File

@@ -0,0 +1,18 @@
package eu.mhsl.minecraft.pixelblocks.listeners;
import eu.mhsl.minecraft.pixelblocks.utils.EventCanceling;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryPickupItemEvent;
import org.bukkit.event.inventory.InventoryType;
public class PreventHopperActionsListener implements Listener {
@EventHandler
static void onInventoryPickupItem(InventoryPickupItemEvent event) {
EventCanceling.shouldCancelInPixelBlock(
event,
event.getItem().getWorld(),
(pixelBlock) -> event.getInventory().getType() == InventoryType.HOPPER
);
}
}

View File

@@ -0,0 +1,31 @@
package eu.mhsl.minecraft.pixelblocks.listeners;
import eu.mhsl.minecraft.pixelblocks.utils.EventCanceling;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockExplodeEvent;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
public class PreventIllegalBlocksListener implements Listener {
@EventHandler
static void onBlockExplode(BlockExplodeEvent event) {
EventCanceling.cancelIfInPixelWorld(event, event.getBlock().getWorld());
}
@EventHandler
static void onCreatureSpawn(CreatureSpawnEvent event) {
EventCanceling.cancelIfInPixelWorld(event, event.getLocation().getWorld());
}
@EventHandler
static void onEntityDamage(EntityDamageEvent event) {
EventCanceling.cancelIfInPixelWorld(event, event.getEntity().getWorld());
}
@EventHandler
static void onEntityExplode(EntityExplodeEvent event) {
EventCanceling.cancelIfInPixelWorld(event, event.getLocation().getWorld());
}
}

View File

@@ -0,0 +1,35 @@
package eu.mhsl.minecraft.pixelblocks.listeners;
import eu.mhsl.minecraft.pixelblocks.utils.EventCanceling;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.*;
import org.bukkit.inventory.CraftingInventory;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.PlayerInventory;
public class PreventInventorysListener implements Listener {
@EventHandler
static void onInventoryOpen(InventoryOpenEvent event) {
EventCanceling.shouldCancelInPixelBlock(
event,
event.getPlayer().getWorld(),
(pixelBlock) -> isDisallowedInventory(event.getInventory())
);
}
@EventHandler
static void onInventoryInteract(InventoryInteractEvent event) {
EventCanceling.shouldCancelInPixelBlock(
event,
event.getWhoClicked().getWorld(),
(pixelBlock) -> isDisallowedInventory(event.getInventory())
);
}
private static boolean isDisallowedInventory(Inventory inventory) {
return !(inventory instanceof PlayerInventory
|| inventory instanceof CraftingInventory
|| inventory.getType() == InventoryType.ENDER_CHEST);
}
}

View File

@@ -0,0 +1,17 @@
package eu.mhsl.minecraft.pixelblocks.listeners;
import eu.mhsl.minecraft.pixelblocks.utils.EventCanceling;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockFromToEvent;
public class PreventLiquidsFlowListener implements Listener {
@EventHandler
public static void onLiquidFlow(BlockFromToEvent event) {
EventCanceling.shouldCancelInPixelBlock(
event,
event.getToBlock().getWorld(),
pixelBlock -> !pixelBlock.getPixelWorld().allowPlacements(event.getToBlock().getLocation())
);
}
}

View File

@@ -0,0 +1,19 @@
package eu.mhsl.minecraft.pixelblocks.listeners;
import eu.mhsl.minecraft.pixelblocks.utils.EventCanceling;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPistonExtendEvent;
public class PreventPistonsListener implements Listener {
@EventHandler
public static void blockPistons(BlockPistonExtendEvent event) {
EventCanceling.shouldCancelInPixelBlock(
event,
event.getBlock().getWorld(),
(pixelBlock) -> event.getBlocks().stream()
.anyMatch(block -> !pixelBlock.getPixelWorld()
.allowPlacements(block.getLocation().add(event.getDirection().getDirection())))
);
}
}