Fix duplicate username in chat.
This commit is contained in:
parent
660f5e67f5
commit
29b1a450f3
@ -28,6 +28,8 @@ public interface ServerPlayerEntityBridge extends PlayerEntityBridge {
|
|||||||
|
|
||||||
void bridge$sendMessage(ITextComponent[] ichatbasecomponent);
|
void bridge$sendMessage(ITextComponent[] ichatbasecomponent);
|
||||||
|
|
||||||
|
void bridge$sendMessage(ITextComponent component);
|
||||||
|
|
||||||
boolean bridge$isJoining();
|
boolean bridge$isJoining();
|
||||||
|
|
||||||
void bridge$reset();
|
void bridge$reset();
|
||||||
|
|||||||
@ -433,6 +433,11 @@ public abstract class ServerPlayerEntityMixin extends PlayerEntityMixin implemen
|
|||||||
sendMessage(ichatbasecomponent);
|
sendMessage(ichatbasecomponent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void bridge$sendMessage(ITextComponent component) {
|
||||||
|
this.sendMessage(component);
|
||||||
|
}
|
||||||
|
|
||||||
@Redirect(method = "copyFrom", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/crafting/ServerRecipeBook;copyFrom(Lnet/minecraft/item/crafting/RecipeBook;)V"))
|
@Redirect(method = "copyFrom", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/crafting/ServerRecipeBook;copyFrom(Lnet/minecraft/item/crafting/RecipeBook;)V"))
|
||||||
private void arclight$noRecipeBookCopy(ServerRecipeBook serverRecipeBook, RecipeBook that) {
|
private void arclight$noRecipeBookCopy(ServerRecipeBook serverRecipeBook, RecipeBook that) {
|
||||||
}
|
}
|
||||||
|
|||||||
@ -79,6 +79,7 @@ import net.minecraft.world.GameRules;
|
|||||||
import net.minecraft.world.GameType;
|
import net.minecraft.world.GameType;
|
||||||
import net.minecraft.world.IWorldReader;
|
import net.minecraft.world.IWorldReader;
|
||||||
import net.minecraft.world.server.ServerWorld;
|
import net.minecraft.world.server.ServerWorld;
|
||||||
|
import net.minecraftforge.common.ForgeHooks;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@ -947,13 +948,10 @@ public abstract class ServerPlayNetHandlerMixin implements ServerPlayNetHandlerB
|
|||||||
if (s.isEmpty() || this.player.getChatVisibility() == ChatVisibility.HIDDEN) {
|
if (s.isEmpty() || this.player.getChatVisibility() == ChatVisibility.HIDDEN) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
ServerPlayNetHandler handler = (ServerPlayNetHandler) (Object) this;
|
||||||
if (!async && s.startsWith("/")) {
|
if (!async && s.startsWith("/")) {
|
||||||
this.handleSlashCommand(s);
|
this.handleSlashCommand(s);
|
||||||
} else if (this.player.getChatVisibility() != ChatVisibility.SYSTEM) {
|
} else if (this.player.getChatVisibility() != ChatVisibility.SYSTEM) {
|
||||||
ITextComponent itextcomponent = new TranslationTextComponent("chat.type.text", this.player.getDisplayName(), net.minecraftforge.common.ForgeHooks.newChatWithLinks(s));
|
|
||||||
itextcomponent = net.minecraftforge.common.ForgeHooks.onServerChatEvent((ServerPlayNetHandler) (Object) this, s, itextcomponent);
|
|
||||||
if (itextcomponent == null) return;
|
|
||||||
s = CraftChatMessage.fromComponent(itextcomponent);
|
|
||||||
Player player = this.getPlayer();
|
Player player = this.getPlayer();
|
||||||
AsyncPlayerChatEvent event = new AsyncPlayerChatEvent(async, player, s, new LazyPlayerSet(this.minecraftServer));
|
AsyncPlayerChatEvent event = new AsyncPlayerChatEvent(async, player, s, new LazyPlayerSet(this.minecraftServer));
|
||||||
this.server.getPluginManager().callEvent(event);
|
this.server.getPluginManager().callEvent(event);
|
||||||
@ -969,14 +967,16 @@ public abstract class ServerPlayNetHandlerMixin implements ServerPlayNetHandlerB
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
String message = String.format(queueEvent.getFormat(), queueEvent.getPlayer().getDisplayName(), queueEvent.getMessage());
|
String message = String.format(queueEvent.getFormat(), queueEvent.getPlayer().getDisplayName(), queueEvent.getMessage());
|
||||||
Bukkit.getConsoleSender().sendMessage(message);
|
ITextComponent component = ForgeHooks.onServerChatEvent(handler, queueEvent.getMessage(), ForgeHooks.newChatWithLinks(message));
|
||||||
|
if (component == null) return null;
|
||||||
|
Bukkit.getConsoleSender().sendMessage(CraftChatMessage.fromComponent(component));
|
||||||
if (((LazyPlayerSet) queueEvent.getRecipients()).isLazy()) {
|
if (((LazyPlayerSet) queueEvent.getRecipients()).isLazy()) {
|
||||||
for (Object player : minecraftServer.getPlayerList().players) {
|
for (Object player : minecraftServer.getPlayerList().players) {
|
||||||
((ServerPlayerEntityBridge) player).bridge$sendMessage(CraftChatMessage.fromString(message));
|
((ServerPlayerEntityBridge) player).bridge$sendMessage(component);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (Player player2 : queueEvent.getRecipients()) {
|
for (Player player2 : queueEvent.getRecipients()) {
|
||||||
player2.sendMessage(message);
|
((ServerPlayerEntityBridge) player2).bridge$sendMessage(component);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@ -1002,15 +1002,32 @@ public abstract class ServerPlayNetHandlerMixin implements ServerPlayNetHandlerB
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
s = String.format(event.getFormat(), event.getPlayer().getDisplayName(), event.getMessage());
|
s = String.format(event.getFormat(), event.getPlayer().getDisplayName(), event.getMessage());
|
||||||
Bukkit.getConsoleSender().sendMessage(s);
|
ITextComponent chatWithLinks = ForgeHooks.newChatWithLinks(s);
|
||||||
if (((LazyPlayerSet) event.getRecipients()).isLazy()) {
|
class ForgeChat extends Waitable<Void> {
|
||||||
for (Object recipient : minecraftServer.getPlayerList().players) {
|
|
||||||
((ServerPlayerEntityBridge) recipient).bridge$sendMessage(CraftChatMessage.fromString(s));
|
@Override
|
||||||
|
protected Void evaluate() {
|
||||||
|
// this is called on main thread
|
||||||
|
ITextComponent component = ForgeHooks.onServerChatEvent(handler, event.getMessage(), chatWithLinks);
|
||||||
|
if (component == null) return null;
|
||||||
|
Bukkit.getConsoleSender().sendMessage(CraftChatMessage.fromComponent(component));
|
||||||
|
if (((LazyPlayerSet) event.getRecipients()).isLazy()) {
|
||||||
|
for (Object recipient : minecraftServer.getPlayerList().players) {
|
||||||
|
((ServerPlayerEntityBridge) recipient).bridge$sendMessage(component);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (Player recipient2 : event.getRecipients()) {
|
||||||
|
((ServerPlayerEntityBridge) recipient2).bridge$sendMessage(component);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
Waitable<Void> waitable = new ForgeChat();
|
||||||
|
if (async) {
|
||||||
|
((MinecraftServerBridge) minecraftServer).bridge$queuedProcess(waitable);
|
||||||
} else {
|
} else {
|
||||||
for (Player recipient2 : event.getRecipients()) {
|
waitable.run();
|
||||||
recipient2.sendMessage(s);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user