···11-package dev.mrsnowy.teleport_commands;
22-33-import net.fabricmc.api.ClientModInitializer;
44-55-public class TeleportCommandsClient implements ClientModInitializer {
66- @Override
77- public void onInitializeClient() {
88- // This entrypoint is suitable for setting up client-specific logic, such as rendering.
99- }
1010-}
···11package dev.mrsnowy.teleport_commands;
2233+import dev.mrsnowy.teleport_commands.storage.StorageManager;
44+import dev.mrsnowy.teleport_commands.utils.commands;
35import net.fabricmc.api.ModInitializer;
4677+import net.fabricmc.fabric.api.event.lifecycle.v1.ServerEntityEvents;
88+import net.fabricmc.fabric.api.event.lifecycle.v1.ServerWorldEvents;
99+import net.fabricmc.loader.api.FabricLoader;
1010+import net.minecraft.entity.Entity;
1111+import net.minecraft.server.MinecraftServer;
1212+import net.minecraft.server.network.ServerPlayerEntity;
1313+import net.minecraft.server.world.ServerWorld;
1414+import net.minecraft.util.WorldSavePath;
1515+import net.minecraft.world.World;
516import org.slf4j.Logger;
617import org.slf4j.LoggerFactory;
1818+1919+import java.nio.file.Path;
2020+import java.util.Objects;
2121+2222+import static dev.mrsnowy.teleport_commands.utils.tools.DeathLocationUpdater;
723824public class TeleportCommands implements ModInitializer {
925 // This logger is used to write text to the console and the log file.
1026 // It is considered best practice to use your mod id as the logger's name.
1127 // That way, it's clear which mod wrote info, warnings, and errors.
2828+ public static final String MOD_ID = "teleport_commands";
1229 public static final Logger LOGGER = LoggerFactory.getLogger("teleport_commands");
13303131+ public static Path SAVE_DIR;
3232+ public static Path CONFIG_DIR;
3333+ public static StorageManager Storage;
3434+ public static MinecraftServer Server;
3535+1436 @Override
1537 public void onInitialize() {
1638 // This code runs as soon as Minecraft is in a mod-load-ready state.
1739 // However, some things (like resources) may still be uninitialized.
1840 // Proceed with mild caution.
4141+ ServerWorldEvents.LOAD.register(this::onWorldLoad);
4242+4343+ ServerEntityEvents.ENTITY_UNLOAD.register(this::onPlayerUnload);
4444+4545+ // todo: /back /tpa /tpahere /home /homes /sethome /delhome /renamehome /defaulthome /spawn /worldspawn
4646+ commands.registerCommands();
4747+4848+ }
4949+19502020- LOGGER.info("Hello Fabric world!");
5151+5252+ private void onPlayerUnload(Entity entity, ServerWorld world) {
5353+ if (entity instanceof ServerPlayerEntity player) {
5454+// LOGGER.info(String.valueOf(entity.getRemovalReason()));
5555+ if (player.getRemovalReason() != null && Objects.equals(player.getRemovalReason().toString(), "KILLED") || Objects.equals(player.getRemovalReason().toString(), "DISCARDED")) {
5656+ try {
5757+ // /back command position
5858+ LOGGER.info(player.getPos().toString());
5959+ DeathLocationUpdater(player.getPos(), player.getServerWorld(), player.getUuidAsString());
6060+ } catch (Exception e) {
6161+ throw new RuntimeException(e);
6262+ }
6363+ }
6464+ }
6565+ }
6666+6767+ private void onWorldLoad(MinecraftServer minecraftServer, ServerWorld serverWorld) {
6868+ // make it run only once
6969+ if (serverWorld.getRegistryKey() == World.OVERWORLD) {
7070+ // initialize da variables
7171+ SAVE_DIR = Path.of(String.valueOf(minecraftServer.getSavePath(WorldSavePath.ROOT)));
7272+ CONFIG_DIR = FabricLoader.getInstance().getConfigDir();
7373+7474+ LOGGER.error(String.valueOf(SAVE_DIR));
7575+ LOGGER.error(String.valueOf(CONFIG_DIR));
7676+7777+ Server = minecraftServer;
7878+ StorageManager.StorageInit();
7979+ }
2180 }
2281}