Skip to content
This repository was archived by the owner on Nov 20, 2023. It is now read-only.

Commit 336c459

Browse files
committed
Improved mod compatibility.
Instead of several precise mixins caching messages at each message source, I've switched to a single mixin which handles multiple sources (with no hardcoded assumptions) for improved compatibility with other chat mods.
1 parent 6183232 commit 336c459

File tree

6 files changed

+18
-145
lines changed

6 files changed

+18
-145
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ minecraft_version=1.17.1
44
yarn_mappings=1.17.1+build.61
55
loader_version=0.11.7
66

7-
mod_version=1.1.0
7+
mod_version=1.2.0
88
maven_group=me.thegiggitybyte
99
archives_base_name=chathistory

src/main/java/me/thegiggitybyte/chathistory/mixin/PlayerAdvancementTrackerMixin.java

Lines changed: 0 additions & 37 deletions
This file was deleted.

src/main/java/me/thegiggitybyte/chathistory/mixin/PlayerManagerMixin.java

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,31 @@
11
package me.thegiggitybyte.chathistory.mixin;
22

3-
import com.mojang.authlib.GameProfile;
43
import me.thegiggitybyte.chathistory.ChatHistory;
54
import me.thegiggitybyte.chathistory.ChatMessage;
6-
import net.fabricmc.api.EnvType;
7-
import net.fabricmc.api.Environment;
8-
import net.minecraft.nbt.NbtCompound;
95
import net.minecraft.network.ClientConnection;
106
import net.minecraft.network.MessageType;
117
import net.minecraft.server.PlayerManager;
12-
import net.minecraft.server.network.ServerPlayNetworkHandler;
138
import net.minecraft.server.network.ServerPlayerEntity;
14-
import net.minecraft.server.world.ServerWorld;
15-
import net.minecraft.text.MutableText;
16-
import net.minecraft.util.UserCache;
17-
import net.minecraft.util.Util;
18-
import net.minecraft.util.registry.RegistryKey;
19-
import net.minecraft.world.WorldProperties;
9+
import net.minecraft.text.Text;
2010
import org.spongepowered.asm.mixin.Mixin;
2111
import org.spongepowered.asm.mixin.injection.At;
2212
import org.spongepowered.asm.mixin.injection.Inject;
2313
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
24-
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
2514

26-
import java.util.Optional;
15+
import java.util.UUID;
16+
import java.util.function.Function;
2717

28-
@Environment(EnvType.SERVER)
2918
@Mixin(PlayerManager.class)
30-
public abstract class PlayerManagerMixin {
19+
public class PlayerManagerMixin {
3120

32-
@Inject(
33-
method = "onPlayerConnect",
34-
locals = LocalCapture.CAPTURE_FAILHARD,
35-
at = @At(
36-
value = "INVOKE",
37-
target = "Lnet/minecraft/server/PlayerManager;broadcastChatMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/MessageType;Ljava/util/UUID;)V"
38-
)
39-
)
40-
public void cacheJoinMessage(ClientConnection connection, ServerPlayerEntity player, CallbackInfo ci, GameProfile gameProfile, UserCache userCache, Optional optional, String string, NbtCompound nbtCompound, RegistryKey registryKey, ServerWorld serverWorld, ServerWorld serverWorld3, String string2, WorldProperties worldProperties, ServerPlayNetworkHandler serverPlayNetworkHandler, MutableText content) { // :(
41-
var message = new ChatMessage(content, MessageType.SYSTEM, Util.NIL_UUID);
42-
ChatHistory.MESSAGE_CACHE.add(message);
21+
@Inject(method = "broadcast", at = @At("HEAD"))
22+
public void cacheMessage(Text content, Function<ServerPlayerEntity, Text> messageFactory, MessageType type, UUID sender, CallbackInfo ci) {
23+
ChatHistory.MESSAGE_CACHE.add(new ChatMessage(content, type, sender));
24+
}
25+
26+
@Inject(method = "broadcastChatMessage", at = @At("HEAD"))
27+
public void cacheMessage(Text content, MessageType type, UUID sender, CallbackInfo ci) {
28+
ChatHistory.MESSAGE_CACHE.add(new ChatMessage(content, type, sender));
4329
}
4430

4531
@Inject(

src/main/java/me/thegiggitybyte/chathistory/mixin/ServerPlayNetworkHandlerMixin.java

Lines changed: 0 additions & 35 deletions
This file was deleted.

src/main/java/me/thegiggitybyte/chathistory/mixin/ServerPlayerEntityMixin.java

Lines changed: 0 additions & 41 deletions
This file was deleted.

src/main/resources/chathistory.mixins.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
{
22
"required": true,
33
"minVersion": "0.8",
4-
"package": "me.thegiggitybyte.chathistory.mixin",
54
"compatibilityLevel": "JAVA_16",
5+
6+
"package": "me.thegiggitybyte.chathistory.mixin",
7+
68
"server": [
7-
"PlayerManagerMixin",
8-
"ServerPlayerEntityMixin",
9-
"ServerPlayNetworkHandlerMixin",
10-
"PlayerAdvancementTrackerMixin"
9+
"PlayerManagerMixin"
1110
],
11+
1212
"injectors": {
1313
"defaultRequire": 1
1414
}

0 commit comments

Comments
 (0)