Last Updates
This commit is contained in:
@@ -1,10 +1,8 @@
|
|||||||
package dev.siskel.poketDimensions;
|
package dev.siskel.poketDimensions;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import dev.siskel.poketDimensions.commands.givepd;
|
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.pdtp;
|
||||||
import dev.siskel.poketDimensions.commands.player.pd;
|
import dev.siskel.poketDimensions.commands.player.pd;
|
||||||
import dev.siskel.poketDimensions.events.PlayerInteract;
|
import dev.siskel.poketDimensions.events.PlayerInteract;
|
||||||
|
import dev.siskel.poketDimensions.events.PlayerMove;
|
||||||
import dev.siskel.poketDimensions.loader.PoketDimensionsWorldLoader;
|
import dev.siskel.poketDimensions.loader.PoketDimensionsWorldLoader;
|
||||||
import dev.siskel.poketDimensions.managers.InviteManager;
|
import dev.siskel.poketDimensions.managers.InviteManager;
|
||||||
import dev.siskel.poketDimensions.managers.PlayerLocationManager;
|
|
||||||
import dev.siskel.poketDimensions.managers.PoketDimensionManager;
|
import dev.siskel.poketDimensions.managers.PoketDimensionManager;
|
||||||
|
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
import org.bukkit.command.PluginCommand;
|
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;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
public final class PoketDimensions extends JavaPlugin {
|
public final class PoketDimensions extends JavaPlugin {
|
||||||
@@ -33,12 +27,6 @@ public final class PoketDimensions extends JavaPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
/*PluginManager var10002 = Bukkit.getPluginManager();
|
|
||||||
File f = new File(var10002.getPlugin("PocketDimensions").getDataFolder() + "/");
|
|
||||||
if (!f.exists()) {
|
|
||||||
f.mkdir();
|
|
||||||
}*/
|
|
||||||
|
|
||||||
getDataFolder().mkdirs();
|
getDataFolder().mkdirs();
|
||||||
|
|
||||||
File lastLocsFile = new File(getDataFolder(), "lastlocs.json");
|
File lastLocsFile = new File(getDataFolder(), "lastlocs.json");
|
||||||
@@ -54,6 +42,7 @@ public final class PoketDimensions extends JavaPlugin {
|
|||||||
InviteManager inviteManager = new InviteManager();
|
InviteManager inviteManager = new InviteManager();
|
||||||
PoketDimensionManager pocketDimensionManager = new PoketDimensionManager();
|
PoketDimensionManager pocketDimensionManager = new PoketDimensionManager();
|
||||||
this.getServer().getPluginManager().registerEvents(new PlayerInteract(), this);
|
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("givepd"))).setExecutor(new givepd());
|
||||||
((PluginCommand)Objects.requireNonNull(this.getCommand("pdtp"))).setExecutor(new pdtp());
|
((PluginCommand)Objects.requireNonNull(this.getCommand("pdtp"))).setExecutor(new pdtp());
|
||||||
((PluginCommand)Objects.requireNonNull(this.getCommand("pd"))).setExecutor(new pd(inviteManager, pocketDimensionManager));
|
((PluginCommand)Objects.requireNonNull(this.getCommand("pd"))).setExecutor(new pd(inviteManager, pocketDimensionManager));
|
||||||
@@ -65,8 +54,6 @@ public final class PoketDimensions extends JavaPlugin {
|
|||||||
pwl.loadAllWorldsInFolder("poketdimensions");
|
pwl.loadAllWorldsInFolder("poketdimensions");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
this.logger.info("Plugin Activated!");
|
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) {
|
public void loadAllWorldsInFolder(String folderName) {
|
||||||
File folder = new File(Bukkit.getServer().getWorldContainer(), folderName);
|
File folder = new File(Bukkit.getServer().getWorldContainer(), folderName);
|
||||||
if (!folder.exists() || !folder.isDirectory()) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
File[] files = folder.listFiles(File::isDirectory);
|
File[] files = folder.listFiles(File::isDirectory);
|
||||||
if (files == null) {
|
if (files == null) {
|
||||||
Bukkit.getLogger().warning("Failed to list subdirectories in '" + folderName + "'.");
|
Bukkit.getLogger().warning("[Poketdimension] Failed to list subdirectories in '" + folderName + "'.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -39,12 +39,12 @@ public class PoketDimensionsWorldLoader {
|
|||||||
World world = Bukkit.createWorld(creator);
|
World world = Bukkit.createWorld(creator);
|
||||||
|
|
||||||
if (world != null) {
|
if (world != null) {
|
||||||
Bukkit.getLogger().info("Loaded world: " + world.getName());
|
Bukkit.getLogger().info("[Poketdimension] Loaded world: " + world.getName());
|
||||||
} else {
|
} else {
|
||||||
Bukkit.getLogger().warning("Failed to load world: " + worldDir.getName());
|
Bukkit.getLogger().warning("[Poketdimension] Failed to load world: " + worldDir.getName());
|
||||||
}
|
}
|
||||||
} else {
|
} 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