List of usage examples for net.minecraftforge.event ServerChatEvent ServerChatEvent
public ServerChatEvent(ServerPlayerEntity player, String message, ITextComponent component)
From source file:org.spongepowered.mod.event.SpongeForgeEventFactory.java
License:MIT License
private static ServerChatEvent createServerChatEvent(Event event) { if (!(event instanceof MessageSinkEvent.Chat)) { throw new IllegalArgumentException("Event is not a valid MessageSinkEvent."); }/* www . ja v a 2 s.co m*/ MessageSinkEvent.Chat spongeEvent = (MessageSinkEvent.Chat) event; Optional<Player> player = spongeEvent.getCause().first(Player.class); if (!player.isPresent()) { return null; } IChatComponent component = SpongeTexts.toComponent(spongeEvent.getOriginalMessage(), player.get().getLocale()); if (!(component instanceof ChatComponentTranslation)) { component = new ChatComponentTranslation("%s", component); } // Using toPlain here is fine, since the raw message from the client can't have formatting. ServerChatEvent forgeEvent = new ServerChatEvent((EntityPlayerMP) player.get(), Texts.toPlain(spongeEvent.getOriginalMessage()), (ChatComponentTranslation) component); ((IMixinEventPlayerChat) forgeEvent).setRawMessage(spongeEvent.getRawMessage()); return forgeEvent; }
From source file:org.spongepowered.mod.mixin.core.network.MixinNetHandlerPlayServer.java
License:MIT License
@Inject(method = "processChatMessage", at = @At(value = "INVOKE", target = "net.minecraftforge.common.ForgeHooks.onServerChatEvent" + "(Lnet/minecraft/network/NetHandlerPlayServer;Ljava/lang/String;Lnet/minecraft/util/ChatComponentTranslation;)" + "Lnet/minecraft/util/ChatComponentTranslation;", remap = false), cancellable = true, locals = LocalCapture.CAPTURE_FAILHARD) public void injectChatEvent(C01PacketChatMessage packetIn, CallbackInfo ci, String s, ChatComponentTranslation component) { final ServerChatEvent event = new ServerChatEvent(this.playerEntity, s, component); ((IMixinEventPlayerChat) event).setRawMessage(Texts.of(packetIn.getMessage())); if (!MinecraftForge.EVENT_BUS.post(event)) { MessageSinkEvent spongeEvent = (MessageSinkEvent) event; Text returned = Texts.format(spongeEvent.getMessage()); spongeEvent.getSink().sendMessage(returned); // Chat spam suppression from MC this.chatSpamThresholdCount += 20; if (this.chatSpamThresholdCount > 200 && !MinecraftServer.getServer().getConfigurationManager() .canSendCommands(this.playerEntity.getGameProfile())) { this.kickPlayerFromServer("disconnect.spam"); }// ww w . j ava 2s. c o m } ci.cancel(); }