added Compass to swich worlds
This commit is contained in:
parent
04f3f6b448
commit
447ecf2a93
@ -4,27 +4,23 @@ import eu.mhsl.craftattack.worldmuseum.commands.GamemodeCommand;
|
||||
import eu.mhsl.craftattack.worldmuseum.commands.GcCommand;
|
||||
import eu.mhsl.craftattack.worldmuseum.commands.TeleportCommand;
|
||||
import eu.mhsl.craftattack.worldmuseum.listener.ChunkUnloading;
|
||||
import eu.mhsl.craftattack.worldmuseum.listener.ClickListener;
|
||||
import eu.mhsl.craftattack.worldmuseum.listener.CompassUseListener;
|
||||
import eu.mhsl.craftattack.worldmuseum.listener.InventoryClickListener;
|
||||
import eu.mhsl.craftattack.worldmuseum.util.Config;
|
||||
import eu.mhsl.craftattack.worldmuseum.worlds.World;
|
||||
import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager;
|
||||
import eu.mhsl.craftattack.worldmuseum.worldswiching.CompassManager;
|
||||
import net.minestom.server.MinecraftServer;
|
||||
import net.minestom.server.coordinate.Pos;
|
||||
import net.minestom.server.entity.GameMode;
|
||||
import net.minestom.server.entity.Player;
|
||||
import net.minestom.server.event.GlobalEventHandler;
|
||||
import net.minestom.server.event.inventory.InventoryPreClickEvent;
|
||||
import net.minestom.server.event.player.PlayerChunkUnloadEvent;
|
||||
import net.minestom.server.event.player.PlayerLoginEvent;
|
||||
import net.minestom.server.event.player.PlayerUseItemEvent;
|
||||
import net.minestom.server.instance.InstanceContainer;
|
||||
import net.minestom.server.instance.InstanceManager;
|
||||
import net.minestom.server.instance.block.Block;
|
||||
import net.minestom.server.timer.TaskSchedule;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Main {
|
||||
static int PORT = 25565;
|
||||
static String IP = "0.0.0.0";
|
||||
@ -36,6 +32,8 @@ public class Main {
|
||||
InstanceManager instanceManager = MinecraftServer.getInstanceManager();
|
||||
|
||||
//temp
|
||||
// MinecraftServer.getConnectionManager().setPlayerProvider(ExploringPlayer::new);
|
||||
MinecraftServer.setChunkViewDistance(8);
|
||||
MinecraftServer.getSchedulerManager().scheduleTask(new TablistUpdateTask(), TaskSchedule.tick(20), TaskSchedule.tick(20));
|
||||
|
||||
//load eu.mhsl.craftattack.worldmuseum.worlds / configExample file
|
||||
@ -47,12 +45,17 @@ public class Main {
|
||||
config.loadConfig();
|
||||
World startworld = config.getStart_world();
|
||||
|
||||
//CompassManager
|
||||
CompassManager compassManager = CompassManager.getInstance();
|
||||
compassManager.loadCommpassManager();
|
||||
|
||||
// Add an event callback to specify the spawning instance (and the spawn position)
|
||||
GlobalEventHandler globalEventHandler = MinecraftServer.getGlobalEventHandler();
|
||||
|
||||
//listeners
|
||||
globalEventHandler.addListener(PlayerUseItemEvent.class, new ClickListener());
|
||||
globalEventHandler.addListener(PlayerUseItemEvent.class, new CompassUseListener());
|
||||
globalEventHandler.addListener(PlayerChunkUnloadEvent.class, new ChunkUnloading());
|
||||
globalEventHandler.addListener(InventoryPreClickEvent.class, new InventoryClickListener());
|
||||
|
||||
//commands
|
||||
MinecraftServer.getCommandManager().register(new TeleportCommand());
|
||||
@ -62,21 +65,15 @@ public class Main {
|
||||
globalEventHandler.addListener(PlayerLoginEvent.class, event -> {
|
||||
final Player player = event.getPlayer();
|
||||
event.setSpawningInstance(startworld);
|
||||
|
||||
player.setRespawnPoint(startworld.getSpawn());
|
||||
player.setGameMode(GameMode.CREATIVE);
|
||||
|
||||
|
||||
|
||||
|
||||
// for (int i = 0; i< WorldManager.getInstance().getWorlds().size(); i++) {
|
||||
// if (WorldManager.getInstance().getWorlds().get(i).isEnabled()) {
|
||||
// player.getInventory().setItemStack(i, WorldManager.getInstance().getWorlds().get(i).getItem());
|
||||
// } else {
|
||||
// System.out.println("Es gibt nicht aktivierte Welten!");
|
||||
// }
|
||||
// }
|
||||
player.getInventory().setItemStack(0, compassManager.getCompass());
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
try {
|
||||
PORT = Integer.parseInt(args[0]);
|
||||
} catch (Exception e) {
|
||||
|
@ -1,33 +0,0 @@
|
||||
package eu.mhsl.craftattack.worldmuseum.listener;
|
||||
|
||||
import eu.mhsl.craftattack.worldmuseum.worlds.World;
|
||||
import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager;
|
||||
import net.minestom.server.entity.Player;
|
||||
import net.minestom.server.event.player.PlayerUseItemEvent;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class ClickListener implements Consumer<PlayerUseItemEvent> {
|
||||
|
||||
@Override
|
||||
public void accept(PlayerUseItemEvent playerUseItemEvent) {
|
||||
Player p = playerUseItemEvent.getPlayer();
|
||||
ItemStack usedItem = playerUseItemEvent.getItemStack();
|
||||
|
||||
for (int i = 0; i < WorldManager.getInstance().getWorlds().size(); i++) {
|
||||
World world = WorldManager.getInstance().getWorlds().get(i);
|
||||
|
||||
if (world.getItem().equals(usedItem)) {
|
||||
if (p.getInstance().equals(world)) {
|
||||
tpToSpawn(p, world);
|
||||
return;
|
||||
};
|
||||
p.setInstance(world, world.getSpawn());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
private void tpToSpawn(Player player, World world) {
|
||||
player.teleport(world.getSpawn());
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package eu.mhsl.craftattack.worldmuseum.listener;
|
||||
|
||||
import eu.mhsl.craftattack.worldmuseum.worldswiching.CompassManager;
|
||||
import net.minestom.server.entity.Player;
|
||||
import net.minestom.server.event.player.PlayerUseItemEvent;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class CompassUseListener implements Consumer<PlayerUseItemEvent> {
|
||||
|
||||
@Override
|
||||
public void accept(PlayerUseItemEvent playerUseItemEvent) {
|
||||
Player p = playerUseItemEvent.getPlayer();
|
||||
ItemStack usedItem = playerUseItemEvent.getItemStack();
|
||||
CompassManager compassManager = CompassManager.getInstance();
|
||||
|
||||
if (!usedItem.equals(compassManager.getCompass())) return;
|
||||
p.openInventory(compassManager.getInventory());
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package eu.mhsl.craftattack.worldmuseum.listener;
|
||||
|
||||
import eu.mhsl.craftattack.worldmuseum.worlds.World;
|
||||
import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager;
|
||||
import net.minestom.server.entity.Player;
|
||||
import net.minestom.server.event.inventory.InventoryPreClickEvent;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class InventoryClickListener implements Consumer<InventoryPreClickEvent> {
|
||||
@Override
|
||||
public void accept(InventoryPreClickEvent inventoryPreClickEvent) {
|
||||
Player p = inventoryPreClickEvent.getPlayer();
|
||||
inventoryPreClickEvent.setCancelled(true);
|
||||
WorldManager worldManager = WorldManager.getInstance();
|
||||
Iterator iterator = worldManager.getWorlds().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
World w = (World) iterator.next();
|
||||
if (!w.getItem().equals(inventoryPreClickEvent.getClickedItem())) continue;
|
||||
if (p.getInstance().equals(w)) {
|
||||
p.closeInventory();
|
||||
p.teleport(w.getSpawn());
|
||||
return;
|
||||
} else {
|
||||
p.closeInventory();
|
||||
p.setInstance(w);
|
||||
p.teleport(w.getSpawn());
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -11,19 +11,18 @@ import net.minestom.server.item.ItemStack;
|
||||
import net.minestom.server.item.Material;
|
||||
import net.minestom.server.utils.NamespaceID;
|
||||
import net.minestom.server.world.DimensionType;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.UUID;
|
||||
|
||||
public class World extends InstanceContainer {
|
||||
private static DimensionType dimension = DimensionType.builder(NamespaceID.from("mhsl:worldview_by_olischma")).height(400).ambientLight(2.0f).build();
|
||||
private File file;
|
||||
private final static DimensionType dimension = DimensionType.builder(NamespaceID.from("mhsl:worldview_by_olischma")).height(400).ambientLight(2.0f).build();
|
||||
private final File file;
|
||||
private ItemStack item;
|
||||
private String name = "default";
|
||||
private Pos spawn = new Pos(0,0,0);
|
||||
private Material material = Material.GRASS_BLOCK;
|
||||
private boolean enabled = false;
|
||||
private String defaultConfig = "{\n" +
|
||||
private final String defaultConfig = "{\n" +
|
||||
" \"enabled\": false,\n" +
|
||||
" \"name\": \"DEFAULT_NAME\",\n" +
|
||||
" \"material\": \"GRASS_BLOCK\",\n" +
|
||||
|
@ -0,0 +1,35 @@
|
||||
package eu.mhsl.craftattack.worldmuseum.worldswiching;
|
||||
|
||||
import eu.mhsl.craftattack.worldmuseum.worlds.World;
|
||||
import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.minestom.server.inventory.Inventory;
|
||||
import net.minestom.server.inventory.InventoryType;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import net.minestom.server.item.Material;
|
||||
public class CompassManager {
|
||||
static CompassManager instance;
|
||||
|
||||
ItemStack compass;
|
||||
Inventory inventory;
|
||||
public static CompassManager getInstance() {
|
||||
if (instance == null) instance = new CompassManager();
|
||||
return instance;
|
||||
}
|
||||
public void loadCommpassManager() {
|
||||
compass = ItemStack.builder(Material.COMPASS).displayName(Component.text("World-changer")).build();
|
||||
inventory = new Inventory(InventoryType.CHEST_1_ROW, Component.text("World-changer"));
|
||||
|
||||
for (World w : WorldManager.getInstance().getWorlds()) {
|
||||
inventory.addItemStack(w.getItem());
|
||||
}
|
||||
}
|
||||
|
||||
public ItemStack getCompass() {
|
||||
return compass;
|
||||
}
|
||||
|
||||
public Inventory getInventory() {
|
||||
return inventory;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user