Code Monkey home page Code Monkey logo

fabric---discord-link's People

Contributors

alexanderritter02 avatar altrisi avatar dependabot-preview[bot] avatar dkolb avatar ennuil avatar ev1dentfir3 avatar gab9281 avatar ivan-khar avatar kwvanderlinde avatar lloydthinks avatar manuelgrabowski avatar matthias4217 avatar mightyknight avatar mran0nym avatar nunzioardi avatar pegasusepsilon avatar pepperlola avatar pingisfun avatar smonnnn avatar thecatcore avatar thedude7054 avatar toooair avatar v-tron avatar yhrc avatar zedekblue avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

fabric---discord-link's Issues

Discord Images to direct clickable link in chat?

I recently switched from Paper to Vanilla and the only thing I particularly miss from the plugin I was using before is that images that get dropped into the Discord chat linked to the game would get sent to Minecraft chat as a clickable link. I could get some idea of what it was and open it in a browser without switching back to Discord. Right now it just shows a blank message with [username] and nothing following it. Any chance this could be added in the future?

Unhandled incorrect escape strings

When I send a message from discord containing a , an error is thrown about an incomplete/incorrect escape string , which causes a server crash:

java.lang.IllegalArgumentException: character to be escaped is missing

This has not been tested for the other way

Disable Server Start/Stop Messages

I removed the contents of minecraftToDiscord in the config, but when the server starts they are repopulated and the messages print anyway. How can I disable the start/stop messages?

Remove useCustomMessage in favor of just using a default string

The suggestion

Remove the useCustomMessage field in the message configurations.
Example of where it exists:

"playerJoined": {
  "customMessage": "%player joined the game",
  "useCustomMessage": true
}

I personally see little to no reason for it to exist, especially since it is set to true by default.
Its use is also inconsistent, e.g. it exists for playerJoined but does not for serverStarted.
Just reading the string like in that case would be sufficient.

I suggest just always reading the string provided, and having it set to a default message when generating the config.

Config option "joinAndLeftMessages" is gramatically inconsistent

This may be overly picky, but it is still an issue. Propably an oversight.

The boolean option for disabling join and leave messages is gramatically inconsistent. (joinAndLeftMessages)
"Join" is active and in the present, while "Left" is in the past.

It should either be:

  1. joinedAndLeftMessages
  2. joinAndLeaveMessages

I prefer the second option, as the joining/leaving is an active process.

Is it possible to add player count to the bot activity?

Is your feature request related to a problem?
Ease of access to player count.

The suggestion
Is it possible to add player count to bot activity, or even make the message configurable? Here's an image of 2 bots I use (yours and discord integration for forge), showing what it would look like. [Harmony] is running your mod.

image

Alternatives
N/A

For the record your mod works fantastically and if you can't, then having player count in the description is good enough! Just thought it'd be a nice QOL change

Crashes on load

Loaded fine without token. Once I added token to the cfg, it crashed on load.

java.lang.NullPointerException: null
at fr.arthurbambou.fblink.discordstuff.DiscordBot.(DiscordBot.java:42) ~[?:?]
at fr.arthurbambou.fblink.FBLink.onInitializeServer(FBLink.java:23) ~[?:?]
at java.lang.Iterable.forEach(Unknown Source) ~[?:1.8.0_201]
at net.minecraft.class_3176.handler$setupServer$zzb000(class_3176.java:685) ~[?:?]

Channel Description is not always updated

Hey there,
first off, I love this mod! It's amazing what you have done, and that there such a lightweight solution to a discord integration

I just stumbled across one issue, which is that the Channel description for some reason gets stuck to one value.

One server I'm running currently has the channel description

player count : 6/20,
uptime : 0 h 41 min 21 second

Even tho the sever has been running for almost 24 hours now, and the number of player fluctuates quite a bit over the day. I think 6 has been the max at one time yet, but I can't really say if that causes the issue.

Currently running FDLInk 0.4.4 on 1.16.1 with fabricApi 0.16 build 384 and lithium 0.5.1

Would be lovely if you could have a look into this :3
Thanks in advance!
~ Aza

Inconsistent Naming Conventions in Config

I just noticed that some of the properties in the config are UpperCamelCase, but others are lowerCamelCase. This isn't a bug exactly, but it does look odd.

    "booleans": {
      "customChannelDescription": false,
      "MCtoDiscordTag": false,
      "PlayerMessages": true,
      "JoinAndLeftMessages": true,
      "AdvancementMessages": true,
      "LogMessages": true,
      "DeathMessages": true
    }
  }

The mod overall is great and very easy to use!

Mod spams unhandled text messages in the console

Whenever any other mod or whatever writes a message to the console, Fabric-Discord link will throw an unhandled text error, duplicating the message before it. This causes a lot of unnecessary spam in the console, and clutters the log.

image

The image is of an example where a chunk pregenerator has all of its messages duplicated by FDLink.

[QUESTION] Localizating messages

I was wondering how the mod gets the server message like advancements and player join/leave messages.
Is it getting the already formatted text, or the message class and if it's the second case, is their a possiblity to provide a custom language file to format the messages?

Entering wrong command stops server

It seems like the mod cannot handle the message the server sends when you enter an incorrect command in the terminal.

