mirror of
https://github.com/architectury/architectury-api.git
synced 2026-03-28 11:57:01 -05:00
Update to 22w17a
This commit is contained in:
@@ -24,6 +24,7 @@ import dev.architectury.event.Event;
|
||||
import dev.architectury.event.EventFactory;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.network.chat.ChatSender;
|
||||
import net.minecraft.network.chat.ChatType;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -63,10 +64,10 @@ public interface ClientChatEvent {
|
||||
*
|
||||
* @param type Where was the message emitted from.
|
||||
* @param message The chat message.
|
||||
* @param sender The packet sender. Can be {@code null}, but probably is the sending player UUID or {@link net.minecraft.Util#NIL_UUID}
|
||||
* @param sender The packet sender. Can be {@code null}, but probably is the sending player UUID or null for system messages.
|
||||
* @return A {@link CompoundEventResult} determining the outcome of the event,
|
||||
* if an outcome is set, the received message is overridden.
|
||||
*/
|
||||
CompoundEventResult<Component> process(ChatType type, Component message, @Nullable UUID sender);
|
||||
CompoundEventResult<Component> process(ChatType type, Component message, @Nullable ChatSender sender);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ import dev.architectury.event.events.common.ChatEvent;
|
||||
import dev.architectury.impl.fabric.ChatComponentImpl;
|
||||
import net.minecraft.network.chat.ChatType;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.protocol.game.ServerboundChatPacket;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.server.network.ServerGamePacketListenerImpl;
|
||||
@@ -52,20 +53,20 @@ public abstract class MixinServerGamePacketListenerImpl {
|
||||
@Shadow
|
||||
public abstract void disconnect(Component component);
|
||||
|
||||
@Inject(method = "handleChat(Lnet/minecraft/server/network/TextFilter$FilteredText;)V",
|
||||
@Inject(method = "handleChat(Lnet/minecraft/network/protocol/game/ServerboundChatPacket;Lnet/minecraft/server/network/TextFilter$FilteredText;)V",
|
||||
at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/server/players/PlayerList;broadcastMessage(Lnet/minecraft/network/chat/Component;Ljava/util/function/Function;Lnet/minecraft/network/chat/ChatType;Ljava/util/UUID;)V"),
|
||||
target = "Lnet/minecraft/server/players/PlayerList;broadcastPlayerMessage(Lnet/minecraft/network/chat/Component;Ljava/util/function/Function;Lnet/minecraft/network/chat/ChatType;Lnet/minecraft/network/chat/ChatSender;Ljava/time/Instant;Lnet/minecraft/util/Crypt$SaltSignaturePair;)V"),
|
||||
cancellable = true, locals = LocalCapture.CAPTURE_FAILHARD)
|
||||
private void handleChat(TextFilter.FilteredText message, CallbackInfo ci, String string, String string2, Component component, Component component2) {
|
||||
var chatComponent = new ChatComponentImpl(component2, component);
|
||||
private void handleChat(ServerboundChatPacket packet, TextFilter.FilteredText message, CallbackInfo ci, String normalizedMessage, String filteredMessage, Component filtered, Component raw) {
|
||||
var chatComponent = new ChatComponentImpl(raw, filtered);
|
||||
var process = ChatEvent.SERVER.invoker().process(this.player, message, chatComponent);
|
||||
if (process.isEmpty()) return;
|
||||
if (process.isFalse()) {
|
||||
ci.cancel();
|
||||
} else if (!Objects.equals(chatComponent.getRaw(), component2) || !Objects.equals(chatComponent.getFiltered(), component)) {
|
||||
this.server.getPlayerList().broadcastMessage(chatComponent.getRaw(), (serverPlayer) -> {
|
||||
} else if (!Objects.equals(chatComponent.getRaw(), raw) || !Objects.equals(chatComponent.getFiltered(), filtered)) {
|
||||
this.server.getPlayerList().broadcastPlayerMessage(chatComponent.getRaw(), (serverPlayer) -> {
|
||||
return this.player.shouldFilterMessageTo(serverPlayer) ? chatComponent.getFiltered() : chatComponent.getRaw();
|
||||
}, ChatType.CHAT, this.player.getUUID());
|
||||
}, ChatType.CHAT, this.player.asChatSender(), packet.getTimeStamp(), packet.getSaltSignature());
|
||||
|
||||
this.chatSpamTickCount += 20;
|
||||
if (this.chatSpamTickCount > 200 && !this.server.getPlayerList().isOp(this.player.getGameProfile())) {
|
||||
|
||||
@@ -25,10 +25,7 @@ import dev.architectury.event.events.client.ClientRecipeUpdateEvent;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.multiplayer.ClientPacketListener;
|
||||
import net.minecraft.client.player.LocalPlayer;
|
||||
import net.minecraft.network.protocol.game.ClientboundChatPacket;
|
||||
import net.minecraft.network.protocol.game.ClientboundLoginPacket;
|
||||
import net.minecraft.network.protocol.game.ClientboundRespawnPacket;
|
||||
import net.minecraft.network.protocol.game.ClientboundUpdateRecipesPacket;
|
||||
import net.minecraft.network.protocol.game.*;
|
||||
import net.minecraft.world.item.crafting.RecipeManager;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
@@ -66,16 +63,30 @@ public class MixinClientPacketListener {
|
||||
this.tmpPlayer = null;
|
||||
}
|
||||
|
||||
@Inject(method = "handleChat", at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/client/gui/Gui;handleChat(Lnet/minecraft/network/chat/ChatType;Lnet/minecraft/network/chat/Component;Ljava/util/UUID;)V"),
|
||||
@Inject(method = "handleSystemChat", at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/client/gui/Gui;handleSystemChat(Lnet/minecraft/network/chat/ChatType;Lnet/minecraft/network/chat/Component;)V"),
|
||||
cancellable = true)
|
||||
private void handleChat(ClientboundChatPacket packet, CallbackInfo ci) {
|
||||
var process = ClientChatEvent.RECEIVED.invoker().process(packet.getType(), packet.getMessage(), packet.getSender());
|
||||
private void handleChat(ClientboundSystemChatPacket packet, CallbackInfo ci) {
|
||||
var process = ClientChatEvent.RECEIVED.invoker().process(packet.type(), packet.content(), null);
|
||||
if (process.isEmpty()) return;
|
||||
if (process.isFalse()) {
|
||||
ci.cancel();
|
||||
} else if (process.object() != null && !process.object().equals(packet.getMessage())) {
|
||||
this.minecraft.gui.handleChat(packet.getType(), packet.getMessage(), packet.getSender());
|
||||
} else if (process.object() != null && !process.object().equals(packet.content())) {
|
||||
this.minecraft.gui.handleSystemChat(packet.type(), packet.content());
|
||||
ci.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "handlePlayerChat", at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/client/gui/Gui;handlePlayerChat(Lnet/minecraft/network/chat/ChatType;Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/ChatSender;)V"),
|
||||
cancellable = true)
|
||||
private void handleChat(ClientboundPlayerChatPacket packet, CallbackInfo ci) {
|
||||
var process = ClientChatEvent.RECEIVED.invoker().process(packet.type(), packet.content(), packet.sender());
|
||||
if (process.isEmpty()) return;
|
||||
if (process.isFalse()) {
|
||||
ci.cancel();
|
||||
} else if (process.object() != null && !process.object().equals(packet.content())) {
|
||||
this.minecraft.gui.handlePlayerChat(packet.type(), packet.content(), packet.sender());
|
||||
ci.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,8 @@ org.gradle.daemon=false
|
||||
|
||||
forgeEnabled=false
|
||||
|
||||
minecraft_version=22w16b
|
||||
supported_version=22w16b
|
||||
minecraft_version=22w17a
|
||||
supported_version=22w17a
|
||||
|
||||
cf_type=beta
|
||||
|
||||
@@ -13,8 +13,8 @@ archives_base_name_snapshot=architectury-snapshot
|
||||
base_version=5.2
|
||||
maven_group=dev.architectury
|
||||
|
||||
fabric_loader_version=0.14.0
|
||||
fabric_api_version=0.51.2+1.19
|
||||
fabric_loader_version=0.14.3
|
||||
fabric_api_version=0.51.3+1.19
|
||||
mod_menu_version=3.1.0
|
||||
|
||||
forge_version=40.0.1
|
||||
|
||||
@@ -22,7 +22,6 @@ package dev.architectury.test.item;
|
||||
import dev.architectury.hooks.item.tool.AxeItemHooks;
|
||||
import dev.architectury.hooks.item.tool.HoeItemHooks;
|
||||
import dev.architectury.hooks.item.tool.ShovelItemHooks;
|
||||
import net.minecraft.Util;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
@@ -40,7 +39,7 @@ public final class TestBlockInteractions {
|
||||
if (!ctx.getLevel().isClientSide) {
|
||||
Player player = ctx.getPlayer();
|
||||
if (player != null)
|
||||
player.sendMessage(Component.literal("These dark arts can only be done at night!"), Util.NIL_UUID);
|
||||
player.sendSystemMessage(Component.literal("These dark arts can only be done at night!"));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -51,7 +50,7 @@ public final class TestBlockInteractions {
|
||||
if (!ctx.getLevel().isClientSide) {
|
||||
Player player = ctx.getPlayer();
|
||||
if (player != null)
|
||||
player.sendMessage(Component.literal("Thou has successfully committed the dark arts of alchemy!!"), Util.NIL_UUID);
|
||||
player.sendSystemMessage(Component.literal("Thou has successfully committed the dark arts of alchemy!!"));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ package dev.architectury.test.networking;
|
||||
import dev.architectury.networking.NetworkManager;
|
||||
import dev.architectury.networking.simple.BaseC2SMessage;
|
||||
import dev.architectury.networking.simple.MessageType;
|
||||
import net.minecraft.Util;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.network.chat.Component;
|
||||
|
||||
@@ -52,6 +51,6 @@ public class ButtonClickedMessage extends BaseC2SMessage {
|
||||
|
||||
@Override
|
||||
public void handle(NetworkManager.PacketContext context) {
|
||||
context.getPlayer().sendMessage(Component.literal("You clicked button #" + buttonId), Util.NIL_UUID);
|
||||
context.getPlayer().sendSystemMessage(Component.literal("You clicked button #" + buttonId));
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,6 @@ package dev.architectury.test.networking;
|
||||
import dev.architectury.networking.NetworkManager;
|
||||
import dev.architectury.networking.simple.BaseS2CMessage;
|
||||
import dev.architectury.networking.simple.MessageType;
|
||||
import net.minecraft.Util;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.network.chat.Component;
|
||||
@@ -55,6 +54,6 @@ public class SyncDataMessage extends BaseS2CMessage {
|
||||
|
||||
@Override
|
||||
public void handle(NetworkManager.PacketContext context) {
|
||||
context.getPlayer().sendMessage(Component.literal("Received data from server: " + serverData), Util.NIL_UUID);
|
||||
context.getPlayer().sendSystemMessage(Component.literal("Received data from server: " + serverData));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user