Files
world-museum/src/main/java/eu/mhsl/craftattack/worldmuseum/worlds/VoidWorld.java
Elias Müller d80b7deb53 Update dependencies and improve various functionalities
- Bump Gradle to 8.5 and adjust related configs.
- Upgrade from JDK 17 to JDK 21.
- Replace deprecated methods with modern equivalents (`withDisplayName` -> `withCustomName`).
- Refactor and simplify event handling (e.g., PlayerLoginEvent -> AsyncPlayerConfigurationEvent).
- Fix minor issues with player and inventory handling.
- Improve Gradle startup scripts for better compatibility.
- Transition plugin handling from deprecated to current class references.
- General cleanup and code modernization.
2025-12-21 17:31:48 +01:00

56 lines
1.9 KiB
Java

package eu.mhsl.craftattack.worldmuseum.worlds;
import eu.mhsl.craftattack.worldmuseum.inventory.WorldSelector;
import eu.mhsl.craftattack.worldmuseum.util.MuseumPlayer;
import net.minestom.server.MinecraftServer;
import net.minestom.server.coordinate.Pos;
import net.minestom.server.entity.Player;
import net.minestom.server.event.inventory.InventoryCloseEvent;
import net.minestom.server.event.player.PlayerMoveEvent;
import net.minestom.server.instance.InstanceContainer;
import net.minestom.server.instance.block.Block;
import net.minestom.server.inventory.Inventory;
import net.minestom.server.world.DimensionType;
import java.util.UUID;
public class VoidWorld extends InstanceContainer implements PlayerMovable {
public VoidWorld() {
super(UUID.randomUUID(), DimensionType.OVERWORLD);
MinecraftServer.getInstanceManager().registerInstance(this);
setBlock(getSpawn().sub(0, 1, 0), Block.BARRIER);
eventNode().addListener(InventoryCloseEvent.class, inventoryCloseEvent -> {
if(inventoryCloseEvent.getPlayer().getInstance() != this) return;
inventoryCloseEvent.setNewInventory((Inventory) inventoryCloseEvent.getInventory());
});
eventNode().addListener(PlayerMoveEvent.class, playerMoveEvent -> playerMoveEvent.setCancelled(true));
}
public Pos getSpawn() {
return new Pos(0, 50, 0, 0, 0);
}
public void movePlayer(Player p) {
MuseumPlayer museumPlayer = (MuseumPlayer) p;
museumPlayer.startLoading();
if(p.getInstance() != this) {
p.setInstance(this).thenRun(() -> onTpComplete(museumPlayer));
} else {
onTpComplete(museumPlayer);
}
p.getInventory().clear();
p.setRespawnPoint(getSpawn());
p.setAllowFlying(false);
}
private void onTpComplete(MuseumPlayer p) {
p.teleport(getSpawn());
p.openInventory(new WorldSelector());
p.stopLoading();
}
}