thecatcore / fabric---discord-link Goto Github PK
View Code? Open in Web Editor NEWLicense: MIT License
License: MIT License
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?
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
FD: FDLink-0.2.7
crash :
crash-2020-01-30_20.57.00-server.txt
logs:
latest.log
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 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.
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:
joinedAndLeftMessages
joinAndLeaveMessages
I prefer the second option, as the joining/leaving is an active process.
Crash log: https://pastebin.com/V68AktqF
This happens every time someone on Discord's bridge channel types a line containing an $
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.
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
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) ~[?:?]
Server Crash report: https://paste.ee/p/f395R
Simply just joining the server and it crashes.
Latest version of Fabric Discord Link : 0.7.1
Crash log: https://mclo.gs/GguffDr
Thanks in advance :)
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
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!
https://hastebin.com/tarazemuwe.php
server crashes when user logs in.
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.
The image is of an example where a chunk pregenerator has all of its messages duplicated by FDLink.
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?
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]
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.
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 :)
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.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.
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:
Mods:
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
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.
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.
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.
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.
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:
emojiMap
also belongs into messagesWhen 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
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?
Title^
Snapshot: 20w21a - 1.16
Loader Version: 0.8.4+build198
Fabric API: fabric-api-0.10.10+build.347-1.16
FDLink Used: 0.3.4
Any ideas?
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.
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:
%player:
The name of the player who died, extracted from the death event%deathmsg
: Part of the death string after the player name (e.g. was slain by Silverfish).playername was ...
.Here's what the default config option should look like:
"minecraftToDiscord": {
"messages": {
...
"deathMessage": "%player %deathmsg",
...
}
}
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
Here is a list of changes that may or may not be fixed already, but are important to make sure are fixed
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.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.
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.
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:
I am trying to run a server with following mods:
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;
});
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]```
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]```
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.
Using the latest version of All Of Fabric 2.1.0
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:
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.
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).
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?
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.
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
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)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.