Last Updates
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user