Last Updates

This commit is contained in:
2025-11-24 03:07:57 +01:00
parent 2f0999bf0b
commit d0d7b31a73
3 changed files with 81 additions and 20 deletions
@@ -1,10 +1,8 @@
package dev.siskel.poketDimensions;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Objects;
import java.util.UUID;
import java.util.logging.Logger;
import dev.siskel.poketDimensions.commands.givepd;
@@ -12,17 +10,13 @@ import dev.siskel.poketDimensions.commands.pdgamerule;
import dev.siskel.poketDimensions.commands.pdtp;
import dev.siskel.poketDimensions.commands.player.pd;
import dev.siskel.poketDimensions.events.PlayerInteract;
import dev.siskel.poketDimensions.events.PlayerMove;
import dev.siskel.poketDimensions.loader.PoketDimensionsWorldLoader;
import dev.siskel.poketDimensions.managers.InviteManager;
import dev.siskel.poketDimensions.managers.PlayerLocationManager;
import dev.siskel.poketDimensions.managers.PoketDimensionManager;
import org.bukkit.*;
import org.bukkit.command.PluginCommand;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerPreLoginEvent;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
public final class PoketDimensions extends JavaPlugin {
@@ -33,12 +27,6 @@ public final class PoketDimensions extends JavaPlugin {
@Override
public void onEnable() {
/*PluginManager var10002 = Bukkit.getPluginManager();
File f = new File(var10002.getPlugin("PocketDimensions").getDataFolder() + "/");
if (!f.exists()) {
f.mkdir();
}*/
getDataFolder().mkdirs();
File lastLocsFile = new File(getDataFolder(), "lastlocs.json");
@@ -54,6 +42,7 @@ public final class PoketDimensions extends JavaPlugin {
InviteManager inviteManager = new InviteManager();
PoketDimensionManager pocketDimensionManager = new PoketDimensionManager();
this.getServer().getPluginManager().registerEvents(new PlayerInteract(), this);
this.getServer().getPluginManager().registerEvents(new PlayerMove(), this);
((PluginCommand)Objects.requireNonNull(this.getCommand("givepd"))).setExecutor(new givepd());
((PluginCommand)Objects.requireNonNull(this.getCommand("pdtp"))).setExecutor(new pdtp());
((PluginCommand)Objects.requireNonNull(this.getCommand("pd"))).setExecutor(new pd(inviteManager, pocketDimensionManager));
@@ -65,8 +54,6 @@ public final class PoketDimensions extends JavaPlugin {
pwl.loadAllWorldsInFolder("poketdimensions");
});
this.logger.info("Plugin Activated!");
}
@@ -0,0 +1,74 @@
package dev.siskel.poketDimensions.events;
import dev.siskel.poketDimensions.PoketDimensions;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class PlayerMove implements Listener {
public PlayerMove() {
}
private static final int TARGET_Y = 200; // The Y coordinate to listen for
private static final int MIN_Y = -64; // Minimum world height to check from
private static final int MAX_Y_OFFSET = 384; // Max height offset to search upwards
@EventHandler
public void onPlayerMove(PlayerMoveEvent event) {
Player player = event.getPlayer();
Location loc = player.getLocation();
World world = loc.getWorld();
if (world != null && world.getName().contains("poketdimension")) {
// Check if player reached the target Y coordinate (block level)
if (loc.getBlockY() == -80 || loc.getBlockY() < -80) {
int x = loc.getBlockX();
int z = loc.getBlockZ();
int startY = Math.max(TARGET_Y, MIN_Y);
int maxY = Math.min(world.getMaxHeight() - 2, startY + MAX_Y_OFFSET);
Location teleportLocation = null;
boolean foundSpot = false;
// Search upwards from TARGET_Y for two consecutive air blocks with solid block underneath
for (int y = startY; y <= maxY; y++) {
Block below = world.getBlockAt(x, y - 1, z);
Block block1 = world.getBlockAt(x, y, z);
Block block2 = world.getBlockAt(x, y + 1, z);
if (block1.getType() == Material.AIR && block2.getType() == Material.AIR && below.getType().isSolid()) {
teleportLocation = new Location(world, x + 0.5, y, z + 0.5, loc.getYaw(), loc.getPitch());
foundSpot = true;
break;
}
}
// If no spot found, create stone block at (0, -50, 0) and teleport player above it
if (!foundSpot) {
int safeX = 0;
int safeY = TARGET_Y;
int safeZ = 0;
Block stoneBlock = world.getBlockAt(safeX, safeY, safeZ);
stoneBlock.setType(Material.STONE);
teleportLocation = new Location(world, safeX + 0.5, safeY + 1, safeZ + 0.5, loc.getYaw(), loc.getPitch());
player.sendMessage("No safe spot found at your location. Teleporting you to (0, 320, 0) on a stone block! You can Jump down without getting Damage.");
} else {
player.sendMessage("You fell out of your PoketDimension, teleporting you to a safe spot!");
}
player.teleport(teleportLocation);
}
}
}
}
@@ -20,13 +20,13 @@ public class PoketDimensionsWorldLoader {
public void loadAllWorldsInFolder(String folderName) {
File folder = new File(Bukkit.getServer().getWorldContainer(), folderName);
if (!folder.exists() || !folder.isDirectory()) {
Bukkit.getLogger().warning("Folder '" + folderName + "' does not exist or is not a directory.");
Bukkit.getLogger().warning("[Poketdimension] Folder '" + folderName + "' does not exist or is not a directory.");
return;
}
File[] files = folder.listFiles(File::isDirectory);
if (files == null) {
Bukkit.getLogger().warning("Failed to list subdirectories in '" + folderName + "'.");
Bukkit.getLogger().warning("[Poketdimension] Failed to list subdirectories in '" + folderName + "'.");
return;
}
@@ -39,12 +39,12 @@ public class PoketDimensionsWorldLoader {
World world = Bukkit.createWorld(creator);
if (world != null) {
Bukkit.getLogger().info("Loaded world: " + world.getName());
Bukkit.getLogger().info("[Poketdimension] Loaded world: " + world.getName());
} else {
Bukkit.getLogger().warning("Failed to load world: " + worldDir.getName());
Bukkit.getLogger().warning("[Poketdimension] Failed to load world: " + worldDir.getName());
}
} else {
Bukkit.getLogger().info("World already loaded: " + worldDir.getName());
Bukkit.getLogger().info("[Poketdimension] World already loaded: " + worldDir.getName());
}
}
}