[22:10:57] [Server thread/INFO]: Unknown or incomplete command, see below for error
[22:10:57] [Server thread/ERROR]: Encountered an unexpected exception
java.lang.ClassCastException: net.minecraft.class_2585 cannot be cast to net.minecraft.class_2588
        at fr.arthurbambou.fdlink.discordstuff.todiscord.MinecraftToDiscordHandler.handleTexts(MinecraftToDiscordHandler.java:188) ~[FDLink-0.4.1.jar:?]
        at fr.arthurbambou.fdlink.discordstuff.DiscordBot.sendMessage(DiscordBot.java:165) ~[FDLink-0.4.1.jar:?]
        at net.minecraft.server.MinecraftServer.handler$zfp000$sendMessage(MinecraftServer.java:3198) ~[intermediary-server.jar:?]
        at net.minecraft.server.MinecraftServer.method_9203(MinecraftServer.java:987) ~[intermediary-server.jar:?]
        at net.minecraft.class_2168.method_9213(class_2168.java:237) ~[intermediary-server.jar:?]
        at net.minecraft.class_2170.method_9249(class_2170.java:265) ~[intermediary-server.jar:?]
        at net.minecraft.class_3176.method_13941(class_3176.java:334) ~[intermediary-server.jar:?]
        at net.minecraft.class_3176.method_3813(class_3176.java:307) ~[intermediary-server.jar:?]
        at net.minecraft.server.MinecraftServer.method_3748(MinecraftServer.java:813) ~[intermediary-server.jar:?]
        at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:672) ~[intermediary-server.jar:?]
        at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:256) ~[intermediary-server.jar:?]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191]

Class casting exception

I got this exception with no apparent cause, similar to issue #77

ERROR: net.minecraft.class_2585 cannot be cast to net.minecraft.class_2588

The server then stops.

tellraw @a messages not being sent to Discord

Hi, I'm using Fabric-Discord Link v0.7.16 on the latest build of Fabric for 1.16.3. Everything is working fine, apart from tellraw @A messages, which aren't being sent to Discord. I have the atATellRaw option set to true in fdlink.json and I haven't touched the atATellRaw option in messages.json (it's still set to "%messages"). I have a few datapacks in my world that use functions to send messages to all players using /tellraw @A (no sub-selectors, just straight-up "@A") but none of these messages are appearing in Discord. All other messages (join/leave messages, player messages, death messages, advancement messages, admin commands, etc.) are being sent to Discord perfectly fine. The only mods I have installed alongside Fabric-Discord Link are Lithium, Phosphor, Carpet (with two extensions), and obviously the Fabric API, none of which should affect Fabric-Discord Link in any way. Any idea what the problem could be? Thanks for your help :)

Make discord channel topic configurable

Is your feature request related to a problem?
The configuration supports the "customChannelDescription" flag to automatically update the discord topic every few minutes. But there isn't anything "custom" about the description as the format is hardcoded to look like this:

Playercount : 3/20,
Uptime : 120h 1m 24s

The suggestion
The channel description should support a custom format string that is used to generate the actual channel topic that gets set. Various placeholders can be used in the same way as for custom messages. The set of placeholders should include:

  • %playercount: The current number of players connected to the server
  • %maxplayercount: The maximum number of players that can connect to the server at once.
  • %uptime: The uptime of the server, formatted to include hours, minutes, and seconds.
  • %motd: The server's message of the day.
  • %datetime: The current date and time, formatted to include day, month, year, hours, minutes, and seconds.
  • others??

For parity with current behaviour, the default format string should be "Playercount : %playercount/%maxplayercount, Uptime : %uptime". This format can be modified by changing value of minecraftToDiscord.messages.channelDescription in fdlink.json.

Alternatives
Since the topic string is hardcoded, there are no alternatives to achieving a custom channel topic with dynamic parameters.

Internal Server Error when completing challenge / getting advancement

I noticed that I get kicked every time after getting an advancement (technically) with the message "internal server error" in the client.

The error message from the logs is as follows:

14:12:26 CONSOLE: thread/WARN]: Failed to handle packet for /XX.XX.XX.X:XXXXX
14:12:26 CONSOLE: java.lang.ClassCastException: net.minecraft.class_2585 cannot be cast to net.minecraft.class_2588
14:12:26 CONSOLE: Azahliil has left.

