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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,19 +1,18 @@
package eu.mhsl.craftattack.worldmuseum.listener;
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 net.kyori.adventure.text.Component;
import net.minestom.server.event.player.PlayerUseItemEvent;
import net.minestom.server.item.ItemStack;
import java.util.function.Consumer;
public class ItemUseListener implements Consumer<PlayerUseItemEvent> {
@Override
public void accept(PlayerUseItemEvent playerUseItemEvent) {
NewPlayer p = (NewPlayer) playerUseItemEvent.getPlayer();
MuseumPlayer p = (MuseumPlayer) playerUseItemEvent.getPlayer();
ItemStack usedItem = playerUseItemEvent.getItemStack();
if (usedItem.equals(ItemManager.getCompassItem())) compassUse(p);
@ -21,7 +20,7 @@ public class ItemUseListener implements Consumer<PlayerUseItemEvent> {
playerUseItemEvent.setCancelled(true);
}
private void compassUse(NewPlayer p) {
private void compassUse(MuseumPlayer p) {
if (!p.isAllowCompassUsage()) {
long lastUsed = (System.currentTimeMillis() - p.getLastCompassUsage()) / 1000;
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());
}
private void bedUse(NewPlayer player) {
private void bedUse(MuseumPlayer player) {
World world = (World) player.getInstance();
assert world != null;
player.teleport(world.getSpawn());

View File

@ -1,14 +1,13 @@
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 java.util.function.Consumer;
public class MovementListener implements Consumer<PlayerMoveEvent> {
@Override
public void accept(PlayerMoveEvent playerMoveEvent) {
NewPlayer player = (NewPlayer) playerMoveEvent.getPlayer();
MuseumPlayer player = (MuseumPlayer) playerMoveEvent.getPlayer();
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.timer.ExecutionType;
import net.minestom.server.timer.TaskSchedule;
import java.util.HashMap;
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.entity.Player;
import net.minestom.server.monitoring.TickMonitor;
import java.util.Collection;
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.PotionEffect;
public class ChangeWorld {
public static void changeWorld(NewPlayer player, World targetWorld) {
public static void changeWorld(MuseumPlayer player, World targetWorld) {
player.setAllowMovement(false);
World world = (World) player.getInstance();
player.setAllowCompassUsage(false);

View File

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

View File

@ -15,13 +15,13 @@ import org.jetbrains.annotations.Nullable;
import java.time.Duration;
import java.util.UUID;
public class NewPlayer extends Player {
public class MuseumPlayer extends Player {
private boolean allowMovement = true;
private long lastCompassUsage = 0;
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);
}
public void setSyncCooldown(@Nullable Duration cooldown) {

View File

@ -6,7 +6,7 @@ import java.util.List;
public class WorldManager {
private static WorldManager instance;
private List<World> worlds = new ArrayList<>();
private final List<World> worlds = new ArrayList<>();
public static WorldManager getInstance() {
if (instance == null) {
@ -23,7 +23,7 @@ public class WorldManager {
if (w.isEnabled()) {
worlds.add(w);
} 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) {
File[] fileList = curDir.listFiles();
List<File> returnFolders = new ArrayList<>();
assert fileList != null;
for (File f: fileList) {
if (f.isDirectory()) returnFolders.add(f);
}