simplix-softworks / cirrus Goto Github PK
View Code? Open in Web Editor NEWMinecraft GUI library for Spigot, BungeeCord and Velocity. Powered by Protocolize v2!
License: MIT License
Minecraft GUI library for Spigot, BungeeCord and Velocity. Powered by Protocolize v2!
License: MIT License
For anyone in the future who has issues using the Velocity version- it's because the documentation is outdated. Here's the fix for anyone who's in the same situation as me.
Steps to use:
<repository>
<id>simplixsoft-public</id>
<url>https://repo.simplix.dev/repository/simplixsoft-public/</url>
</repository>
<dependency>
<groupId>dev.simplix.cirrus</groupId>
<artifactId>cirrus-velocity</artifactId>
<version>3.0.0-SNAPSHOT</version>
</dependency>
gradle :cirrus-api:publishToMavenLocal
Hope this helps, respond here if any clarification needed.
Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_16_R1.inventory.CraftInventoryCustom$MinecraftInventory cannot be cast to net.minecraft.server.v1_16_R1.PlayerInventory
at org.bukkit.craftbukkit.v1_16_R1.inventory.CraftContainer.(CraftContainer.java:51) ~[patched_1.16.1.jar:git-Paper-135]
at org.bukkit.craftbukkit.v1_16_R1.entity.CraftHumanEntity.openInventory(CraftHumanEntity.java:396) ~[patched_1.16.1.jar:git-Paper-135]
at dev.simplix.cirrus.spigot.menubuilder.SpigotMenuBuilder.open(SpigotMenuBuilder.java:158) ~[?:?]
at dev.simplix.cirrus.common.menu.AbstractMenu.open(AbstractMenu.java:96) ~[?:?]
at dev.simplix.cirrus.common.prefabs.menu.MultiPageMenu.open(MultiPageMenu.java:77) ~[?:?]
at dev.simplix.cirrus.spigot.example.commands.TestCommand.execute(TestCommand.java:40) ~[?:?]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[patched_1.16.1.jar:git-Paper-135]
Line: 60
Error: cannot get new data of modern material
1.13+ does not have data.getData(); remove or use alternatives like createBlockData() or check for Server ProtocolVersion
Currently the InventoryDragEvent is not handled in the InventoryListener when using this in a bukkit plugin. Seeing as dragging is triggered just by moving your mouse 1px while clicking down on an item this could lead to entries being apparently unresponsive if not being very careful. (And potential other issues e.g. ability to drag items in/out of inventories)
EDIT: Just took a look at the Bungee/Velocity implementation as well. They too seem to only react on the click, not drag (although I'm not sure if Protocolize's Inventory#onClick method maybe gets called for the dragging packet too?)
I'm unable to resolve Cirrus Spigot in IntelliJ because the Simplixsoft Public repo returns a 404 error when accessed. My temporary workaround is installing the version of Cirrus in this Git repo to my local Maven repo.
(Tested with this environment)
Paper-341 (1.18.2)
Java 17.0.3.1
Actions to replicate:
Hopefully someone smart enough finds a good fix for this, I've fixed this bug in my framework by adding NBT tag to all gui-items and removing them wherever player causes InventoryClickEvent, though i don't find it really optimal solution.
I really love this framework and would love to see it being expanded upon, and documentation being published.
java.lang.NoSuchMethodException: net.minecraft.world.item.ItemStack.setTag(net.minecraft.nbt.NBTTagCompound) - ProtocolizeItemStackConverter.java:109
Method setTag = itemStackNMSClass.getMethod("setTag", nbtTagCompoundClass);
Tested with Paper - 1.18.1 - Reobf
Branch: restructure
When using current master
branch / snapshot, a customActionHandler()
is not triggered for empty slots due to the item being null
:
new Click()
does not allow the item to be Null (has lombok.NotNull
annotation)My current "fix" for being able to utilize a customActionHandler()
for my menus is the following "patch":
diff --git a/cirrus-bungeecord/src/main/java/dev/simplix/cirrus/bungeecord/protocolize/ProtocolizeMenuBuilder.java b/cirrus-bungeecord/src/main/java/dev/simplix/cirrus/bungeecord/protocolize/ProtocolizeMenuBuilder.java
index fbc5d2a..7fd2426 100644
--- a/cirrus-bungeecord/src/main/java/dev/simplix/cirrus/bungeecord/protocolize/ProtocolizeMenuBuilder.java
+++ b/cirrus-bungeecord/src/main/java/dev/simplix/cirrus/bungeecord/protocolize/ProtocolizeMenuBuilder.java
@@ -142,9 +142,11 @@ public class ProtocolizeMenuBuilder implements MenuBuilder {
if (inventoryClick.player() == null) {
return;
}
+ /*
if (inventoryClick.clickedItem() == null) {
return;
}
+ */
Inventory i = inventoryClick.inventory();
if (i == null) {
return;
diff --git a/cirrus-common/src/main/java/dev/simplix/cirrus/common/model/Click.java b/cirrus-common/src/main/java/dev/simplix/cirrus/common/model/Click.java
index 9ea166f..a85fb46 100644
--- a/cirrus-common/src/main/java/dev/simplix/cirrus/common/model/Click.java
+++ b/cirrus-common/src/main/java/dev/simplix/cirrus/common/model/Click.java
@@ -6,6 +6,9 @@ import dev.simplix.cirrus.common.business.PlayerWrapper;
import dev.simplix.cirrus.common.menu.Menu;
import dev.simplix.protocolize.api.ClickType;
import java.util.List;
+
+import org.jetbrains.annotations.Nullable;
+
import lombok.NonNull;
/**
@@ -21,7 +24,7 @@ public class Click {
public Click(
@NonNull ClickType clickType,
@NonNull Menu clickedMenu,
- @NonNull InventoryMenuItemWrapper clickedItem,
+ @Nullable InventoryMenuItemWrapper clickedItem,
int slot) {
this.clickType = clickType;
this.clickedMenu = clickedMenu;
Hello,
everytime when a player opens a cirrus menu e.g on SkyBlock they loose their items in PlayerInventory from slot 18 to 35.
After researching the problem a few days i found out when i remove
buildContainer(view.getBottomInventory(), menu.bottomContainer(), true);
in SpigotMenuBuilder.class that there is no problem.
How to reproduce the bug?
Fill your PlayerInventory with items from slot 9 to 35 and open an Cirrus Menu.
You will see that items from slot 18 to 35 will disappear.
nvm not an error
[INFO]: ? executed command: /test
[ERROR]: [/?|?] -> UpstreamBridge - encountered exception
java.lang.NoSuchMethodError: 'dev.simplix.protocolize.api.item.ItemStack dev.simplix.protocolize.api.inventory.Inventory.item(int)'
at dev.simplix.cirrus.bungeecord.protocolize.ProtocolizeMenuBuilder.buildContainer(ProtocolizeMenuBuilder.java:85) ~[?:?]
at dev.simplix.cirrus.bungeecord.protocolize.ProtocolizeMenuBuilder.build(ProtocolizeMenuBuilder.java:69) ~[?:?]
at dev.simplix.cirrus.common.menu.AbstractMenu.build(AbstractMenu.java:120) ~[?:?]
at dev.simplix.cirrus.common.menu.AbstractMenu.open(AbstractMenu.java:125) ~[?:?]
at dev.simplix.cirrus.bungeecord.example.commands.TestCommand.execute(TestCommand.java:22) ~[?:?]
at net.md_5.bungee.api.plugin.PluginManager.dispatchCommand(PluginManager.java:213) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at net.md_5.bungee.api.plugin.PluginManager.dispatchCommand(PluginManager.java:164) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at net.md_5.bungee.connection.UpstreamBridge.handleChat(UpstreamBridge.java:209) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at net.md_5.bungee.connection.UpstreamBridge.handle(UpstreamBridge.java:186) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at net.md_5.bungee.protocol.packet.ClientCommand.handle(ClientCommand.java:109) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at net.md_5.bungee.netty.HandlerBoss.channelRead(HandlerBoss.java:114) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[waterfall-1.19-515.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:8a03f3d:515]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
[INFO]: [?] disconnected with: NoSuchMethodError : 'dev.simplix.protocolize.api.item.ItemStack dev.simplix.protocolize.api.inventory.Inventory.item(int)' @ dev.simplix.cirrus.bungeecord.protocolize.ProtocolizeMenuBuilder:85
[INFO]: [/?|?] -> UpstreamBridge has disconnected
i think its short, and theres no need to put it on pastebin.
info related to my username and ip address has been replaced.?
/?
I have just tried to use the example code together with the MultiPageMenu example from the wiki causes an NPE.
Adding a simple display name and lore to the addItems()
loop (that adds all the items) fixes the issue and causes the menu to work without an NPE.
I have used Cirrus 2.0-SNAPSHOT
that was pulled yesterday / today.
Please let me know if you need more information.
[02:35:57 WARN]: Error in dispatching command
java.lang.NullPointerException: Cannot read the array length because "<local1>" is null
at dev.simplix.cirrus.common.Utils.removeItalic(Utils.java:9) ~[?:?]
at dev.simplix.cirrus.bungeecord.protocolize.ProtocolizeMenuBuilder.open(ProtocolizeMenuBuilder.java:260) ~[?:?]
at dev.simplix.cirrus.bungeecord.protocolize.ProtocolizeMenuBuilder.build(ProtocolizeMenuBuilder.java:78) ~[?:?]
at dev.simplix.cirrus.common.menus.MultiPageMenu$PageMenu.build(MultiPageMenu.java:236) ~[?:?]
at dev.simplix.cirrus.common.menu.AbstractMenu.open(AbstractMenu.java:123) ~[?:?]
at dev.simplix.cirrus.common.menus.MultiPageMenu.open(MultiPageMenu.java:93) ~[?:?]
at net.platzhaltergaming.serverselector.bungee.commands.ServersCommand.execute(ServersCommand.java:40) ~[?:?]
at net.md_5.bungee.api.plugin.PluginManager.dispatchCommand(PluginManager.java:212) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at net.md_5.bungee.api.plugin.PluginManager.dispatchCommand(PluginManager.java:163) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at net.md_5.bungee.connection.UpstreamBridge.handle(UpstreamBridge.java:168) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at net.md_5.bungee.protocol.packet.Chat.handle(Chat.java:76) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at net.md_5.bungee.netty.HandlerBoss.channelRead(HandlerBoss.java:114) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:795) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:480) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[waterfall.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
at java.lang.Thread.run(Thread.java:833) [?:?]
If used in a common module: protocolize-api has to be added as a provided dependency as well.
Note this in the wiki.
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.