My guess (and it's just a guess, it might be caused by something completely different) is that this has something to do with fdlink, as the advancemnets don't get announced in discord.

Server:

  • fabric 0.9.1 build.205

Mods:

  • lithium 1.16.1-0.51
  • FDLink 0.5.1
  • fabric api build.385

My FDLink Config:

{
  "token": "XXXXX",
  "chatChannels": [
    "XXXXX"
  ],
  "logChannels": [
    "XXXXX"
  ],
  "ignoreBots": true,
  "minecraftToDiscord": {
    "general": {
      "enableDebugLogs": false
    },
    "messages": {
      "playerMessage": {
        "customMessage": "\u003c%player\u003e %message",
        "useCustomMessage": true
      },
      "serverStarting": "**Server is starting !**",
      "serverStarted": "**Server Started**",
      "serverStopping": "**Server is stopping!**",
      "serverStopped": "**Server Stopped**",
      "playerJoined": {
        "customMessage": "**%player joined the game**",
        "useCustomMessage": true
      },
      "playerJoinedRenamed": {
        "customMessage": "**%new (formerly known as %old) joined the game**",
        "useCustomMessage": true
      },
      "playerLeft": {
        "customMessage": "**%player left the game**",
        "useCustomMessage": true
      },
      "advancementTask": {
        "customMessage": "**%player has made the advancement %advancement**",
        "useCustomMessage": true
      },
      "advancementChallenge": {
        "customMessage": "**%player has completed the challenge %advancement**",
        "useCustomMessage": true
      },
      "advancementGoal": {
        "customMessage": "**%player has reached the goal %advancement**",
        "useCustomMessage": true
      },
      "deathMsgPrefix": ":skull_crossbones: **",
      "deathMsgPostfix": "**"
    },
    "chatChannels": {
      "commandPrefix": "-",
      "allowDiscordCommands": true,
      "serverStartingMessage": true,
      "serverStartMessage": true,
      "serverStopMessage": true,
      "serverStoppingMessage": true,
      "customChannelDescription": false,
      "minecraftToDiscordTag": false,
      "minecraftToDiscordDiscriminator": false,
      "playerMessages": true,
      "joinAndLeaveMessages": true,
      "advancementMessages": true,
      "challengeMessages": true,
      "goalMessages": true,
      "deathMessages": true,
      "sendMeCommand": false,
      "sendSayCommand": true,
      "adminMessages": false
    },
    "logChannels": {
      "serverStartingMessage": true,
      "serverStartMessage": true,
      "serverStopMessage": true,
      "serverStoppingMessage": true,
      "customChannelDescription": false,
      "minecraftToDiscordTag": false,
      "minecraftToDiscordDiscriminator": false,
      "playerMessages": false,
      "joinAndLeaveMessages": true,
      "advancementMessages": false,
      "challengeMessages": false,
      "goalMessages": false,
      "deathMessages": true,
      "sendMeCommand": true,
      "sendSayCommand": true,
      "adminMessages": true
    }
  },
  "discordToMinecraft": {
    "pingLongVersion": false,
    "message": "[%player] %message",
    "commandPrefix": "!"
  },
  "emojiMap": [
    {
      "name": "example_name",
      "id": ":example_id:22222222"
    },
    {
      "name": "example_name2",
      "id": ":example_id2:22222222"
    }
  ]
}

The log channel is on a different discord server if that makes any difference

Thank you so much in advance :3

Duplicate Messages in Discord

Discord bot commonly repeats a discord message multiple times in a row. It happens for all types of messages except the server startup and stopping messages. It happens for about 1/4 messages. It seems very common on the join/leave messages.

Webhooks Support

Sorry if this exists and I'm not seeing it, but webhooks is a feature that would enhance the mod greatly, is largely the draw of DiscordSRV, and would make the mod generally much better.

Escape player usernames in discord

If a players name, for example contains text being used by discord to format, for example x__gamer__x, this text will be displayed in discord formatted.
Escaping usernames like x_gamer_x -> x\_gamer\_x would prevent this.

Split message configuration into seperate file

Is your feature request related to a problem?

When I started documenting the current options of Fabric-Discord-Link, I noticed how many individual settings there are.
The current configuration file has an overwhelming amount of options that can make it quite hard to edit or document.
This is especially demonstrated by multiple message fields existing, one of which (for discordToMinecraft is buried inbetween other settings.

The suggestion

Create a new configuration file messages.json containing all custom message texts.

It would contain the following contents in combination with issue #108 (removing useCustomMessage):

{
  "minecraftToDiscord": {
     "playerMessage": "[%player] %message",
     "serverStarting": "Server is starting!",
     "serverStarted": "Server Started.",
     "serverStopping": "Server is stopping!",
     "serverStopped": "Server Stopped.",
     "playerJoined": "%player joined the game",
     "playerJoinedRenamed": "%new (formerly known as %old) joined the game",
     "playerLeft": "%player left the game",
     "advancementTask": "%player has made the advancement %advancement",
     "advancementChallenge": "%player has completed the challenge %advancement",
     "advancementGoal": "%player has reached the goal %advancement",
     "deathMsgPrefix": "",
     "deathMsgPostfix": ""
  },
  "discordToMinecraft": {
     "message": "[%player] %message"
  }
}

The directory structure would look like this, with a folder fdlink containing both files:
grafik

Benefits

  • Easily import/export existing message configuration
  • Split documentation and make it more readable
  • Differentiation between options and messages, clearer editing

Considerations

  • Provide an upgrade routine from the old config, e.g. copying values over to the new file to prevent data loss
  • Evaluate whether emojiMap also belongs into messages

Mod prevents shutdown of server on 1.16.1

When I use Fabric-Discord Link on a 1.16.1 server, everything works nicely until I stop the server .. somehow the Fabric launcher process never stops .. by process of elimination (adding/removing mods), I pinpointed the issue to this specific mod. The bot nicely posts "Server stopped" into Discord and goes offline, but the launcher doesn't terminate.

Using Fabric 0.8.8-build 202, Fabric-API 0.13-build 370 and Fabric-Discord Link 0.3.6 downloaded from curseforge. OS is CentOS 8.1, Java is OpenJDK 1.8

Using the mod disables the ability to chat ingame

Hey this one totally stumped me, I didn't even think it was this mod at first and just maybe a setting I missed somewhere, but I narrowed it down to the problem being the mod. While enabled We cannot talk in game. Discord chat shows up in game however. When I disabled the mod then we could chat ingame again. Is it not meant to work both ways?

Make death message configurable

Problem

Death messages like "Player was slain by Silverfish" can't be modified in the config.
However, I would like to be able to append or prepend emojis or even just set a static message.

Example:
grafik

The suggestion

Seeing as pretty much all messages (playerJoined etc.) are already configurable, I wish there was support for setting a custom death message as well.

As for replacable things in the config, I suggest having:

  1. %player: The name of the player who died, extracted from the death event
  2. %deathmsg: Part of the death string after the player name (e.g. was slain by Silverfish).
    Should be achievable by splitting the string, as it seems like vanilla death messages always adhere to the same format, being: playername was ....

Here's what the default config option should look like:

"minecraftToDiscord": {
      "messages": {
            ...
            "deathMessage": "%player %deathmsg",
            ...
      }
}

server crash on getting advancement

Since updating to 1.16.2 and FDLink 0.6.0 our server crashes anytime someone gets an advancement, if the gamerule announceAdvancements is true.

The console output when it happens:

Server thread/INFO 10:46:08
Azahliil has made the advancement [Diamonds!]
Server thread/ERROR 10:46:08
Encountered an unexpected exception
Console 10:46:08
net.minecraft.class_148: Ticking entity
at net.minecraft.server.MinecraftServer.method_3813(MinecraftServer.java:872) ~[intermediary-server.jar:?]
at net.minecraft.class_3176.method_3813(class_3176.java:303) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_3748(MinecraftServer.java:808) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.handler$zdb000$modifiedRunLoop(MinecraftServer.java:3297) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:648) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:254) ~[intermediary-server.jar:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.lang.ClassCastException: class net.minecraft.class_2588 cannot be cast to class net.minecraft.class_2585 (net.minecraft.class_2588 and net.minecraft.class_2585 are in unnamed module of loader net.fabricmc.loader.launch.knot.KnotClassLoader @54422e18)
at fr.arthurbambou.fdlink.discordstuff.todiscord.MinecraftToDiscordHandler.lambda$new$4(MinecraftToDiscordHandler.java:123) ~[e0aad90e-3d8d-44d3-9b59-5922b109a62b.jar:?]
at fr.arthurbambou.fdlink.discordstuff.todiscord.MinecraftToDiscordHandler$TextHandler.handle(MinecraftToDiscordHandler.java:303) ~[e0aad90e-3d8d-44d3-9b59-5922b109a62b.jar:?]
at fr.arthurbambou.fdlink.discordstuff.todiscord.MinecraftToDiscordHandler.handleTexts(MinecraftToDiscordHandler.java:266) ~[e0aad90e-3d8d-44d3-9b59-5922b109a62b.jar:?]
at fr.arthurbambou.fdlink.discordstuff.DiscordBot.sendMessage(DiscordBot.java:201) ~[e0aad90e-3d8d-44d3-9b59-5922b109a62b.jar:?]
at net.minecraft.server.MinecraftServer.handler$zbi000$sendMessage(MinecraftServer.java:2199) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_9203(MinecraftServer.java:982) ~[intermediary-server.jar:?]
at net.minecraft.class_3324.method_14616(class_3324.java:810) ~[intermediary-server.jar:?]
at net.minecraft.class_2985.method_12878(class_2985.java:209) ~[intermediary-server.jar:?]
at net.minecraft.class_179$class_180.method_796(class_179.java:35) ~[intermediary-server.jar:?]
at net.minecraft.class_4558.method_22510(class_4558.java:72) ~[intermediary-server.jar:?]
at net.minecraft.class_2066.method_24362(class_2066.java:54) ~[intermediary-server.jar:?]
at net.minecraft.class_2066.method_8950(class_2066.java:50) ~[intermediary-server.jar:?]
at net.minecraft.class_3222.method_7635(class_3222.java:1007) ~[intermediary-server.jar:?]
at net.minecraft.class_1703.method_7623(class_1703.java:133) ~[intermediary-server.jar:?]
at net.minecraft.class_3222.method_5773(class_3222.java:379) ~[intermediary-server.jar:?]
at net.minecraft.class_3218.method_18762(class_3218.java:616) ~[intermediary-server.jar:?]
at net.minecraft.class_1937.method_18472(class_1937.java:561) ~[intermediary-server.jar:?]
at net.minecraft.class_3218.method_18765(class_3218.java:406) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_3813(MinecraftServer.java:868) ~[intermediary-server.jar:?]
... 6 more
Server thread/ERROR 10:46:08
This crash report has been saved to: /home/amp/.ampdata/instances/Server/Minecraft/./crash-reports/crash-2020-08-15_10.46.08-server.txt
Server thread/INFO 10:46:08
Stopping server
Saving players

And heres the crash report:
https://pastebin.com/ufg841cx

Thanks in advance for your time :3

[Important] New Discord API Changes and Requirements

Here is a list of changes that may or may not be fixed already, but are important to make sure are fixed

  • On May 4th, discord announced that they are migrating most of the API from discordapp.com to discord.com. Currently both are supported, however on November 7th, discordapp.com will no longer work, and all applications and bots currently using it will no longer function.
  • On October 7th, bots that are in more than 100 servers or more, and are not verified will be unable to join more servers. Getting a bot verified requires legal identification. You can read discords blog post about this. Bots can get verified once they are in 75 or more servers, and will only be restricting once reaching 100 servers.
  • Discord is updating its API from v6 to v8. v8 is not "finished" yet from discords end, so v6 will still be around for a while, however v8 has many breaking changes that should be accounted for. v6 is also getting new features like intents, which will not allow bots to access Guild Members or Presences unless you either have the bot ask for this intent when connecting to discord, or by enabling it in the Developer Dashboard.

A lot of this stuff is probably covered by whatever discord library you use (assuming you do in fact use one), but I am sharing this just to be sure you are aware of these changes, and so you update the library if you have not recently.

[1.16-20w19a] Crashes as soon as I launch server.

Hey, can't get this to work on the latest snapshot 20W19A.
Is this known?

  • Gbergz

Using latest version released: FDLink-0.3.3.jar [1.16]
Fabric API version: [20w19a] Fabric API 0.10.7 build 344

Screenshot:
image

Server Log Messages are Not Relayed

Player messages go into discord chat but server logs do not.
Here is my config file

{
  "token": "NjY4NDY5NzA5NjMyNTY5MzY0.XprZ7A.8PhrkiCh3fdyACKYtq4YYQwloFY",
  "discordToMinecraft": "<%player> %message",
  "chatChannels": [
    "701009107859144745"
  ],
  "logChannels": [
    "701013116279849000"
  ],
  "ignoreBots": true,
  "minecraftToDiscord": {
    "messages": {
      "serverStarting": "Server is starting!",
      "serverStarted": "Server Started",
      "serverStopped": "Server Stopped"
    },
    "booleans": {
      "customChannelDescription": false,
      "MCtoDiscordTag": false,
      "PlayerMessages": true,
      "JoinAndLeftMessages": true,
      "AdvancementMessages": true,
      "LogMessages": true,
      "DeathMessages": true
    }
  }
}

My bot is here. If you can't view it and need to, tell me what to do so you can.

Command to link arbitrary Discord and Minecraft usernames

Currently usernames are linked by searching for the Minecraft username in the Discord server and replacing the username with the Discord mention tag. This works for people who have usernames that match, but for everyone.

Some options I see, from simplest to most complex:

  • Have a config file to associate a Minecraft user with a Discord user
    • Server owner would take care of authentication
  • Have an Op command to associate a Minecraft user with a Discord user
    • Op would take care of authentication
  • Have a bidirectional, unprivileged command to associate a Minecraft user with a Discord user
    • Would require both sides to accept
    • Would require the Discord bot receiving data

Server crashing on startup

I am trying to run a server with following mods:

  • lithium
  • phosphor
  • fabric-api
  • spark
  • discord-link

I have filled in the config file but I am getting this error on startup:

[14:47:35] [main/INFO]: Loading for game Minecraft 1.16.1
[14:47:36] [main/INFO]: [FabricLoader] Loading 58 mods: [email protected]+eae12eb802, [email protected]+3fa9f7c502, [email protected]+build.204, [email protected], [email protected], [email protected], [email protected], [email protected]+045df74f02, [email protected]+a2d21ddd02, [email protected]+a71b305302, [email protected], [email protected], [email protected]+12a8474c02, [email protected]+b7f9825d02, [email protected]+eae12eb802, [email protected]+b7084faa02, [email protected], [email protected], [email protected]+c6a8ea8902, [email protected]+013e49d202, [email protected]+5a0f9a6002, [email protected]+386eb69e02, [email protected], [email protected], [email protected]+build.380-1.16.1, [email protected]+0a6f2a7002, [email protected]+e00ecb5f02, [email protected], [email protected], [email protected]+97324d1102, [email protected]+b50ffc7b02, [email protected]+5ce5339802, [email protected], [email protected]+build.7, [email protected]+5794386e02, [email protected]+0a55f37902, [email protected]+059ea86602, [email protected]+16acbe5b02, [email protected]+7066030f02, [email protected]+b7f9825d02, [email protected], [email protected]+5341049002, [email protected]+346247d702, [email protected]+f404f3be02, [email protected]+f41e209802, [email protected]+059ea86602, org_json_json@20170516, [email protected]+a4c57d8e02, [email protected]+7dba2d6c02, [email protected]+52d3083602, [email protected], [email protected]+b764ce9902, [email protected], [email protected]+16acbe5b02, [email protected]+dfdb52d602, [email protected]+438f963602, [email protected]+a2d21ddd02, [email protected]
[14:47:36] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8 Source=file:/opt/minecraft/vanilla/fabric-server-launch.jar Service=Knot/Fabric Env=SERVER
[14:47:38] [main/WARN]: @Mixin target net/minecraft/class_3898$class_3208 is public in fabric-networking-[14:47:41] [main/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', name='PROD'
[14:47:43] [WritingThread/INFO]: Websocket closed with reason 'Authentication failed.' and code AUTHENTICATION_FAILED (4004) by server!
[14:47:43] [main/FATAL]: Failed to start the minecraft server
java.lang.RuntimeException: Could not execute entrypoint stage 'server' due to errors, provided by 'fdlink'!
        at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke0(EntrypointUtils.java:53) ~[fabric-server-launch.jar:?]
        at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke(EntrypointUtils.java:36) ~[fabric-server-launch.jar:?]
        at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointServer.start(EntrypointServer.java:33) ~[fabric-server-launch.jar:?]
        at net.minecraft.server.Main.main(Main.java:125) [intermediary-server.jar:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:192) [fabric-server-launch.jar:?]
        at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:140) [fabric-server-launch.jar:?]
        at net.fabricmc.loader.launch.knot.KnotServer.main(KnotServer.java:26) [fabric-server-launch.jar:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at net.fabricmc.loader.launch.server.FabricServerLauncher.launch(FabricServerLauncher.java:61) [fabric-server-launch.jar:?]
        at net.fabricmc.loader.launch.server.FabricServerLauncher.setup(FabricServerLauncher.java:105) [fabric-server-launch.jar:?]
        at net.fabricmc.loader.launch.server.FabricServerLauncher.main(FabricServerLauncher.java:49) [fabric-server-launch.jar:?]
Caused by: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Websocket closed before READY packet was received!
        at java.util.concurrent.CompletableFuture.reportJoin(CompletableFuture.java:412) ~[?:?]
        at java.util.concurrent.CompletableFuture.join(CompletableFuture.java:2044) ~[?:?]
        at fr.arthurbambou.fdlink.discordstuff.DiscordBot.<init>(DiscordBot.java:77) ~[FDLink-0.4.4.jar:?]
        at fr.arthurbambou.fdlink.FDLink.onInitializeServer(FDLink.java:27) ~[FDLink-0.4.4.jar:?]
        at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke0(EntrypointUtils.java:50) ~[fabric-server-launch.jar:?]
        ... 17 more
Caused by: java.lang.IllegalStateException: Websocket closed before READY packet was received!
        at org.javacord.core.DiscordApiImpl.lambda$new$6(DiscordApiImpl.java:529) ~[4c5368af-965c-4599-a72f-af8893ffdbf9.jar:?]
        at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859) ~[?:?]
        at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837) ~[?:?]
        at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) ~[?:?]
        at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073) ~[?:?]
        at org.javacord.core.util.gateway.DiscordWebSocketAdapter.onDisconnected(DiscordWebSocketAdapter.java:464) ~[4c5368af-965c-4599-a72f-af8893ffdbf9.jar:?]
        at com.neovisionaries.ws.client.ListenerManager.callOnDisconnected(ListenerManager.java:223) ~[f5967c76-560a-4e02-9804-dd41005bdfe2.jar:?]
        at com.neovisionaries.ws.client.WebSocket.finish(WebSocket.java:3713) ~[f5967c76-560a-4e02-9804-dd41005bdfe2.jar:?]
        at com.neovisionaries.ws.client.WebSocket.onThreadsFinished(WebSocket.java:3683) ~[f5967c76-560a-4e02-9804-dd41005bdfe2.jar:?]
        at com.neovisionaries.ws.client.WebSocket.onWritingThreadFinished(WebSocket.java:3672) ~[f5967c76-560a-4e02-9804-dd41005bdfe2.jar:?]
        at com.neovisionaries.ws.client.WritingThread.notifyFinished(WritingThread.java:539) ~[f5967c76-560a-4e02-9804-dd41005bdfe2.jar:?]
        at com.neovisionaries.ws.client.WritingThread.runMain(WritingThread.java:78) ~[f5967c76-560a-4e02-9804-dd41005bdfe2.jar:?]
        at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45) ~[f5967c76-560a-4e02-9804-dd41005bdfe2.jar:?]

