From 24478bdbaa5d9a5fa687962c53e396cfd3534471 Mon Sep 17 00:00:00 2001
From: PinkGoosik <MCGycuk@yandex.ru>
Date: Sun, 26 Mar 2023 22:28:03 +0500
Subject: [PATCH] fix respawn position

---
 src/main/java/skylands/event/SkylandsEvents.java     | 12 ++++++++++++
 .../skylands/mixin/server/MinecraftServerMixin.java  |  4 ++--
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/main/java/skylands/event/SkylandsEvents.java b/src/main/java/skylands/event/SkylandsEvents.java
index 019a00c..1fb3fc3 100644
--- a/src/main/java/skylands/event/SkylandsEvents.java
+++ b/src/main/java/skylands/event/SkylandsEvents.java
@@ -1,5 +1,6 @@
 package skylands.event;
 
+import net.fabricmc.fabric.api.entity.event.v1.ServerPlayerEvents;
 import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
 import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
 import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents;
@@ -9,10 +10,21 @@
 import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
 import net.minecraft.util.ActionResult;
 import net.minecraft.util.TypedActionResult;
+import net.minecraft.world.World;
+import skylands.logic.Skylands;
 
 public class SkylandsEvents {
 
 	public static void init() {
+		ServerPlayerEvents.AFTER_RESPAWN.register((oldPlayer, player, alive) -> {
+			var server = player.getServer();
+			if(server != null && server.getFile("hub_template").exists()) {
+				if(player.getWorld().getRegistryKey().equals(World.OVERWORLD)) {
+					Skylands.getInstance().hub.visit(player);
+				}
+			}
+		});
+
 		ServerLifecycleEvents.SERVER_STARTING.register(ServerStartEvent::onStarting);
 		ServerTickEvents.END_SERVER_TICK.register(ServerTickEvent::onTick);
 		ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> PlayerConnectEvent.onJoin(server, handler.player));
diff --git a/src/main/java/skylands/mixin/server/MinecraftServerMixin.java b/src/main/java/skylands/mixin/server/MinecraftServerMixin.java
index efb818c..8c0b83f 100644
--- a/src/main/java/skylands/mixin/server/MinecraftServerMixin.java
+++ b/src/main/java/skylands/mixin/server/MinecraftServerMixin.java
@@ -22,7 +22,7 @@ public abstract class MinecraftServerMixin {
 	@Final
 	private static Logger LOGGER;
 
-	@Redirect(method = "save", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;info(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V"))
+	@Redirect(method = "save", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;info(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V", remap = false))
 	void info(Logger logger, String s, Object o, Object o1) {
 		if(o1 instanceof Identifier id) {
 			if(id.getNamespace().equals(SkylandsMod.MOD_ID)) {
@@ -32,7 +32,7 @@ void info(Logger logger, String s, Object o, Object o1) {
 		logger.info(s, o, o1);
 	}
 
-	@Redirect(method = "save", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;info(Ljava/lang/String;Ljava/lang/Object;)V"))
+	@Redirect(method = "save", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;info(Ljava/lang/String;Ljava/lang/Object;)V", remap = false))
 	void info(Logger logger, String s, Object o) {
 		try {
 			if(o instanceof String) {