sb2bg / customdeathmessages Goto Github PK
View Code? Open in Web Editor NEWCustomDeathMessages from spigot
Home Page: https://www.spigotmc.org/resources/customdeathmessages-cdm.69605/
CustomDeathMessages from spigot
Home Page: https://www.spigotmc.org/resources/customdeathmessages-cdm.69605/
&7[&b%kill-weapon%&7] - on default same
[10:01:10 INFO]: yra2157 issued server command: /kill
[10:01:10 INFO]: yra2157 died
my player got died with vanilla message
So, I just downloaded this plug-in from spigotmc.org and It's not working. When I do a /reload it gives me the following error message:
[Server thread/ERROR]: Error occurred while enabling CustomDeathMessages v1.7.2 (Is it up to date?)
It obviously is up to date as I literally just downloaded it.
Edit: I'm on 1.16.5
I want to let my players use /nick but i want the death messages to display the dead player with red (&c) it looks really ugly when some players have a color on death message and other players another one,
I tried downloading the Placeholder API expansion for Essentials, used %essentials_nickname_stripped% but didn't work, it shows "%essentials_nickname_stripped%" as plain text...
I also tried with hex codes but it always shows Nickname color too, which i don't want,
Any way of doing it on current version that i don't know of?, or it isn't possible right now?
[22:12:21 INFO]: esrtk_wiitap was EZ clapped by kakih using %kill-weapon%
like this
Every time a player kills another player on my server, the death message reads "[victim] was slain by [killer]" even though I added custom death messages to the config file. I also ran it through a YAML linter and it is completely valid code. Again, all the death messages work fine except those which include a %killer% placeholder. It is also worth noting that player heads are not dropping even though I set the drop rate to 75%.
Here is the console error that reads when a player kills another player:
[01:05:53 ERROR]: Could not pass event CustomPlayerDeathEvent to CustomDeathMessages v2.0.1
java.lang.ExceptionInInitializerError: null
at CustomDeathMessages (CDM).69605.jar/org.spartandevs.customdeathmessages.listeners.CustomPlayerDeathListener.getKillWeapon(CustomPlayerDeathListener.java:102) ~[CustomDeathMessages (CDM).69605.jar:?]
at CustomDeathMessages (CDM).69605.jar/org.spartandevs.customdeathmessages.listeners.CustomPlayerDeathListener.onPlayerDeath(CustomPlayerDeathListener.java:38) ~[CustomDeathMessages (CDM).69605.jar:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor4.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[paper-api-1.21-R0.1-SNAPSHOT.jar:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-api-1.21-R0.1-SNAPSHOT.jar:1.21-123-0a1be9a]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paper-api-1.21-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[paper-1.21.jar:1.21-123-0a1be9a]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[paper-1.21.jar:1.21-123-0a1be9a]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[paper-api-1.21-R0.1-SNAPSHOT.jar:?]
at CustomDeathMessages (CDM).69605.jar/org.spartandevs.customdeathmessages.listeners.BukkitPlayerDeathListener.onPlayerDeath(BukkitPlayerDeathListener.java:54) ~[CustomDeathMessages (CDM).69605.jar:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor2.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[paper-api-1.21-R0.1-SNAPSHOT.jar:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-api-1.21-R0.1-SNAPSHOT.jar:1.21-123-0a1be9a]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paper-api-1.21-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[paper-1.21.jar:1.21-123-0a1be9a]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[paper-1.21.jar:1.21-123-0a1be9a]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[paper-api-1.21-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerDeathEvent(CraftEventFactory.java:1024) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.server.level.ServerPlayer.die(ServerPlayer.java:1038) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.world.entity.LivingEntity.hurt(LivingEntity.java:1586) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.world.entity.player.Player.hurt(Player.java:1002) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.server.level.ServerPlayer.hurt(ServerPlayer.java:1205) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.world.entity.player.Player.attack(Player.java:1344) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.server.level.ServerPlayer.attack(ServerPlayer.java:2417) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.server.network.ServerGamePacketListenerImpl$3.onAttack(ServerGamePacketListenerImpl.java:2796) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.network.protocol.game.ServerboundInteractPacket$1.dispatch(ServerboundInteractPacket.java:29) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.network.protocol.game.ServerboundInteractPacket.dispatch(ServerboundInteractPacket.java:89) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.server.network.ServerGamePacketListenerImpl.handleInteract(ServerGamePacketListenerImpl.java:2707) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.network.protocol.game.ServerboundInteractPacket.handle(ServerboundInteractPacket.java:76) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.network.protocol.game.ServerboundInteractPacket.handle(ServerboundInteractPacket.java:14) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$0(PacketUtils.java:56) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:151) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1537) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:201) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:125) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1514) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1507) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:135) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.server.MinecraftServer.managedBlock(MinecraftServer.java:1466) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1473) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1318) ~[paper-1.21.jar:1.21-123-0a1be9a]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:330) ~[paper-1.21.jar:1.21-123-0a1be9a]
at java.base/java.lang.Thread.run(Unknown Source) ~[?:?]
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
at CustomDeathMessages (CDM).69605.jar/org.spartandevs.customdeathmessages.util.Version.getServerVersion(Version.java:23) ~[CustomDeathMessages (CDM).69605.jar:?]
at CustomDeathMessages (CDM).69605.jar/org.spartandevs.customdeathmessages.util.Version.(Version.java:20) ~[CustomDeathMessages (CDM).69605.jar:?]
... 45 more
Hello how can I fix this? instead of getting the name of the mob, it just displays the hearts same as in the console log..
I am using BeautyIndicator plugin to put hearts UI on mobs health
Hello, I keep getting the below errors everytime a player gets killed, any way to fix this?
[13:14:58 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:14:58 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:14:58 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:01 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:01 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:01 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:01 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:01 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:01 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:01 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:01 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:01 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:01 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:01 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:01 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:04 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:04 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:04 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:04 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:04 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:04 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:04 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:04 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
[13:15:04 WARN]: [CustomDeathMessages] Death message for 6263b338-d753-366c-b14b-6f809fbe5ea3 was not propagated in time
Hello, I love your plugin! I just want to ask you, is there any option to configure message "You have no bed or charged respawn anchor, or it was obstructed"? I can not find it.
if player sometime after /kill it says default vanilla message 'Player died'
if i have off enable-item-on-hover: true it caused after kill player player died by player with kill-weapon
folia dont supported.
Please! Add support for folia
https://github.com/PaperMC/Folia
[12:18:25 WARN]: java.lang.NoSuchMethodException: com.mojang.authlib.properties.Property.getName()
[12:18:25 WARN]: at java.base/java.lang.Class.getMethod(Class.java:2259)
[12:18:25 WARN]: at CustomDeathMessages-2.0.1.jar//io.github.bananapuncher714.nbteditor.NBTEditor.(NBTEditor.java:264)
[12:18:25 WARN]: at CustomDeathMessages-2.0.1.jar//org.spartandevs.customdeathmessages.chat.ItemSerializer.serializeItemStack(ItemSerializer.java:13)
[12:18:25 WARN]: at CustomDeathMessages-2.0.1.jar//org.spartandevs.customdeathmessages.chat.HoverTransformers.populateKillWeapon(HoverTransforms.java:66)
[12:18:25 WARN]: at CustomDeathMessages-2.0.1.jar//org.spartandevs.customdeathmessages.chat.HoverTransformers.lambda$static$2(HoverTransforms.java:43)
[12:18:25 WARN]: at CustomDeathMessages-2.0.1.jar//org.spartandevs.customdeathmessages.chat.HoverTransformers.transform(HoverTransforms.java:83)
[12:18:25 WARN]: at CustomDeathMessages-2.0.1.jar//org.spartandevs.customdeathmessages.chat.HoverTransforms.transform(HoverTransforms.java:27)
[12:18:25 WARN]: at CustomDeathMessages-2.0.1.jar//org.spartandevs.customdeathmessages.chat.DeathMessage.getTextComponent(DeathMessage.java:21)
[12:18:25 WARN]: at CustomDeathMessages-2.0.1.jar//org.spartandevs.customdeathmessages.listeners.BukkitPlayerDeathListener.setDeathMessage(BukkitPlayerDeathListener.java:70)
[12:18:25 WARN]: at CustomDeathMessages-2.0.1.jar//org.spartandevs.customdeathmessages.events.CustomPlayerDeathEvent.setDeathMessage(CustomPlayerDeathEvent.java:32)
[12:18:25 WARN]: at CustomDeathMessages-2.0.1.jar//org.spartandevs.customdeathmessages.listeners.CustomPlayerDeathListener.onPlayerDeath(CustomPlayerDeathListener.java:92)
[12:18:25 WARN]: at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor862.execute(Unknown Source)
[12:18:25 WARN]: at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77)
[12:18:25 WARN]: at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77)
[12:18:25 WARN]: at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70)
[12:18:25 WARN]: at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54)
[12:18:25 WARN]: at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126)
[12:18:25 WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:617)
[12:18:25 WARN]: at CustomDeathMessages-2.0.1.jar//org.spartandevs.customdeathmessages.listeners.BukkitPlayerDeathListener.onPlayerDeath(BukkitPlayerDeathListener.java:54)
[12:18:25 WARN]: at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor860.execute(Unknown Source)
[12:18:25 WARN]: at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77)
[12:18:25 WARN]: at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77)
[12:18:25 WARN]: at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70)
[12:18:25 WARN]: at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54)
[12:18:25 WARN]: at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126)
[12:18:25 WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:617)
[12:18:25 WARN]: at org.bukkit.craftbukkit.v1_20_R2.event.CraftEventFactory.callPlayerDeathEvent(CraftEventFactory.java:984)
[12:18:25 WARN]: at net.minecraft.server.level.EntityPlayer.a(EntityPlayer.java:963)
[12:18:25 WARN]: at net.minecraft.world.entity.EntityLiving.a(EntityLiving.java:1560)
[12:18:25 WARN]: at net.minecraft.world.entity.player.EntityHuman.a(EntityHuman.java:973)
[12:18:25 WARN]: at net.minecraft.server.level.EntityPlayer.a(EntityPlayer.java:1132)
[12:18:25 WARN]: at net.minecraft.world.entity.player.EntityHuman.d(EntityHuman.java:1326)
[12:18:25 WARN]: at net.minecraft.server.level.EntityPlayer.d(EntityPlayer.java:2183)
[12:18:25 WARN]: at net.minecraft.server.network.PlayerConnection$3.a(PlayerConnection.java:2779)
[12:18:25 WARN]: at net.minecraft.network.protocol.game.PacketPlayInUseEntity$1.a(PacketPlayInUseEntity.java:24)
[12:18:25 WARN]: at net.minecraft.network.protocol.game.PacketPlayInUseEntity.a(PacketPlayInUseEntity.java:80)
[12:18:25 WARN]: at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:2703)
[12:18:25 WARN]: at net.minecraft.network.protocol.game.PacketPlayInUseEntity.a(PacketPlayInUseEntity.java:67)
[12:18:25 WARN]: at net.minecraft.network.protocol.game.PacketPlayInUseEntity.a(PacketPlayInUseEntity.java:12)
[12:18:25 WARN]: at net.minecraft.network.protocol.PlayerConnectionUtils.lambda$ensureRunningOnSameThread$0(PlayerConnectionUtils.java:53)
[12:18:25 WARN]: at net.minecraft.server.TickTask.run(TickTask.java:18)
[12:18:25 WARN]: at net.minecraft.util.thread.IAsyncTaskHandler.d(IAsyncTaskHandler.java:153)
[12:18:25 WARN]: at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(IAsyncTaskHandlerReentrant.java:24)
[12:18:25 WARN]: at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1326)
[12:18:25 WARN]: at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:193)
[12:18:25 WARN]: at net.minecraft.util.thread.IAsyncTaskHandler.x(IAsyncTaskHandler.java:126)
[12:18:25 WARN]: at net.minecraft.server.MinecraftServer.bg(MinecraftServer.java:1303)
[12:18:25 WARN]: at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1296)
[12:18:25 WARN]: at net.minecraft.util.thread.IAsyncTaskHandler.bp(IAsyncTaskHandler.java:114)
[12:18:25 WARN]: at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1412)
[12:18:25 WARN]: at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1158)
[12:18:25 WARN]: at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:317)
[12:18:25 WARN]: at java.base/java.lang.Thread.run(Thread.java:833)
[12:18:25 INFO]: Ex0ticZero was slain by Apeeeeep using [PEnusuk PAntat]
global-pvp-death-messages: []
melee-death-messages: []
I want to turn off pvp messages, but when I set it like this, the console gives an error. Vanilla messages are much better I don't want to change that.
Paper-1.16.3
Latest CDM
DiscordSRV1 listens specifically to the message itself. Upon adding this plugin, DiscordSRV sends [UNCATEGORIZED DEBUG] Not sending death message for <player>, death message is null
to the console (whilst debug is on). Even though the message is simply re-written according to this plugin. Could a hook be made for DiscordSRV's death listener2?
Click here DiscordSRV's hook directory.
DiscordSRV GitHub: https://github.com/DiscordSRV/DiscordSRV ↩
Death Listener file: https://github.com/DiscordSRV/DiscordSRV/blob/master/src/main/java/github/scarsz/discordsrv/listeners/PlayerDeathListener.java ↩
Hello there,
So we noticed that killing someone with a netherite sword actually use "melee-death-messages:" messages instead of "global-pvp-death-messages:" messages.
All settings are set to true in the config file and other weapons work fine. So I imagine it's an issue with netherite.
Version: Paper version git-Paper-722 (MC: 1.16.5) (Implementing API version 1.16.5-R0.1-SNAPSHOT)
Plugin version: 1.7.2
There is no death messages for deaths by falling via vines (and perhaps other blocks too like ladders?)
Language
Language:
The default language to be used if auto-lang is off or no matching language file was found.
default-language: en_us
Enable / Disable locale based messages.
auto-language: true
something like this to get different lang death message after changing minecraft lang.
i can help and translate ru_ru.yml
Hello,
I think it would be a great idea to be able to hook onto Discord chat plugins like Essentials Discord to be able to display the death messages on the discord chat.
/deathmessages toggle to toggle all death messages.
/deathmessages blacklist to ignore a players death messages
like this: &3%player%&4 was blown up by &3%killer%&4 with an &6end crystal
end-crystal-messages:
Getting this error on login - https://pastebin.com/09f7ds7G
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.