I think its caused by the constructor of DiscordBot here:

this.api = new DiscordApiBuilder().setToken(token).login().join();
        MessageCreateListener messageCreateListener = (event -> {
            if (event.getMessageAuthor().isBotUser() && this.config.ignoreBots) return;
            if (!this.hasChatChannels) return;
            if (event.getMessageAuthor().isYourself()) return;
            if (!this.config.chatChannels.contains(event.getChannel().getIdAsString())) return;
            this.messageCreateEvent = event;
            this.hasReceivedMessage = true;
        });

\ character causes this log

When the \ character is typed into discord, the server crashes with this log:

java.lang.IllegalArgumentException: character to be escaped is missing
	at java.util.regex.Matcher.appendReplacement(Matcher.java:809) ~[?:1.8.0_242]
	at java.util.regex.Matcher.replaceAll(Matcher.java:955) ~[?:1.8.0_242]
	at java.lang.String.replaceAll(String.java:2223) ~[?:1.8.0_242]
	at fr.arthurbambou.fdlink.discordstuff.DiscordBot.lambda$new$5(DiscordBot.java:139) ~[FDLink-0.4.2.jar:?]
	at net.fabricmc.fabric.impl.event.lifecycle.LegacyEventInvokers.lambda$onInitialize$2(LegacyEventInvokers.java:33) ~[0eebcb02-f9cf-452b-a698-e96e177dea57.jar:?]
	at net.minecraft.server.MinecraftServer.handler$zzp000$onEndTick(MinecraftServer.java:1735) ~[intermediary-server.jar:?]
	at net.minecraft.server.MinecraftServer.method_3748(MinecraftServer.java:855) ~[intermediary-server.jar:?]
	at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:672) ~[intermediary-server.jar:?]
	at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:256) ~[intermediary-server.jar:?]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242]```

Random Crashes

The mod causes random crashes during the day, users are given a stack overflow error. The logs include this tidbit:

	at fr.arthurbambou.fdlink.discordstuff.todiscord.MinecraftToDiscordHandler.handleTexts(MinecraftToDiscordHandler.java:188) ~[FDLink-0.4.1.jar:?]
	at fr.arthurbambou.fdlink.discordstuff.DiscordBot.sendMessage(DiscordBot.java:165) ~[FDLink-0.4.1.jar:?]
	at net.minecraft.server.MinecraftServer.handler$zff000$sendMessage(MinecraftServer.java:2198) ~[intermediary-server.jar:?]
	at net.minecraft.server.MinecraftServer.method_9203(MinecraftServer.java:987) ~[intermediary-server.jar:?]
	at net.minecraft.class_2168.method_9213(class_2168.java:237) ~[intermediary-server.jar:?]
	at net.minecraft.class_2170.method_9249(class_2170.java:265) ~[intermediary-server.jar:?]
	at net.minecraft.class_3176.method_13941(class_3176.java:334) ~[intermediary-server.jar:?]
	at net.minecraft.class_3176.method_3813(class_3176.java:307) ~[intermediary-server.jar:?]
	at net.minecraft.server.MinecraftServer.method_3748(MinecraftServer.java:813) ~[intermediary-server.jar:?]
	at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:672) ~[intermediary-server.jar:?]
	at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:256) ~[intermediary-server.jar:?]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242]```

