diff --git a/src/main/java/top/xujiayao/mcdiscordchat/Main.java b/src/main/java/top/xujiayao/mcdiscordchat/Main.java index e278edef..dc4c80cf 100644 --- a/src/main/java/top/xujiayao/mcdiscordchat/Main.java +++ b/src/main/java/top/xujiayao/mcdiscordchat/Main.java @@ -76,7 +76,5 @@ public class Main implements DedicatedServerModInitializer { JDA.shutdown(); }); - - //MinecraftEventListener.init(); } } diff --git a/src/main/java/top/xujiayao/mcdiscordchat/minecraft/mixins/ExampleMixin.java b/src/main/java/top/xujiayao/mcdiscordchat/minecraft/mixins/ExampleMixin.java deleted file mode 100644 index 16a3b511..00000000 --- a/src/main/java/top/xujiayao/mcdiscordchat/minecraft/mixins/ExampleMixin.java +++ /dev/null @@ -1,22 +0,0 @@ -package top.xujiayao.mcdiscordchat.minecraft.mixins; - -import net.minecraft.client.gui.screen.TitleScreen; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import static top.xujiayao.mcdiscordchat.Main.LOGGER; - -/** - * @author Xujiayao - */ -@Mixin({TitleScreen.class}) -public class ExampleMixin { - - @Inject(at = @At("HEAD"), method = "init()V") - private void init(CallbackInfo info) { - LOGGER.info("This line is printed by an example mod mixin!"); - } -} - diff --git a/src/main/java/top/xujiayao/mcdiscordchat/minecraft/mixins/MixinPlayerManager.java b/src/main/java/top/xujiayao/mcdiscordchat/minecraft/mixins/MixinPlayerManager.java new file mode 100644 index 00000000..aa92c445 --- /dev/null +++ b/src/main/java/top/xujiayao/mcdiscordchat/minecraft/mixins/MixinPlayerManager.java @@ -0,0 +1,31 @@ +package top.xujiayao.mcdiscordchat.minecraft.mixins; + +import net.dv8tion.jda.api.utils.MarkdownSanitizer; +import net.minecraft.network.ClientConnection; +import net.minecraft.server.PlayerManager; +import net.minecraft.server.network.ServerPlayerEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import static top.xujiayao.mcdiscordchat.Main.CHANNEL; +import static top.xujiayao.mcdiscordchat.Main.TEXTS; + +/** + * @author Xujiayao + */ +@Mixin(PlayerManager.class) +public class MixinPlayerManager { + + @Inject(method = "onPlayerConnect", at = @At("RETURN")) + private void onPlayerConnect(ClientConnection connection, ServerPlayerEntity player, CallbackInfo ci) { + CHANNEL.sendMessage(TEXTS.joinServer().replace("%playerName%", MarkdownSanitizer.escape(player.getEntityName()))).queue(); + } + + @Inject(method = "remove", at = @At("RETURN")) + private void remove(ServerPlayerEntity player, CallbackInfo ci) { + CHANNEL.sendMessage(TEXTS.leftServer().replace("%playerName%", MarkdownSanitizer.escape(player.getEntityName()))).queue(); + } +} + diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 0b247d1b..082848b3 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -20,6 +20,9 @@ "top.xujiayao.mcdiscordchat.Main" ] }, + "mixins": [ + "mcdiscordchat.mixins.json" + ], "depends": { "fabricloader": ">=0.13.3", "fabric": "*", diff --git a/src/main/resources/mcdiscordchat.mixins.json b/src/main/resources/mcdiscordchat.mixins.json index b4ec4e4c..ef8101de 100644 --- a/src/main/resources/mcdiscordchat.mixins.json +++ b/src/main/resources/mcdiscordchat.mixins.json @@ -1,9 +1,9 @@ { "required": true, - "package": "top.xujiayao.mcdiscordchat.mixins", + "package": "top.xujiayao.mcdiscordchat.minecraft.mixins", "compatibilityLevel": "JAVA_17", "mixins": [ - "ExampleMixin" + "MixinPlayerManager" ], "injectors": { "defaultRequire": 1