version 1.0 release

This commit is contained in:
Martin Olischläger 2023-05-16 20:14:24 +02:00
parent d439140fd6
commit 4702589c25
5 changed files with 23 additions and 77 deletions

View File

@ -2,12 +2,11 @@ package eu.mhsl.craftattack.worldmuseum;
import eu.mhsl.craftattack.worldmuseum.commands.GamemodeCommand; import eu.mhsl.craftattack.worldmuseum.commands.GamemodeCommand;
import eu.mhsl.craftattack.worldmuseum.items.ItemManager; import eu.mhsl.craftattack.worldmuseum.items.ItemManager;
import eu.mhsl.craftattack.worldmuseum.temp.GcCommand;
import eu.mhsl.craftattack.worldmuseum.commands.SpawnCommand; import eu.mhsl.craftattack.worldmuseum.commands.SpawnCommand;
import eu.mhsl.craftattack.worldmuseum.commands.TeleportCommand; import eu.mhsl.craftattack.worldmuseum.commands.TeleportCommand;
import eu.mhsl.craftattack.worldmuseum.listener.*; 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.util.TablistUpdateTask;
import eu.mhsl.craftattack.worldmuseum.util.Config; import eu.mhsl.craftattack.worldmuseum.util.Config;
import eu.mhsl.craftattack.worldmuseum.util.MuseumPlayer; import eu.mhsl.craftattack.worldmuseum.util.MuseumPlayer;
import eu.mhsl.craftattack.worldmuseum.handler.SignHandler; import eu.mhsl.craftattack.worldmuseum.handler.SignHandler;
@ -20,19 +19,20 @@ import net.minestom.server.event.inventory.InventoryPreClickEvent;
import net.minestom.server.event.item.ItemDropEvent; import net.minestom.server.event.item.ItemDropEvent;
import net.minestom.server.event.player.*; import net.minestom.server.event.player.*;
import net.minestom.server.timer.TaskSchedule; import net.minestom.server.timer.TaskSchedule;
import java.time.Duration; import java.time.Duration;
public class Main { public class Main {
static int PORT = 25565; static int PORT = 25565;
static String IP = "0.0.0.0"; static final String IP = "0.0.0.0";
public static void main(String[] args) { public static void main(String[] args) {
// Initialization // Initialization
System.setProperty("minestom.chunk-view-distance", "8"); System.setProperty("minestom.chunk-view-distance", "16");
MinecraftServer minecraftServer = MinecraftServer.init(); MinecraftServer minecraftServer = MinecraftServer.init();
MinecraftServer.getConnectionManager().setPlayerProvider(MuseumPlayer::new); MinecraftServer.getConnectionManager().setPlayerProvider(MuseumPlayer::new);
//temp //update Taskbar
MinecraftServer.getSchedulerManager().scheduleTask(new TablistUpdateTask(), TaskSchedule.tick(20), TaskSchedule.tick(20)); MinecraftServer.getSchedulerManager().scheduleTask(new TablistUpdateTask(), TaskSchedule.tick(20), TaskSchedule.tick(20));
//load eu.mhsl.craftattack.worldmuseum.worlds / configExample file //load eu.mhsl.craftattack.worldmuseum.worlds / configExample file
@ -66,7 +66,6 @@ public class Main {
//commands //commands
MinecraftServer.getCommandManager().register(new TeleportCommand()); MinecraftServer.getCommandManager().register(new TeleportCommand());
MinecraftServer.getCommandManager().register(new GcCommand());
MinecraftServer.getCommandManager().register(new GamemodeCommand()); MinecraftServer.getCommandManager().register(new GamemodeCommand());
MinecraftServer.getCommandManager().register(new SpawnCommand()); MinecraftServer.getCommandManager().register(new SpawnCommand());

View File

@ -9,7 +9,7 @@ import java.util.Objects;
public class TeleportCommand extends Command { public class TeleportCommand extends Command {
public TeleportCommand() { public TeleportCommand() {
super("tp","teleport"); super("tp");
var cordinate = ArgumentType.RelativeBlockPosition("Koordinate"); var cordinate = ArgumentType.RelativeBlockPosition("Koordinate");
addSyntax(((sender, context) -> { addSyntax(((sender, context) -> {
@ -18,7 +18,7 @@ public class TeleportCommand extends Command {
player.teleport(pos); player.teleport(pos);
}), cordinate); }), cordinate);
var playerArgument = ArgumentType.Entity("Spieler").onlyPlayers(true); var playerArgument = ArgumentType.Entity("Spieler").onlyPlayers(true).singleEntity(true);
addSyntax(((sender, context) -> { addSyntax(((sender, context) -> {
if (context.get(playerArgument).find(sender).size() == 0) return; //check if player is online if (context.get(playerArgument).find(sender).size() == 0) return; //check if player is online
Player targetPlayer = (Player) context.get(playerArgument).find(sender).get(0); Player targetPlayer = (Player) context.get(playerArgument).find(sender).get(0);

View File

@ -1,39 +0,0 @@
package eu.mhsl.craftattack.worldmuseum.temp;
import net.minestom.server.command.builder.Command;
public class GcCommand extends Command {
private static long lastRun = System.currentTimeMillis();
private static final Runtime runtime = Runtime.getRuntime();
public GcCommand() {
super("gc");
// setCondition((sender, commandString) -> sender.hasPermission("admin"));
setDefaultExecutor((sender, context) -> {
long nextRun = (lastRun - (System.currentTimeMillis() - 30*1000)) / 1000;
if(nextRun > 0) {
sender.sendMessage("pls wait");
// new ChatMessage(Icon.ERROR).appendStatic("Please wait ").appendStatic(String.valueOf(nextRun)).appendStatic(" seconds before running GC again!").send(sender);
return;
}
lastRun = System.currentTimeMillis();
long before = getRamUsage();
System.gc();
long after = getRamUsage();
sender.sendMessage("before: " + before + " now: " + after);
// new ChatMessage(Icon.SUCCESS).appendStatic("Garbage collector ran successfully!").indent(1).newLine()
// .appendStatic("before: ").appendStatic(String.valueOf(before)).appendStatic("MB").newLine()
// .appendStatic("now: ").appendStatic(String.valueOf(after)).appendStatic("MB").indent(1).newLine()
// .appendStatic("difference: ").appendStatic(String.valueOf(before-after)).appendStatic("MB")
// .send(sender);
});
}
public static long getRamUsage() {
return (runtime.totalMemory() - runtime.freeMemory()) / 1024 / 1024;
}
}

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.worldmuseum.temp; package eu.mhsl.craftattack.worldmuseum.util;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.NamedTextColor;
@ -10,10 +10,6 @@ import java.util.Collection;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
public class TablistUpdateTask implements Runnable { public class TablistUpdateTask implements Runnable {
private static final Runtime runtime = Runtime.getRuntime();
private static final AtomicReference<TickMonitor> lastTick = new AtomicReference<>();
@Override @Override
public void run() { public void run() {
Collection<Player> players = MinecraftServer.getConnectionManager().getOnlinePlayers(); Collection<Player> players = MinecraftServer.getConnectionManager().getOnlinePlayers();
@ -21,11 +17,8 @@ public class TablistUpdateTask implements Runnable {
final Component header = final Component header =
Component.newline() Component.newline()
.append(Component.text("MineNet Network", NamedTextColor.GOLD)) .append(Component.text(" Welten-Museum ", NamedTextColor.GOLD))
.append(Component.newline()).append(Component.text("Players: " + players.size())) .append(Component.newline()).append(Component.text("Players: " + players.size()))
.append(Component.newline())
.append(Component.newline()).append(Component.text("RAM: " + getRamUsage() + " MB", NamedTextColor.GRAY))
.append(Component.newline()).append(Component.text("TICK: " + getTickMonitor().getTickTime() + "ms", NamedTextColor.GRAY))
.append(Component.newline()); .append(Component.newline());
final Component footer = final Component footer =
@ -35,11 +28,4 @@ public class TablistUpdateTask implements Runnable {
Audiences.players().sendPlayerListHeaderAndFooter(header, footer); Audiences.players().sendPlayerListHeaderAndFooter(header, footer);
} }
public static long getRamUsage() {
return (runtime.totalMemory() - runtime.freeMemory()) / 1024 / 1024;
}
public static TickMonitor getTickMonitor() {
return lastTick.get() != null ? lastTick.get() : new TickMonitor(0, 0);
}
} }

View File

@ -20,19 +20,6 @@ public class World extends InstanceContainer {
private String name = "default"; private String name = "default";
private Pos spawn = new Pos(0,0,0); private Pos spawn = new Pos(0,0,0);
private boolean enabled = false; private boolean enabled = false;
private final String defaultConfig = "{\n" +
" \"enabled\": false,\n" +
" \"name\": \"DEFAULT_NAME\",\n" +
" \"material\": \"GRASS_BLOCK\",\n" +
" \"spawn\": {\n" +
" \"x\": 0,\n" +
" \"y\": 0,\n" +
" \"z\": 0\n" +
" },\n" +
" \"tags\": [\n" +
" \"RANDOM_TAG\"\n" +
" ]\n" +
"}";
static { static {
MinecraftServer.getDimensionTypeManager().addDimension(dimension); MinecraftServer.getDimensionTypeManager().addDimension(dimension);
@ -47,6 +34,20 @@ public class World extends InstanceContainer {
File checkFile = new File(file.getPath() + "/config.json"); File checkFile = new File(file.getPath() + "/config.json");
if (checkFile.createNewFile()) { if (checkFile.createNewFile()) {
FileWriter fileWriter = new FileWriter(file.getPath() + "/config.json"); FileWriter fileWriter = new FileWriter(file.getPath() + "/config.json");
String defaultConfig = """
{
"enabled": false,
"name": "DEFAULT_NAME",
"material": "GRASS_BLOCK",
"spawn": {
"x": 0,
"y": 0,
"z": 0
},
"tags": [
"RANDOM_TAG"
]
}""";
fileWriter.write(defaultConfig); fileWriter.write(defaultConfig);
fileWriter.close(); fileWriter.close();
} }
@ -54,7 +55,6 @@ public class World extends InstanceContainer {
e.printStackTrace(); e.printStackTrace();
} }
Material material = Material.GRASS_BLOCK; Material material = Material.GRASS_BLOCK;
try { try {
JsonObject config = (JsonObject) JsonParser.parseReader(new FileReader(file.getPath() + "/config.json")); JsonObject config = (JsonObject) JsonParser.parseReader(new FileReader(file.getPath() + "/config.json"));