[BUG] Text cannot be cast to TranslatableText

Hello! I was recently helping a person out on the Fabricord support channel and i noticed a weird ClassCastException that crashed their server. When the intermediary is translated, it ends up to be an error with Text being casted to TranslatableText in the method handleTexts in the file MinecraftToDiscordHandler. Here's the error log:

---- Minecraft Crash Report ----
// I bet Cylons wouldn't have this problem.

Time: 7/11/20 4:58 PM
Description: Exception in server tick loop

java.lang.ClassCastException: net.minecraft.class_2585 cannot be cast to net.minecraft.class_2588
	at fr.arthurbambou.fdlink.discordstuff.todiscord.MinecraftToDiscordHandler.handleTexts(MinecraftToDiscordHandler.java:188)
	at fr.arthurbambou.fdlink.discordstuff.DiscordBot.sendMessage(DiscordBot.java:165)
	at net.minecraft.server.MinecraftServer.handler$zoi000$sendMessage(MinecraftServer.java:4698)
	at net.minecraft.server.MinecraftServer.method_9203(MinecraftServer.java:987)
	at net.minecraft.class_2168.method_9213(class_2168.java:237)
	at net.minecraft.class_2170.method_9249(class_2170.java:265)
	at net.minecraft.class_3176.method_13941(class_3176.java:334)
	at net.minecraft.class_3176.method_3813(class_3176.java:307)
	at net.minecraft.server.MinecraftServer.method_3748(MinecraftServer.java:813)
	at net.minecraft.server.MinecraftServer.handler$zio000$modifiedRunLoop(MinecraftServer.java:3796)
	at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:653)
	at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:256)
	at java.lang.Thread.run(Thread.java:748)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- System Details --
