Example usage for net.minecraftforge.event ServerChatEvent ServerChatEvent

List of usage examples for net.minecraftforge.event ServerChatEvent ServerChatEvent

Introduction

In this page you can find the example usage for net.minecraftforge.event ServerChatEvent ServerChatEvent.

Prototype

public ServerChatEvent(ServerPlayerEntity player, String message, ITextComponent component) 

Source Link

Usage

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();
}