mirror of
https://github.com/CPTProgrammer/ChatPlus.git
synced 2025-05-13 07:18:14 +08:00
Fixed Item display feature not working
Fixed #3: Item display feature not working properly with "Discord Integration"
This commit is contained in:
parent
68d4e2e250
commit
3e3e5f9797
@ -1,15 +1,7 @@
|
|||||||
package cn.revaria.chatplus.mixin;
|
package cn.revaria.chatplus.mixin;
|
||||||
|
|
||||||
import io.netty.util.internal.StringUtil;
|
|
||||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
|
||||||
import net.minecraft.SharedConstants;
|
import net.minecraft.SharedConstants;
|
||||||
import net.minecraft.block.AbstractBlock;
|
|
||||||
import net.minecraft.block.AirBlock;
|
|
||||||
import net.minecraft.block.Block;
|
|
||||||
import net.minecraft.entity.EquipmentSlot;
|
|
||||||
import net.minecraft.item.Item;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.item.Items;
|
|
||||||
import net.minecraft.network.message.LastSeenMessageList;
|
import net.minecraft.network.message.LastSeenMessageList;
|
||||||
import net.minecraft.network.message.MessageChain;
|
import net.minecraft.network.message.MessageChain;
|
||||||
import net.minecraft.network.message.MessageType;
|
import net.minecraft.network.message.MessageType;
|
||||||
@ -17,34 +9,27 @@ import net.minecraft.network.message.SignedMessage;
|
|||||||
import net.minecraft.network.message.MessageChainTaskQueue;
|
import net.minecraft.network.message.MessageChainTaskQueue;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket;
|
import net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket;
|
||||||
import net.minecraft.network.listener.ServerPlayPacketListener;
|
import net.minecraft.server.PlayerManager;
|
||||||
import net.minecraft.server.filter.FilteredMessage;
|
import net.minecraft.server.filter.FilteredMessage;
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.server.network.ServerPlayNetworkHandler;
|
import net.minecraft.server.network.ServerPlayNetworkHandler;
|
||||||
import net.minecraft.text.LiteralTextContent;
|
|
||||||
import net.minecraft.text.MutableText;
|
import net.minecraft.text.MutableText;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.item.AirBlockItem;
|
|
||||||
import net.minecraft.text.TextContent;
|
import net.minecraft.text.TextContent;
|
||||||
import net.minecraft.util.Formatting;
|
|
||||||
import net.minecraft.nbt.NbtCompound;
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.apache.logging.log4j.core.jmx.Server;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Mutable;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import com.google.gson.Gson;
|
|
||||||
import com.google.gson.GsonBuilder;
|
|
||||||
|
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.ArrayDeque;
|
import java.util.ArrayDeque;
|
||||||
import java.util.Deque;
|
import java.util.Deque;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
@ -106,8 +91,8 @@ public abstract class MixinChat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
MutableText changedText = MutableText.of(TextContent.EMPTY);
|
MutableText changedText = MutableText.of(TextContent.EMPTY);
|
||||||
for (int i = 0; i < messages.length; i++) {
|
for (String message : messages) {
|
||||||
changedText.append(Text.of(messages[i]));
|
changedText.append(Text.of(message));
|
||||||
if (!itemDeque.isEmpty()) {
|
if (!itemDeque.isEmpty()) {
|
||||||
ItemStack itemStack;
|
ItemStack itemStack;
|
||||||
if (itemDeque.getFirst() == -1) {
|
if (itemDeque.getFirst() == -1) {
|
||||||
@ -122,10 +107,16 @@ public abstract class MixinChat {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
SignedMessage signedMessage = getSignedMessage(packet, (LastSeenMessageList) optional.get());
|
SignedMessage signedMessage = getSignedMessage(packet, (LastSeenMessageList) optional.get());
|
||||||
/*server.getPlayerManager().broadcast(signedMessage.withUnsignedContent(
|
server.getPlayerManager().broadcast(signedMessage.withUnsignedContent(
|
||||||
changedText
|
changedText
|
||||||
), player, MessageType.params(MessageType.CHAT, player));*/
|
), player, MessageType.params(MessageType.CHAT, player));
|
||||||
handleDecoratedMessage(signedMessage.withUnsignedContent(changedText));
|
// handleDecoratedMessage(signedMessage.withUnsignedContent(changedText));
|
||||||
|
try {
|
||||||
|
Class<?> DiscordIntegrationMod = Class.forName("de.erdbeerbaerlp.dcintegration.fabric.DiscordIntegrationMod");
|
||||||
|
Method handleChatMessage = DiscordIntegrationMod.getMethod("handleChatMessage", SignedMessage.class, ServerPlayerEntity.class);
|
||||||
|
handleChatMessage.invoke(null, signedMessage.withUnsignedContent(changedText), player);
|
||||||
|
} catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException |
|
||||||
|
IllegalAccessException ignored) { }
|
||||||
} catch (MessageChain.MessageChainException e) {
|
} catch (MessageChain.MessageChainException e) {
|
||||||
handleMessageChainException(e);
|
handleMessageChainException(e);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user