Details:
	Minecraft Version: 1.16.1
	Minecraft Version ID: 1.16.1
	Operating System: Linux (amd64) version 5.4.0-28-generic
	Java Version: 1.8.0_252, Private Build
	Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Private Build
	Memory: 4221595616 bytes (4026 MB) / 9737076736 bytes (9286 MB) up to 11453595648 bytes (10923 MB)
	CPUs: 16
	JVM Flags: 1 total; -Xmx12G
	Fabric Mods: 
		carpet: Carpet Mod in Fabric 1.4.0
		carpet-extra: Carpet Extra 1.4.0
		com_fasterxml_jackson_core_jackson-annotations: jackson-annotations 2.9.0
		com_fasterxml_jackson_core_jackson-core: jackson-core 2.9.3
		com_fasterxml_jackson_core_jackson-databind: jackson-databind 2.9.3
		com_neovisionaries_nv-websocket-client: nv-websocket-client 2.6
		com_squareup_okhttp3_logging-interceptor: logging-interceptor 3.9.1
		com_squareup_okhttp3_okhttp: okhttp 3.9.1
		com_squareup_okio_okio: okio 1.13.0
		com_vdurmont_emoji-java: emoji-java 5.1.1
		fabric: Fabric API 0.13.1+build.370-1.16
		fabric-api-base: Fabric API Base 0.1.3+12a8474c7c
		fabric-biomes-v1: Fabric Biomes (v1) 0.2.7+059ea8667c
		fabric-command-api-v1: Fabric Command API (v1) 1.0.8+5ce533987c
		fabric-commands-v0: Fabric Commands (v0) 0.2.0+52d308367c
		fabric-containers-v0: Fabric Containers (v0) 0.1.8+045df74f7c
		fabric-content-registries-v0: Fabric Content Registries (v0) 0.1.9+059ea8667c
		fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.1.2+b7f9825d7c
		fabric-dimensions-v1: fabric-dimensions-v1 1.0.0+a71b30537c
		fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.3.3+7066030f7c
		fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.1.3+0d474ec47c
		fabric-item-groups-v0: Fabric Item Groups (v0) 0.2.0+438f96367c
		fabric-loot-tables-v1: Fabric Loot Tables (v1) 0.1.10+059ea8667c
		fabric-mining-levels-v0: Fabric Mining Levels (v0) 0.1.2+b764ce997c
		fabric-networking-blockentity-v0: Fabric Networking Block Entity (v0) 0.2.5+b50ffc7b7c
		fabric-networking-v0: Fabric Networking (v0) 0.1.10+e00ecb5f7c
		fabric-object-builder-api-v1: Fabric Object Builder API (v1) 1.5.5+e00ecb5f7c
		fabric-object-builders-v0: Fabric Object Builders (v0) 0.6.0+da175ad67c
		fabric-particles-v1: fabric-particles-v1 0.2.1+0a6f2a707c
		fabric-registry-sync-v0: Fabric Registry Sync (v0) 0.3.8+7dba2d6c7c
		fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.1.3+b7f9825d7c
		fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.2.5+059ea8667c
		fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.0.1+f362c86e7c
		fabric-tag-extensions-v0: Fabric Tag Extensions (v0) 0.2.5+5a6e8f4c7c
		fabric-tool-attribute-api-v1: Fabric Tool Attribute API (v1) 1.1.4+5794386e7c
		fabricloader: Fabric Loader 0.8.8+build.202
		fdlink: Fabric <-> Discord Link 0.4.1
		lithium: Lithium 0.5.0-rc1
		minecraft: Minecraft 1.16.1
		org_apache_logging_log4j_log4j-api: log4j-api 2.11.0
		org_javacord_javacord-api: javacord-api 3.0.6
		org_javacord_javacord-core: javacord-core 3.0.6
		org_json_json: json 20170516
		phosphor: Phosphor 0.6.0+build.7
		sampler: Sampler 1.92
		trampoline: Trampoline 1.0.0
	Player Count: 15 / 100; [EntityPlayerMPFake['Goldfarm'/220, l='ServerLevel[world]', x=20550.50, y=202.00, z=67430.50], EntityPlayerMPFake['WitchFarm'/1178, l='ServerLevel[world]', x=40547.50, y=183.00, z=758517.50], class_3222['Awesomistika'/297378, l='ServerLevel[world]', x=34913.95, y=68.00, z=132560.09], class_3222['FoxyExtrovert'/176548, l='ServerLevel[world]', x=152061.33, y=66.50, z=461724.04], class_3222['AnonymouSylveon'/379625, l='ServerLevel[world]', x=17296.69, y=39.00, z=1117881.74], class_3222['DolphieMelon'/400291, l='ServerLevel[world]', x=25.87, y=65.00, z=0.53], class_3222['keysinja'/421273, l='ServerLevel[world]', x=17209.48, y=64.00, z=1117907.81], class_3222['DasMeAyy'/407440, l='ServerLevel[world]', x=262895.88, y=74.00, z=374041.28], class_3222['TheManInARedCoat'/428190, l='ServerLevel[world]', x=6081.75, y=58.00, z=36888.02], class_3222['FoxyIntrovert'/45054, l='ServerLevel[world]', x=152118.13, y=74.00, z=461755.70], class_3222['ChristianDogDude'/437658, l='ServerLevel[world]', x=120044.70, y=47.00, z=49339.30], class_3222['Morkk95'/444567, l='ServerLevel[world]', x=14.76, y=65.00, z=-0.35], class_3222['B1ACKJACK3T'/176592, l='ServerLevel[world]', x=-63182.81, y=36.00, z=110703.91], class_3222['KidKongN'/457922, l='ServerLevel[world]', x=-12781.81, y=50.00, z=74583.48], class_3222['AlexAit'/460736, l='ServerLevel[world]', x=17.50, y=65.00, z=0.58]]
	Data Packs: vanilla, file/multiplayer sleep v1.0.1.zip (incompatible), file/player head drops v1.0.0.zip (incompatible), file/silence mobs v1.0.0.zip (incompatible), file/treecapitator-1.16 (incompatible), fabric/fabric-tool-attribute-api-v1, file/armour statues v2.6.2.zip, file/dragon drops v1.2.0.zip (incompatible), file/more mob heads v2.4.1.zip (incompatible), file/more_useful_husks (incompatible), file/anti ghast grief v1.0.0.zip (incompatible), file/anti enderman grief v1.0.0.zip (incompatible), file/templex, file/platypack_1.6.zip
	Is Modded: Definitely; Server brand changed to 'fabric'
	Type: Dedicated Server (map_server.txt)

