This commit is contained in:
Martin Olischläger 2023-05-10 23:29:41 +02:00
parent fa048402da
commit d439140fd6
15 changed files with 23 additions and 36 deletions

View File

@ -9,7 +9,7 @@ import eu.mhsl.craftattack.worldmuseum.listener.*;
import eu.mhsl.craftattack.worldmuseum.skins.SkinCache; import eu.mhsl.craftattack.worldmuseum.skins.SkinCache;
import eu.mhsl.craftattack.worldmuseum.temp.TablistUpdateTask; import eu.mhsl.craftattack.worldmuseum.temp.TablistUpdateTask;
import eu.mhsl.craftattack.worldmuseum.util.Config; import eu.mhsl.craftattack.worldmuseum.util.Config;
import eu.mhsl.craftattack.worldmuseum.util.NewPlayer; import eu.mhsl.craftattack.worldmuseum.util.MuseumPlayer;
import eu.mhsl.craftattack.worldmuseum.handler.SignHandler; import eu.mhsl.craftattack.worldmuseum.handler.SignHandler;
import eu.mhsl.craftattack.worldmuseum.worlds.World; import eu.mhsl.craftattack.worldmuseum.worlds.World;
import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager; import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager;
@ -30,10 +30,10 @@ public class Main {
// Initialization // Initialization
System.setProperty("minestom.chunk-view-distance", "8"); System.setProperty("minestom.chunk-view-distance", "8");
MinecraftServer minecraftServer = MinecraftServer.init(); MinecraftServer minecraftServer = MinecraftServer.init();
MinecraftServer.getConnectionManager().setPlayerProvider(MuseumPlayer::new);
//temp //temp
MinecraftServer.getSchedulerManager().scheduleTask(new TablistUpdateTask(), TaskSchedule.tick(20), TaskSchedule.tick(20)); MinecraftServer.getSchedulerManager().scheduleTask(new TablistUpdateTask(), TaskSchedule.tick(20), TaskSchedule.tick(20));
MinecraftServer.getConnectionManager().setPlayerProvider(NewPlayer::new);
//load eu.mhsl.craftattack.worldmuseum.worlds / configExample file //load eu.mhsl.craftattack.worldmuseum.worlds / configExample file
WorldManager worldManager = WorldManager.getInstance(); WorldManager worldManager = WorldManager.getInstance();
@ -57,10 +57,9 @@ public class Main {
globalEventHandler.addListener(PlayerBlockPlaceEvent.class, new BlockPlaceListener()); globalEventHandler.addListener(PlayerBlockPlaceEvent.class, new BlockPlaceListener());
globalEventHandler.addListener(PlayerDisconnectEvent.class, new DisconnectListener()); globalEventHandler.addListener(PlayerDisconnectEvent.class, new DisconnectListener());
// Handlers //Handlers
MinecraftServer.getBlockManager().registerHandler("minecraft:sign", SignHandler::new); MinecraftServer.getBlockManager().registerHandler("minecraft:sign", SignHandler::new);
//canceled Events //canceled Events
globalEventHandler.addListener(PlayerSwapItemEvent.class, new EventCancel<>()); globalEventHandler.addListener(PlayerSwapItemEvent.class, new EventCancel<>());
globalEventHandler.addListener(ItemDropEvent.class, new EventCancel<>()); globalEventHandler.addListener(ItemDropEvent.class, new EventCancel<>());
@ -72,7 +71,7 @@ public class Main {
MinecraftServer.getCommandManager().register(new SpawnCommand()); MinecraftServer.getCommandManager().register(new SpawnCommand());
globalEventHandler.addListener(PlayerLoginEvent.class, event -> { globalEventHandler.addListener(PlayerLoginEvent.class, event -> {
final NewPlayer player = (NewPlayer) event.getPlayer(); final MuseumPlayer player = (MuseumPlayer) event.getPlayer();
player.setSyncCooldown(Duration.ofSeconds(3)); player.setSyncCooldown(Duration.ofSeconds(3));
SkinCache.setSkin(player); SkinCache.setSkin(player);
event.setSpawningInstance(startworld); event.setSpawningInstance(startworld);

View File

@ -5,7 +5,6 @@ import net.minestom.server.coordinate.Point;
import net.minestom.server.event.player.PlayerBlockBreakEvent; import net.minestom.server.event.player.PlayerBlockBreakEvent;
import net.minestom.server.instance.block.Block; import net.minestom.server.instance.block.Block;
import net.minestom.server.timer.TaskSchedule; import net.minestom.server.timer.TaskSchedule;
import java.util.function.Consumer; import java.util.function.Consumer;
public class BlockBreakListener implements Consumer<PlayerBlockBreakEvent> { public class BlockBreakListener implements Consumer<PlayerBlockBreakEvent> {

View File

@ -2,7 +2,6 @@ package eu.mhsl.craftattack.worldmuseum.listener;
import eu.mhsl.craftattack.worldmuseum.worlds.World; import eu.mhsl.craftattack.worldmuseum.worlds.World;
import net.minestom.server.event.player.PlayerBlockPlaceEvent; import net.minestom.server.event.player.PlayerBlockPlaceEvent;
import java.util.Objects; import java.util.Objects;
import java.util.function.Consumer; import java.util.function.Consumer;

View File

@ -1,7 +1,6 @@
package eu.mhsl.craftattack.worldmuseum.listener; package eu.mhsl.craftattack.worldmuseum.listener;
import net.minestom.server.event.player.PlayerChunkUnloadEvent; import net.minestom.server.event.player.PlayerChunkUnloadEvent;
import java.util.function.Consumer; import java.util.function.Consumer;
public class ChunkUnloading implements Consumer<PlayerChunkUnloadEvent> { public class ChunkUnloading implements Consumer<PlayerChunkUnloadEvent> {

View File

@ -1,7 +1,6 @@
package eu.mhsl.craftattack.worldmuseum.listener; package eu.mhsl.craftattack.worldmuseum.listener;
import net.minestom.server.event.player.PlayerDisconnectEvent; import net.minestom.server.event.player.PlayerDisconnectEvent;
import java.util.function.Consumer; import java.util.function.Consumer;
public class DisconnectListener implements Consumer<PlayerDisconnectEvent> { public class DisconnectListener implements Consumer<PlayerDisconnectEvent> {

View File

@ -1,7 +1,6 @@
package eu.mhsl.craftattack.worldmuseum.listener; package eu.mhsl.craftattack.worldmuseum.listener;
import net.minestom.server.event.trait.CancellableEvent; import net.minestom.server.event.trait.CancellableEvent;
import java.util.function.Consumer; import java.util.function.Consumer;
public class EventCancel<T extends CancellableEvent> implements Consumer<T> { public class EventCancel<T extends CancellableEvent> implements Consumer<T> {

View File

@ -1,18 +1,17 @@
package eu.mhsl.craftattack.worldmuseum.listener; package eu.mhsl.craftattack.worldmuseum.listener;
import eu.mhsl.craftattack.worldmuseum.util.NewPlayer; import eu.mhsl.craftattack.worldmuseum.util.MuseumPlayer;
import eu.mhsl.craftattack.worldmuseum.util.ChangeWorld; import eu.mhsl.craftattack.worldmuseum.util.ChangeWorld;
import eu.mhsl.craftattack.worldmuseum.worlds.World; import eu.mhsl.craftattack.worldmuseum.worlds.World;
import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager; import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager;
import net.minestom.server.event.inventory.InventoryPreClickEvent; import net.minestom.server.event.inventory.InventoryPreClickEvent;
import java.util.Objects; import java.util.Objects;
import java.util.function.Consumer; import java.util.function.Consumer;
public class InventoryClickListener implements Consumer<InventoryPreClickEvent> { public class InventoryClickListener implements Consumer<InventoryPreClickEvent> {
@Override @Override
public void accept(InventoryPreClickEvent inventoryPreClickEvent) { public void accept(InventoryPreClickEvent inventoryPreClickEvent) {
NewPlayer p = (NewPlayer) inventoryPreClickEvent.getPlayer(); MuseumPlayer p = (MuseumPlayer) inventoryPreClickEvent.getPlayer();
WorldManager worldManager = WorldManager.getInstance(); WorldManager worldManager = WorldManager.getInstance();
for (World w : worldManager.getWorlds()) { for (World w : worldManager.getWorlds()) {

View File

@ -1,19 +1,18 @@
package eu.mhsl.craftattack.worldmuseum.listener; package eu.mhsl.craftattack.worldmuseum.listener;
import eu.mhsl.craftattack.worldmuseum.items.ItemManager; import eu.mhsl.craftattack.worldmuseum.items.ItemManager;
import eu.mhsl.craftattack.worldmuseum.util.NewPlayer; import eu.mhsl.craftattack.worldmuseum.util.MuseumPlayer;
import eu.mhsl.craftattack.worldmuseum.worlds.World; import eu.mhsl.craftattack.worldmuseum.worlds.World;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.minestom.server.event.player.PlayerUseItemEvent; import net.minestom.server.event.player.PlayerUseItemEvent;
import net.minestom.server.item.ItemStack; import net.minestom.server.item.ItemStack;
import java.util.function.Consumer; import java.util.function.Consumer;
public class ItemUseListener implements Consumer<PlayerUseItemEvent> { public class ItemUseListener implements Consumer<PlayerUseItemEvent> {
@Override @Override
public void accept(PlayerUseItemEvent playerUseItemEvent) { public void accept(PlayerUseItemEvent playerUseItemEvent) {
NewPlayer p = (NewPlayer) playerUseItemEvent.getPlayer(); MuseumPlayer p = (MuseumPlayer) playerUseItemEvent.getPlayer();
ItemStack usedItem = playerUseItemEvent.getItemStack(); ItemStack usedItem = playerUseItemEvent.getItemStack();
if (usedItem.equals(ItemManager.getCompassItem())) compassUse(p); if (usedItem.equals(ItemManager.getCompassItem())) compassUse(p);
@ -21,7 +20,7 @@ public class ItemUseListener implements Consumer<PlayerUseItemEvent> {
playerUseItemEvent.setCancelled(true); playerUseItemEvent.setCancelled(true);
} }
private void compassUse(NewPlayer p) { private void compassUse(MuseumPlayer p) {
if (!p.isAllowCompassUsage()) { if (!p.isAllowCompassUsage()) {
long lastUsed = (System.currentTimeMillis() - p.getLastCompassUsage()) / 1000; long lastUsed = (System.currentTimeMillis() - p.getLastCompassUsage()) / 1000;
p.sendActionBar(Component.text("Du kannst den Kompass erst in " + (15 - lastUsed) + " Sekunden wieder benutzen.")); p.sendActionBar(Component.text("Du kannst den Kompass erst in " + (15 - lastUsed) + " Sekunden wieder benutzen."));
@ -30,7 +29,7 @@ public class ItemUseListener implements Consumer<PlayerUseItemEvent> {
p.openInventory(p.getCompassInventory()); p.openInventory(p.getCompassInventory());
} }
private void bedUse(NewPlayer player) { private void bedUse(MuseumPlayer player) {
World world = (World) player.getInstance(); World world = (World) player.getInstance();
assert world != null; assert world != null;
player.teleport(world.getSpawn()); player.teleport(world.getSpawn());

View File

@ -1,14 +1,13 @@
package eu.mhsl.craftattack.worldmuseum.listener; package eu.mhsl.craftattack.worldmuseum.listener;
import eu.mhsl.craftattack.worldmuseum.util.NewPlayer; import eu.mhsl.craftattack.worldmuseum.util.MuseumPlayer;
import net.minestom.server.event.player.PlayerMoveEvent; import net.minestom.server.event.player.PlayerMoveEvent;
import java.util.function.Consumer; import java.util.function.Consumer;
public class MovementListener implements Consumer<PlayerMoveEvent> { public class MovementListener implements Consumer<PlayerMoveEvent> {
@Override @Override
public void accept(PlayerMoveEvent playerMoveEvent) { public void accept(PlayerMoveEvent playerMoveEvent) {
NewPlayer player = (NewPlayer) playerMoveEvent.getPlayer(); MuseumPlayer player = (MuseumPlayer) playerMoveEvent.getPlayer();
if (!player.isAllowMovement()) playerMoveEvent.setCancelled(true); if (!player.isAllowMovement()) playerMoveEvent.setCancelled(true);
} }
} }

View File

@ -5,7 +5,6 @@ import net.minestom.server.entity.Player;
import net.minestom.server.entity.PlayerSkin; import net.minestom.server.entity.PlayerSkin;
import net.minestom.server.timer.ExecutionType; import net.minestom.server.timer.ExecutionType;
import net.minestom.server.timer.TaskSchedule; import net.minestom.server.timer.TaskSchedule;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;

View File

@ -6,7 +6,6 @@ import net.minestom.server.MinecraftServer;
import net.minestom.server.adventure.audience.Audiences; import net.minestom.server.adventure.audience.Audiences;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.monitoring.TickMonitor; import net.minestom.server.monitoring.TickMonitor;
import java.util.Collection; import java.util.Collection;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;

View File

@ -4,7 +4,7 @@ import eu.mhsl.craftattack.worldmuseum.worlds.World;
import net.minestom.server.potion.Potion; import net.minestom.server.potion.Potion;
import net.minestom.server.potion.PotionEffect; import net.minestom.server.potion.PotionEffect;
public class ChangeWorld { public class ChangeWorld {
public static void changeWorld(NewPlayer player, World targetWorld) { public static void changeWorld(MuseumPlayer player, World targetWorld) {
player.setAllowMovement(false); player.setAllowMovement(false);
World world = (World) player.getInstance(); World world = (World) player.getInstance();
player.setAllowCompassUsage(false); player.setAllowCompassUsage(false);

View File

@ -4,12 +4,10 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import eu.mhsl.craftattack.worldmuseum.worlds.World; import eu.mhsl.craftattack.worldmuseum.worlds.World;
import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager; import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager;
import java.io.File; import java.io.File;
import java.io.FileReader; import java.io.FileReader;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.util.Iterator;
public class Config { public class Config {
private static Config instance; private static Config instance;
@ -22,9 +20,7 @@ public class Config {
checkConfig(); checkConfig();
try { try {
JsonObject config = (JsonObject) JsonParser.parseReader(new FileReader("config.json")); JsonObject config = (JsonObject) JsonParser.parseReader(new FileReader("config.json"));
Iterator iterator = WorldManager.getInstance().getWorlds().iterator(); for (World w : WorldManager.getInstance().getWorlds()) {
while (iterator.hasNext()) {
World w = (World) iterator.next();
if (!w.getName().equals(config.get("start_world").getAsString())) continue; if (!w.getName().equals(config.get("start_world").getAsString())) continue;
this.start_world = w; this.start_world = w;
} }
@ -37,15 +33,16 @@ public class Config {
e.printStackTrace(); e.printStackTrace();
} }
} }
private String default_config = "{\n" +
" \"start_world\": \"world\"\n" +
"}";
private void checkConfig() { private void checkConfig() {
try { try {
File checkfile = new File("./config.json"); File checkfile = new File("./config.json");
if (checkfile.createNewFile()) { if (checkfile.createNewFile()) {
FileWriter fileWriter = new FileWriter("config.json"); FileWriter fileWriter = new FileWriter("config.json");
String default_config = """
{
"start_world": "world"
}""";
fileWriter.write(default_config); fileWriter.write(default_config);
fileWriter.close(); fileWriter.close();
} }

View File

@ -15,13 +15,13 @@ import org.jetbrains.annotations.Nullable;
import java.time.Duration; import java.time.Duration;
import java.util.UUID; import java.util.UUID;
public class NewPlayer extends Player { public class MuseumPlayer extends Player {
private boolean allowMovement = true; private boolean allowMovement = true;
private long lastCompassUsage = 0; private long lastCompassUsage = 0;
private boolean allowCompassUsage = true; private boolean allowCompassUsage = true;
public NewPlayer(@NotNull UUID uuid, @NotNull String username, @NotNull PlayerConnection playerConnection) { public MuseumPlayer(@NotNull UUID uuid, @NotNull String username, @NotNull PlayerConnection playerConnection) {
super(uuid, username, playerConnection); super(uuid, username, playerConnection);
} }
public void setSyncCooldown(@Nullable Duration cooldown) { public void setSyncCooldown(@Nullable Duration cooldown) {

View File

@ -6,7 +6,7 @@ import java.util.List;
public class WorldManager { public class WorldManager {
private static WorldManager instance; private static WorldManager instance;
private List<World> worlds = new ArrayList<>(); private final List<World> worlds = new ArrayList<>();
public static WorldManager getInstance() { public static WorldManager getInstance() {
if (instance == null) { if (instance == null) {
@ -23,7 +23,7 @@ public class WorldManager {
if (w.isEnabled()) { if (w.isEnabled()) {
worlds.add(w); worlds.add(w);
} else { } else {
System.out.println("Es gibt eine nicht aktivierte Welt: " + f.toString()); System.out.println("Es gibt eine nicht aktivierte Welt: " + f);
} }
} }
} }
@ -31,6 +31,7 @@ public class WorldManager {
private List<File> getFolderNames(File curDir) { private List<File> getFolderNames(File curDir) {
File[] fileList = curDir.listFiles(); File[] fileList = curDir.listFiles();
List<File> returnFolders = new ArrayList<>(); List<File> returnFolders = new ArrayList<>();
assert fileList != null;
for (File f: fileList) { for (File f: fileList) {
if (f.isDirectory()) returnFolders.add(f); if (f.isDirectory()) returnFolders.add(f);
} }