Skip to content

Commit

Permalink
feat(chat): use new fabric-message-api events (closes #32) (#52)
Browse files Browse the repository at this point in the history
  • Loading branch information
axieum authored Aug 8, 2022
1 parent 64b95c0 commit 1859c69
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 85 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,14 @@
import net.minecraft.advancement.Advancement;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.damage.DamageSource;
import net.minecraft.network.message.MessageType;
import net.minecraft.network.message.SignedMessage;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.filter.FilteredMessage;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.crash.CrashReport;
import net.minecraft.util.registry.RegistryKey;

import net.fabricmc.fabric.api.event.Event;
import net.fabricmc.fabric.api.event.EventFactory;
Expand Down Expand Up @@ -212,9 +214,9 @@ public static final class Minecraft
* Called when a player sent an in-game chat message.
*/
public static final Event<PlayerChat> PLAYER_CHAT =
EventFactory.createArrayBacked(PlayerChat.class, callbacks -> (st, player, message) -> {
EventFactory.createArrayBacked(PlayerChat.class, callbacks -> (st, player, message, typeKey) -> {
for (PlayerChat callback : callbacks) {
callback.onPlayerChatPlaceholder(st, player, message);
callback.onPlayerChatPlaceholder(st, player, message, typeKey);
}
});

Expand Down Expand Up @@ -345,9 +347,14 @@ public interface PlayerChat
* @param template mutable string template
* @param player author of the message
* @param message received message contents
* @param typeKey received message type
* @see net.fabricmc.fabric.api.message.v1.ServerMessageEvents#CHAT_MESSAGE
*/
void onPlayerChatPlaceholder(
StringTemplate template, ServerPlayerEntity player, FilteredMessage<SignedMessage> message
StringTemplate template,
ServerPlayerEntity player,
FilteredMessage<SignedMessage> message,
RegistryKey<MessageType> typeKey
);
}

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,23 @@
import net.fabricmc.api.DedicatedServerModInitializer;
import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
import net.fabricmc.fabric.api.message.v1.ServerMessageEvents;
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;

import me.axieum.mcmod.minecord.api.addon.MinecordAddon;
import me.axieum.mcmod.minecord.api.chat.event.minecraft.EntityDeathEvents;
import me.axieum.mcmod.minecord.api.chat.event.minecraft.GrantCriterionCallback;
import me.axieum.mcmod.minecord.api.chat.event.minecraft.ReceiveChatCallback;
import me.axieum.mcmod.minecord.api.event.ServerShutdownCallback;
import me.axieum.mcmod.minecord.impl.chat.callback.discord.MessageReactionListener;
import me.axieum.mcmod.minecord.impl.chat.callback.discord.MessageReceivedListener;
import me.axieum.mcmod.minecord.impl.chat.callback.discord.MessageUpdateListener;
import me.axieum.mcmod.minecord.impl.chat.callback.minecraft.EntityDeathCallback;
import me.axieum.mcmod.minecord.impl.chat.callback.minecraft.PlayerAdvancementCallback;
import me.axieum.mcmod.minecord.impl.chat.callback.minecraft.PlayerChangeWorldCallback;
import me.axieum.mcmod.minecord.impl.chat.callback.minecraft.PlayerChatCallback;
import me.axieum.mcmod.minecord.impl.chat.callback.minecraft.PlayerConnectionCallback;
import me.axieum.mcmod.minecord.impl.chat.callback.minecraft.PlayerDeathCallback;
import me.axieum.mcmod.minecord.impl.chat.callback.minecraft.ServerLifecycleCallback;
import me.axieum.mcmod.minecord.impl.chat.callback.minecraft.ServerMessageCallback;
import me.axieum.mcmod.minecord.impl.chat.config.ChatConfig;

public final class MinecordChat implements MinecordAddon, DedicatedServerModInitializer
Expand Down Expand Up @@ -83,7 +83,7 @@ public void onInitializeServer()
// A player left the game
ServerPlayConnectionEvents.DISCONNECT.register(playerConnectionCallback);
// A player sent an in-game chat message
ReceiveChatCallback.EVENT.register(new PlayerChatCallback());
ServerMessageEvents.CHAT_MESSAGE.register(new ServerMessageCallback());
// A player unlocked an advancement
GrantCriterionCallback.EVENT.register(new PlayerAdvancementCallback());
// A player teleported to another dimension
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
package me.axieum.mcmod.minecord.impl.chat.callback.minecraft;

import net.minecraft.network.message.MessageType;
import net.minecraft.network.message.SignedMessage;
import net.minecraft.server.filter.FilteredMessage;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.registry.RegistryKey;

import net.fabricmc.fabric.api.message.v1.ServerMessageEvents.ChatMessage;

import me.axieum.mcmod.minecord.api.Minecord;
import me.axieum.mcmod.minecord.api.chat.event.ChatPlaceholderEvents;
import me.axieum.mcmod.minecord.api.chat.event.minecraft.ReceiveChatCallback;
import me.axieum.mcmod.minecord.api.util.StringTemplate;
import me.axieum.mcmod.minecord.api.util.StringUtils;
import me.axieum.mcmod.minecord.impl.chat.util.DiscordDispatcher;

public class PlayerChatCallback implements ReceiveChatCallback
public class ServerMessageCallback implements ChatMessage
{
@Override
public void onReceiveChat(ServerPlayerEntity player, FilteredMessage<SignedMessage> message)
public void onChatMessage(
FilteredMessage<SignedMessage> message, ServerPlayerEntity player, RegistryKey<MessageType> typeKey
)
{
if (!MessageType.CHAT.equals(typeKey)) return;
Minecord.getInstance().getJDA().ifPresent(jda -> {
/*
* Prepare a message template.
Expand All @@ -34,14 +40,14 @@ public void onReceiveChat(ServerPlayerEntity player, FilteredMessage<SignedMessa
message.filteredOrElse(message.raw()).getContent().getString()
));

ChatPlaceholderEvents.Minecraft.PLAYER_CHAT.invoker().onPlayerChatPlaceholder(st, player, message);
ChatPlaceholderEvents.Minecraft.PLAYER_CHAT.invoker().onPlayerChatPlaceholder(st, player, message, typeKey);

/*
* Dispatch the message.
*/

DiscordDispatcher.dispatch((builder, entry) ->
builder.setContent(st.format(entry.discord.chat)),
DiscordDispatcher.dispatch((embed, entry) ->
embed.setContent(st.format(entry.discord.chat)),
entry -> entry.discord.chat != null && entry.hasWorld(player.world));
});
}
Expand Down

This file was deleted.

3 changes: 1 addition & 2 deletions minecord-chat/src/main/resources/minecord-chat.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
"server": [
"LivingEntityMixin",
"PlayerAdvancementTrackerMixin",
"ServerPlayerEntityMixin",
"ServerPlayNetworkHandlerMixin"
"ServerPlayerEntityMixin"
],
"client": [],
"injectors": {
Expand Down

0 comments on commit 1859c69

Please sign in to comment.