I'm sorry if this is incorrect or if this is already an issue.

Add Server Player to Discord Member Link [Feature Request]

A MC Server command '/registerx that whispers the player a random 6 digit number. That person then DMs the bot and it links their MC accout to their Discord Account.

Then when a discord member chats to the server the bot can replace their discord name with their MC name (option in config?)

Other functions that can be added with this:

  • Music Bot?
  • Discord MC Player Statistics Commands?
  • Role based whitelist and OP list?

Weird messages in console

I'm not 100% sure it's this mod causing it, but I dunno what else would.

I'm getting messages like these spamming console every time someone chats in-game:

[Server] Server thread/INFO [STDOUT]: TranslatableComponent{key='chat.type.text', args=[TextComponent{text='PoetForTheDead', siblings=[], style=Style{hasParent=true, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=ClickEvent{action=SUGGEST_COMMAND, value='/tell PoetForTheDead '}, hoverEvent=HoverEvent{action=SHOW_ENTITY, value='TextComponent{text='{name:'{"text":"PoetForTheDead"}',id:"eb6bbf38-1e8e-44cf-a332-53587257b95b",type:"minecraft:player"}', siblings=[], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}'}, insertion=PoetForTheDead}}, I can read I swear], siblings=[], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}

And then messages like these every time someone chats in discord:

