prevent players in pixelblock wile being offline

This commit is contained in:
Elias Müller 2024-10-05 22:40:22 +02:00
parent 154c1cf936
commit 32e6eb259e
2 changed files with 10 additions and 3 deletions

View File

@ -72,7 +72,8 @@ public final class Main extends JavaPlugin {
new PreventLiquidsFlowListener(), new PreventLiquidsFlowListener(),
new PreventPistonsListener(), new PreventPistonsListener(),
new PreventEntityPlacementListener(), new PreventEntityPlacementListener(),
new DiscoverRecipesListener() new DiscoverRecipesListener(),
new QuitWhileInPixelBlockListener()
}; };
for (Listener listener : listeners) { for (Listener listener : listeners) {
@ -87,6 +88,7 @@ public final class Main extends JavaPlugin {
@Override @Override
public void onDisable() { public void onDisable() {
Bukkit.getOnlinePlayers().forEach(QuitWhileInPixelBlockListener::kickPlayerOutOfWorld);
try { try {
database.close(); database.close();
} catch (SQLException e) { } catch (SQLException e) {

View File

@ -3,6 +3,7 @@ package eu.mhsl.minecraft.pixelblocks.listeners;
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock; 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.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
@ -12,10 +13,14 @@ import java.util.Objects;
public class QuitWhileInPixelBlockListener implements Listener { public class QuitWhileInPixelBlockListener implements Listener {
@EventHandler @EventHandler
public void onLeave(PlayerQuitEvent event) { public void onLeave(PlayerQuitEvent event) {
World pixelBlockWorld = event.getPlayer().getLocation().getWorld(); kickPlayerOutOfWorld(event.getPlayer());
}
public static void kickPlayerOutOfWorld(Player player) {
World pixelBlockWorld = player.getLocation().getWorld();
if(!PixelBlockWorld.isPixelWorld(pixelBlockWorld)) return; if(!PixelBlockWorld.isPixelWorld(pixelBlockWorld)) return;
PixelBlock pixelBlock = PixelBlock.getPixelBlockFromBlockWorld(pixelBlockWorld); PixelBlock pixelBlock = PixelBlock.getPixelBlockFromBlockWorld(pixelBlockWorld);
Objects.requireNonNull(pixelBlock); Objects.requireNonNull(pixelBlock);
pixelBlock.exitBlock(event.getPlayer()); pixelBlock.exitBlock(player);
} }
} }