wip: further code cleanup
This commit is contained in:
@@ -1,18 +0,0 @@
|
||||
//package eu.mhsl.minecraft.pixelblocks.listeners;
|
||||
//
|
||||
//import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock;
|
||||
//import org.bukkit.event.EventHandler;
|
||||
//import org.bukkit.event.Listener;
|
||||
//import org.bukkit.event.block.BlockBreakEvent;
|
||||
//
|
||||
//public class BlockBreakListener implements Listener {
|
||||
// @EventHandler
|
||||
// static void onBlockBreak(BlockBreakEvent event) {
|
||||
// if(CommonEventHandlers.isInPixelWorld(event.getBlock().getWorld())) {
|
||||
// PixelBlock pixelBlock = PixelBlock.getPixelBlockFromWorld(event.getBlock().getLocation().getWorld());
|
||||
//
|
||||
// assert pixelBlock != null;
|
||||
// pixelBlock.handleBlockBreak(event);
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
@@ -1,55 +0,0 @@
|
||||
package eu.mhsl.minecraft.pixelblocks.listeners;
|
||||
|
||||
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock;
|
||||
import eu.mhsl.minecraft.pixelblocks.utils.Direction;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.UUID;
|
||||
|
||||
public class BlockPlaceListener implements Listener {
|
||||
@EventHandler
|
||||
static void onBlockPlace(BlockPlaceEvent event) {
|
||||
|
||||
if(event.getItemInHand().getItemMeta().getDisplayName().contains("Pixelblock")
|
||||
&& !event.getItemInHand().getItemMeta().getItemName().isEmpty()
|
||||
&& event.getItemInHand().getItemMeta().getEnchantmentGlintOverride()) {
|
||||
event.setCancelled(true);
|
||||
|
||||
World playerWorld = event.getPlayer().getWorld();
|
||||
World[] standardWorlds = {Bukkit.getWorlds().get(0), Bukkit.getWorlds().get(1)}; // don't allow Pixelblocks in the end dimension
|
||||
|
||||
if(Arrays.stream(standardWorlds).toList().contains(playerWorld)) {
|
||||
Location newBlockLocation = event.getBlock().getLocation();
|
||||
|
||||
if(event.getItemInHand().getItemMeta().getItemName().startsWith("Pixelblock")) {
|
||||
ItemMeta newMeta = event.getItemInHand().getItemMeta();
|
||||
newMeta.setItemName(UUID.randomUUID().toString());
|
||||
event.getItemInHand().setItemMeta(newMeta);
|
||||
}
|
||||
|
||||
PixelBlock pixelBlock = new PixelBlock(newBlockLocation, event.getPlayer().getUniqueId(), UUID.fromString(event.getItemInHand().getItemMeta().getItemName()));
|
||||
if(pixelBlock.place(newBlockLocation, Direction.vectorToDirection(event.getPlayer().getLocation().getDirection()))) {
|
||||
event.getPlayer().getInventory().remove(event.getItemInHand());
|
||||
} else {
|
||||
event.getPlayer().sendMessage("Hier wurde bereits ein Pixelblock plaziert.");
|
||||
}
|
||||
} else {
|
||||
event.getPlayer().sendMessage("Du kannst nur in der Overworld oder im Nether Pixelblocks platzieren!");
|
||||
}
|
||||
} else {
|
||||
// if(CommonEventHandlers.isInPixelWorld(event.getBlock().getWorld())) {
|
||||
// PixelBlock pixelBlock = PixelBlock.getPixelBlockFromWorld(event.getBlock().getLocation().getWorld());
|
||||
//
|
||||
// assert pixelBlock != null;
|
||||
// pixelBlock.handleBlockPlace(event);
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,29 +3,14 @@ package eu.mhsl.minecraft.pixelblocks.listeners;
|
||||
import eu.mhsl.minecraft.pixelblocks.PixelBlocksPlugin;
|
||||
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock;
|
||||
import io.papermc.paper.event.player.PrePlayerAttackEntityEvent;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Interaction;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||
|
||||
public class PlayerInteractListener implements Listener {
|
||||
public class BreakPixelBlockListener implements Listener {
|
||||
@EventHandler
|
||||
static void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
|
||||
if(event.getRightClicked() instanceof Interaction) {
|
||||
Location interactionLocation = event.getRightClicked().getLocation().clone().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());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
static void onPlayerAttackEntity(PrePlayerAttackEntityEvent event) {
|
||||
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);
|
||||
@@ -0,0 +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 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);
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
package eu.mhsl.minecraft.pixelblocks.listeners;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.CraftItemEvent;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
public class CraftItemListener implements Listener {
|
||||
@EventHandler
|
||||
static void onCraftItem(CraftItemEvent event) {
|
||||
if(Objects.requireNonNull(event.getCurrentItem()).getItemMeta().getDisplayName().contains("Pixelblock")) {
|
||||
if(event.isShiftClick()) {
|
||||
event.setCancelled(true);
|
||||
} else {
|
||||
ItemMeta meta = event.getCurrentItem().getItemMeta();
|
||||
meta.setItemName("Pixelblock " + UUID.randomUUID());
|
||||
event.getCurrentItem().setItemMeta(meta);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package eu.mhsl.minecraft.pixelblocks.listeners;
|
||||
|
||||
import eu.mhsl.minecraft.pixelblocks.PixelBlockItem;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.CraftItemEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class CraftPixelBlockListener implements Listener {
|
||||
@EventHandler
|
||||
static void onCraftItem(CraftItemEvent event) {
|
||||
ItemStack craftedItem = event.getCurrentItem();
|
||||
Objects.requireNonNull(craftedItem);
|
||||
|
||||
ItemMeta craftedItemMeta = craftedItem.getItemMeta();
|
||||
String itemName = PlainTextComponentSerializer.plainText().serialize(craftedItemMeta.itemName());
|
||||
|
||||
if(!itemName.equals(PixelBlockItem.unusedBlockID.toString())) return;
|
||||
if(event.isShiftClick()) event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package eu.mhsl.minecraft.pixelblocks.listeners;
|
||||
|
||||
import eu.mhsl.minecraft.pixelblocks.PixelBlocksPlugin;
|
||||
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.entity.Interaction;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
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
|
||||
.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());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package eu.mhsl.minecraft.pixelblocks.listeners;
|
||||
|
||||
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock;
|
||||
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlockWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class FallOutOfPixelBlockListener implements Listener {
|
||||
@EventHandler
|
||||
static void onPlayerMove(PlayerMoveEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
if(player.getLocation().y() > -65) return;
|
||||
if(!PixelBlockWorld.isPixelWorld(player.getWorld())) return;
|
||||
|
||||
PixelBlock pixelBlock = PixelBlock.getPixelBlockFromBlockWorld(player.getWorld());
|
||||
Objects.requireNonNull(pixelBlock);
|
||||
player.teleport(pixelBlock.getPixelWorld().getSpawnLocation());
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@ import org.bukkit.event.entity.EntityExplodeEvent;
|
||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||
import org.bukkit.event.player.PlayerPortalEvent;
|
||||
|
||||
public class InPixelWorldCancelListener implements Listener {
|
||||
public class PixelWorldBehaviourListener implements Listener {
|
||||
@EventHandler
|
||||
static void onBlockExplode(BlockExplodeEvent event) {
|
||||
CommonEventHandlers.cancelIfInPixelWorld(event, event.getBlock().getWorld());
|
||||
@@ -0,0 +1,35 @@
|
||||
package eu.mhsl.minecraft.pixelblocks.listeners;
|
||||
|
||||
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock;
|
||||
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.player.PlayerChangedWorldEvent;
|
||||
import org.bukkit.event.player.PlayerPortalEvent;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class PixelWorldExitListener implements Listener {
|
||||
@EventHandler
|
||||
static void onPlayerChangeWorld(PlayerChangedWorldEvent event) {
|
||||
World changingFrom = event.getFrom();
|
||||
if(!PixelBlockWorld.isPixelWorld(changingFrom)) return;
|
||||
|
||||
PixelBlock pixelBlock = PixelBlock.getPixelBlockFromBlockWorld(changingFrom);
|
||||
Objects.requireNonNull(pixelBlock);
|
||||
pixelBlock.updateEntities();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
static void onPlayerPortal(PlayerPortalEvent event) {
|
||||
World pixelBlockWorld = event.getFrom().getWorld();
|
||||
|
||||
if(!PixelBlockWorld.isPixelWorld(pixelBlockWorld)) return;
|
||||
|
||||
event.setCancelled(true);
|
||||
PixelBlock pixelBlock = PixelBlock.getPixelBlockFromBlockWorld(pixelBlockWorld);
|
||||
Objects.requireNonNull(pixelBlock);
|
||||
event.getPlayer().teleport(pixelBlock.lastEntryLocation);
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ import org.bukkit.event.inventory.*;
|
||||
import org.bukkit.inventory.CraftingInventory;
|
||||
import org.bukkit.inventory.PlayerInventory;
|
||||
|
||||
public class InventoryListener implements Listener {
|
||||
public class PixelWorldInventoryListener implements Listener {
|
||||
@EventHandler
|
||||
static void onInventoryOpen(InventoryOpenEvent event) {
|
||||
if(CommonEventHandlers.isInPixelWorld(event.getPlayer().getWorld())) {
|
||||
@@ -0,0 +1,72 @@
|
||||
package eu.mhsl.minecraft.pixelblocks.listeners;
|
||||
|
||||
import eu.mhsl.minecraft.pixelblocks.PixelBlockItem;
|
||||
import eu.mhsl.minecraft.pixelblocks.PixelBlocksPlugin;
|
||||
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock;
|
||||
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlockWorld;
|
||||
import eu.mhsl.minecraft.pixelblocks.utils.Direction;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class PlacePixelBlockListener implements Listener {
|
||||
@EventHandler
|
||||
static void onBlockPlace(BlockPlaceEvent event) {
|
||||
ItemStack usedItem = event.getItemInHand();
|
||||
ItemMeta usedItemMeta = usedItem.getItemMeta();
|
||||
Component displayName = usedItemMeta.displayName();
|
||||
if(displayName == null) return;
|
||||
if(!displayName.toString().contains("Pixelblock")) return;
|
||||
if(!usedItemMeta.getEnchantmentGlintOverride()) return;
|
||||
|
||||
World playerWorld = event.getPlayer().getWorld();
|
||||
if(PixelBlockWorld.isPixelWorld(playerWorld)) {
|
||||
event.getPlayer().sendMessage("In Pixelblöcken kann kein Pixelblock erstellt werden.");
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
Location newBlockLocation = event.getBlock().getLocation();
|
||||
playerWorld.getBlockAt(newBlockLocation).setType(Material.AIR);
|
||||
|
||||
Direction direction = Direction.vectorToDirection(event.getPlayer().getLocation().getDirection());
|
||||
String itemName = PlainTextComponentSerializer.plainText().serialize(usedItemMeta.itemName());
|
||||
|
||||
PixelBlock pixelBlock;
|
||||
if(itemName.equals(PixelBlockItem.unusedBlockID.toString())) {
|
||||
pixelBlock = new PixelBlock(
|
||||
newBlockLocation,
|
||||
event.getPlayer().getUniqueId(),
|
||||
UUID.randomUUID(),
|
||||
direction
|
||||
);
|
||||
} else {
|
||||
UUID itemUUID = UUID.fromString(itemName);
|
||||
pixelBlock = PixelBlocksPlugin.pixelBlocks.stream()
|
||||
.filter(block -> block.blockUUID.equals(itemUUID))
|
||||
.findFirst()
|
||||
.orElseGet(() -> new PixelBlock(
|
||||
newBlockLocation,
|
||||
event.getPlayer().getUniqueId(),
|
||||
itemUUID,
|
||||
direction
|
||||
));
|
||||
}
|
||||
|
||||
try {
|
||||
pixelBlock.place(newBlockLocation, direction);
|
||||
} catch (IllegalArgumentException e) {
|
||||
event.setCancelled(true);
|
||||
event.getPlayer().sendMessage(Component.text(e.getMessage()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +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 org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class PlacePixelListener implements Listener {
|
||||
@EventHandler
|
||||
static void onBlockPlace(BlockPlaceEvent 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);
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package eu.mhsl.minecraft.pixelblocks.listeners;
|
||||
|
||||
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerChangedWorldEvent;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class PlayerChangeWorldListener implements Listener {
|
||||
@EventHandler
|
||||
static void onPlayerChangeWorld(PlayerChangedWorldEvent event) {
|
||||
if(CommonEventHandlers.isInPixelWorld(event.getFrom())) {
|
||||
// Bukkit.getScheduler().runTaskLater(plugin, () -> Objects.requireNonNull(PixelBlock.getPixelBlockFromWorld(event.getFrom())).update(), 60);
|
||||
Objects.requireNonNull(PixelBlock.getPixelBlockFromBlockWorld(event.getFrom())).update();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
package eu.mhsl.minecraft.pixelblocks.listeners;
|
||||
|
||||
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
|
||||
public class PlayerMoveListener implements Listener {
|
||||
@EventHandler
|
||||
static void onPlayerMove(PlayerMoveEvent event) {
|
||||
if(CommonEventHandlers.isInPixelWorld(event.getPlayer().getWorld())) {
|
||||
Location playerLocation = event.getPlayer().getLocation();
|
||||
PixelBlock pixelBlock = PixelBlock.getPixelBlockFromBlockWorld(event.getPlayer().getWorld());
|
||||
assert pixelBlock != null;
|
||||
Location portalLocation = pixelBlock.getPixelWorld().getPortalLocation().clone();
|
||||
|
||||
if(playerLocation.y() < -65) {
|
||||
event.getPlayer().teleport(pixelBlock.getPixelWorld().getSpawnLocation());
|
||||
} else if(playerLocation.getZ() < portalLocation.getZ()+1
|
||||
&& playerLocation.getZ() > portalLocation.getZ()) {
|
||||
if(playerLocation.getX() < portalLocation.getX()+3
|
||||
&& playerLocation.getX() > portalLocation.getX()+1) {
|
||||
if(playerLocation.getY() < portalLocation.getY()+4
|
||||
&& playerLocation.getY() > portalLocation.getY()+1) {
|
||||
event.getPlayer().teleport(pixelBlock.lastEntryLocation);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user