[Server] Server thread/INFO [STDOUT]: TextComponent{text='[Alicatt] i can type', siblings=[], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}

And these when people login or out:

[Server] Server thread/INFO [STDOUT]: TranslatableComponent{key='multiplayer.player.joined', args=[TextComponent{text='Kodamasa_', siblings=[], style=Style{hasParent=true, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=ClickEvent{action=SUGGEST_COMMAND, value='/tell Kodamasa_ '}, hoverEvent=HoverEvent{action=SHOW_ENTITY, value='TextComponent{text='{name:'{"text":"Kodamasa_"}',id:"90e367d8-7595-4080-95b6-f823182379eb",type:"minecraft:player"}', siblings=[], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}'}, insertion=Kodamasa_}}], siblings=[], style=Style{hasParent=false, color=, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}

[Server] Server thread/INFO [STDOUT]: TranslatableComponent{key='multiplayer.player.left', args=[TextComponent{text='Kodamasa_', siblings=[], style=Style{hasParent=true, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=ClickEvent{action=SUGGEST_COMMAND, value='/tell Kodamasa_ '}, hoverEvent=HoverEvent{action=SHOW_ENTITY, value='TextComponent{text='{name:'{"text":"Kodamasa_"}',id:"90e367d8-7595-4080-95b6-f823182379eb",type:"minecraft:player"}', siblings=[], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}'}, insertion=Kodamasa_}}], siblings=[], style=Style{hasParent=false, color=, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}

And some of them are partly yellow as well....so something is wonky in the code I think.

Add documentation

Hello. Excited to start using this mod, but some documentation would be highly appreciated. In particular, it would be nice to explain what all the options in the config file do exactly (what's the log channel for? What is customChannelDescription? What is minecraftToDiscordDiscriminator? and so on).

Wrong server uptime

The server uptime is displaying wrongly for me on Discord. When the server is up for 30 mins, it shows 30 seconds. Hours show minutes, minutes show as seconds. Is there a config I can change or is there a fix for this?

Adding support for more/custom Emoji

Perhaps json support or something to make it easiest.

{ "emoji": [ "Dia", "DiaB" ], "discordcode": [ "<:Dia:714419456574488576>", "<:DiaB:714419483191803944>" ] }

For example would allow the bot to translate custom discord emoji "Dia" and "DiaB" to and from Minecraft.

Embed and Player Skin

Is your feature request related to a problem?

It look better in my opinion

The suggestion

Use Discord Embed option to send message and put player avatar
Captura2
Captura2

I have some code to use (It is surely not the best code but if you want to implement it you can use it as a base I suppose)
Get Avatar: https://pastebin.com/pQHs1pEL (This code is spigot code, but I convert it to fabric, so possibly there are unnecessary things in the middle)
Embed with Avatar: https://pastebin.com/B7UMW5j3

(all code is my, so no problem if you use it in case you implement it)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.