Git Product home page Git Product logo

waterdogpe's Introduction

WaterdogPE

Build Status Discord Chat

WaterdogPE is a brand new Minecraft: Bedrock Edition proxy software developed by the developers of the old Waterdog Proxy.
In this new proxy, we are working with Cloudbursts Protocol Library. It takes alot of maintaining effort from us and provides us with a nice api to work with.
If you want to discuss things without joining the discord server, please use the Discussions Tab

Links

Setup Guide

If you haven't used WaterdogPE before, we recommend you to take a look at our setup guide in the docs.
Please note that the config from the old Waterdog (Bungee) is not compatible with WaterdogPE

Supported Software

Our goal is to support all commonly used Minecraft: Bedrock server softwares. Spoons and unofficial forks will not be supported due to the lack of proper implementation.
You can find list of currently supported/unsupported software here.

Compiling

To compile WaterdogPE please visit our COMPILING.md guide.

Maven usage

<repositories>
    <repository>
        <id>waterdog-repo</id>
        <url>https://repo.waterdog.dev/main</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>dev.waterdog.waterdogpe</groupId>
        <artifactId>waterdog</artifactId>
        <version>2.0.0-SNAPSHOT</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

Included libraries

waterdogpe's People

Contributors

4ch3los avatar akmalfairuz avatar alemiz112 avatar alicancopur avatar alvin0319 avatar belohnung avatar brokiem avatar clesucre avatar denzelcode avatar dependabot[bot] avatar derdevhd avatar derklaro avatar dries-c avatar encritary avatar irrld avatar kaooot avatar kcodeyt avatar larrythecoder avatar senseitarzan avatar suprememortal avatar tobiasgrether avatar yexeed 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

waterdogpe's Issues

Protocol: Enabled encryption seems to delay packet sending after client initialization

After player joins initial server or transfers the game behavior seems laggy because of upstream not delivering packets to client. This usually persists for few seconds but can take up to one minute.

Performing several experiments confirms that this can be affected by disabling encryption - decreases the delay or removes it completely. This bug can be reproduced only on some machines, weird, OS type doesn't affect it. It can be only reproduced when nukkit is the downstream server.

Doing debug shows that the packets are not queued and the issue is not coming form ProxyBatchBridge. In fact, packets are passed from bridge without any thread blocking directly to BedrockSession using one of sendWrapped() methods. It doesn't matter whatever packets are reencoded. Encryption itself does not block thread or create any delay - about 0.2ms - 5ms.

Encrypted buffer is passed down to RakNet level where I guess the issue is coming from - I have noticed that datagrams holding encrypted payload are not send because of increased NAK ratio. Therefore this issue could be related to #108

PLUGINS ERRO

All plug-ins have this error, although everything is correct.

Error while loading plugin main class(main=dev.waterdog.examples.RandomServerJoin,plugin=RandomServerJoin)
java.lang.ClassNotFoundException: dev.waterdog.examples.RandomServerJoin
at dev.waterdog.plugin.PluginClassLoader.findClass(PluginClassLoader.java:46) ~[server.jar:?]
at dev.waterdog.plugin.PluginClassLoader.findClass(PluginClassLoader.java:41) ~[server.jar:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:589) ~[?:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[?:?]
at dev.waterdog.plugin.PluginLoader.loadPluginJAR(PluginLoader.java:52) ~[server.jar:?]
at dev.waterdog.plugin.PluginManager.loadPlugin(PluginManager.java:93) ~[server.jar:?]
at java.util.TreeMap.forEach(TreeMap.java:1002) ~[?:?]
at dev.waterdog.plugin.PluginManager.loadPluginsIn(PluginManager.java:70) ~[server.jar:?]
at dev.waterdog.plugin.PluginManager.(PluginManager.java:44) ~[server.jar:?]
at dev.waterdog.ProxyServer.(ProxyServer.java:122) ~[server.jar:?]
at dev.waterdog.WaterdogPE.main(WaterdogPE.java:54) ~[server.jar:?

java.lang.IllegalStateException: Connection has been closed

Describe the bug
A clear and concise description of what the bug is.

When player try to disconnect, java.lang.IllegalStateException: Connection has been closed occur.

To Reproduce
Steps to reproduce the behavior:

  1. Connect server
  2. Then quit server

Expected behavior

Screenshots
If applicable, add screenshots to help explain your problem.

image

Platform (please complete the following information):

  • OS: [e.g. Linux, Distribution] Windows 10 HOME
  • Java Version:
openjdk version "15.0.2" 2021-01-19
OpenJDK Runtime Environment AdoptOpenJDK (build 15.0.2+7)
Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.24.0, JRE 15 Windows 10 amd64-64-Bit Compressed References 20210121_173 (JIT enabled, AOT enabled)
OpenJ9   - 345e1b09e
OMR      - 741e94ea8
JCL      - 863b523566 based on jdk-15.0.2+7)

Additional context
Add any other context about the problem here.

My config.yml settings

# Waterdog Main Configuration file
# Configure your desired network settings here.


# A list of all downstream proxies that are available right after starting
# address field is formatted using ip:port
# publicAddress is optional and can be set to the ip players can directly connect through
servers:
  lobby1:
    address: my server address
    #public_address: play.myserver.com:19133
listener:

  # The Motd which will be displayed in the server tab of a player and returned during ping
  motd: §bWaterdog§3PE

  # The server priority list. if not changed by plugins, the proxy will connect the player to the first of those servers
  priorities:
  - lobby1

  # The address to bind the server to
  host: 0.0.0.0:19132

  # The maximum amount of players that can connect to this proxy instance
  max_players: 20

  # Map the ip a player joined through to a specific server
  # for example skywars.xyz.com => SkyWars-1
  # when a player connects using skywars-xyz.com as the serverIp, he will be connected to SkyWars-1 directly
  forced_hosts: {}

# Case-Sensitive permission list for players
permissions:
  TobiasDev:
  - waterdog.player.transfer
  - waterdog.player.list
  alemiz003:
  - waterdog.player.transfer
  - waterdog.player.list

# List of permissions each player should get by default
permissions_default:
- waterdog.command.help
- waterdog.command.info

# Whether the debug output in the console should be enabled or not
enable_debug: false

# If enabled encrypted connection between client and proxy will be created
upstream_encryption: true

# If enabled, only players which are authenticated with XBOX Live can join. If disabled, anyone can connect *with any name*
online_mode: true

# If enabled, the proxy will pass information like XUID or IP to the downstream server using custom fields in the LoginPacket
use_login_extras: true

# Forward original address in client data under 'Waterdog_IP' attribute.
ip_forward: false

# Replaces username spaces with underscores if enabled
replace_username_spaces: false

# Whether server query should be enabled
enable_query: true

# If enabled, when receiving a McpeTransferPacket, the proxy will check if the target server is in the downstream list, and if yes, use the fast transfer mechanism
prefer_fast_transfer: true

# Fast-codec only decodes the packets required by the proxy, everything else will be passed rawly. Disabling this can create a performance hit
use_fast_codec: true

# If enabled, the proxy will inject all the proxy commands in the AvailableCommandsPacket, enabling autocompletion
inject_proxy_commands: true

# Upstream server compression ratio(proxy to client), higher = less bandwidth, more cpu, lower vice versa
upstream_compression_level: 6

# Upstream server compression ratio(proxy to downstream server), higher = less bandwidth, more cpu, lower vice versa
downstream_compression_level: 2

# Enable/Disable the resource pack system
enable_packs: true

# Whether texture packs should be enforced
force_apply_packs: false

# You can set maximum pack size in MB to be cached.
pack_cache_size: 16

# Creating threads may be in some situations expensive. Specify minimum count of idle threads per internal thread executors. Set to -1 to auto-detect by core count.
default_idle_threads: -1

Please make sure the bug you are reporting hasn't been reported here already. Duplicate issues will be quickly closed.

AvailableCommandsPacket doesn't work correctly.

Describe the bug
A clear and concise description of what the bug is.

AvailableCommandsPacket doesn't work correctly.

Without proxy:
image

With proxy:
image

To Reproduce
Steps to reproduce the behavior:

  1. Join server
  2. Enter the command

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Platform (please complete the following information):

  • OS: [e.g. Linux, Distribution] Windows 10
  • Java Version:
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.11+1-202102091838)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.11+1-202102091838, mixed mode)

Additional context
Add any other context about the problem here.

Please make sure the bug you are reporting hasn't been reported here already. Duplicate issues will be quickly closed.

[BUG] Bossbar error

Describe the bug
I tried to remove a bossbar and I got an error.

To Reproduce
Steps to reproduce the behavior:

  1. Use the bossbar plugin by XenialDan

Expected behavior
Remove the bassbar and not throw an error

Screenshots
None

Platform (please complete the following information):

  • OS: Windows 10
  • Java 8
  • Latest

Additional context
Here's the error:
16:31:54 [DEBUG] Error occurred whilst encoding BossEventPacket com.nukkitx.protocol.bedrock.exception.PacketSerializeException: Error whilst serializing BossEventPacket(bossUniqueEntityId=42, action=REMOVE, playerUniqueEntityId=0, title=null, healthPercentage=0.0, darkenSky=0, color=0, overlay=0) at com.nukkitx.protocol.bedrock.BedrockPacketCodec.tryEncode(BedrockPacketCodec.java:82) ~[waterdog-1.0.0-SNAPSHOT.jar:?] at com.nukkitx.protocol.bedrock.wrapper.BedrockWrapperSerializerV9_10.serialize(BedrockWrapperSerializerV9_10.java:38) [waterdog-1.0.0-SNAPSHOT.jar:?] at com.nukkitx.protocol.bedrock.BedrockSession.sendWrapped(BedrockSession.java:118) [waterdog-1.0.0-SNAPSHOT.jar:?] at pe.waterdog.network.bridge.ProxyBatchBridge.handle(ProxyBatchBridge.java:64) [waterdog-1.0.0-SNAPSHOT.jar:?] at com.nukkitx.protocol.bedrock.BedrockSession.onWrappedPacket(BedrockSession.java:285) [waterdog-1.0.0-SNAPSHOT.jar:?] at com.nukkitx.protocol.bedrock.BedrockRakNetSessionListener.onEncapsulated(BedrockRakNetSessionListener.java:32) [waterdog-1.0.0-SNAPSHOT.jar:?] at com.nukkitx.network.raknet.RakNetSession.onEncapsulatedInternal(RakNetSession.java:300) [waterdog-1.0.0-SNAPSHOT.jar:?] at com.nukkitx.network.raknet.RakNetSession.onOrderedReceived(RakNetSession.java:427) [waterdog-1.0.0-SNAPSHOT.jar:?] at com.nukkitx.network.raknet.RakNetSession.checkForOrdered(RakNetSession.java:405) [waterdog-1.0.0-SNAPSHOT.jar:?] at com.nukkitx.network.raknet.RakNetSession.onRakNetDatagram(RakNetSession.java:398) [waterdog-1.0.0-SNAPSHOT.jar:?] at com.nukkitx.network.raknet.RakNetSession.onDatagram(RakNetSession.java:272) [waterdog-1.0.0-SNAPSHOT.jar:?] at com.nukkitx.network.raknet.RakNetClient$ClientDatagramHandler.channelRead(RakNetClient.java:177) [waterdog-1.0.0-SNAPSHOT.jar:?] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [waterdog-1.0.0-SNAPSHOT.jar:?] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [waterdog-1.0.0-SNAPSHOT.jar:?] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [waterdog-1.0.0-SNAPSHOT.jar:?] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1422) [waterdog-1.0.0-SNAPSHOT.jar:?] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [waterdog-1.0.0-SNAPSHOT.jar:?] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [waterdog-1.0.0-SNAPSHOT.jar:?] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:931) [waterdog-1.0.0-SNAPSHOT.jar:?] at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:93) [waterdog-1.0.0-SNAPSHOT.jar:?] at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:700) [waterdog-1.0.0-SNAPSHOT.jar:?] at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:635) [waterdog-1.0.0-SNAPSHOT.jar:?] at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:552) [waterdog-1.0.0-SNAPSHOT.jar:?] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:514) [waterdog-1.0.0-SNAPSHOT.jar:?] at io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1050) [waterdog-1.0.0-SNAPSHOT.jar:?] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [waterdog-1.0.0-SNAPSHOT.jar:?] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_202] Caused by: java.lang.RuntimeException: BossEvent transactionType was unknown! at com.nukkitx.protocol.bedrock.v291.serializer.BossEventSerializer_v291.serialize(BossEventSerializer_v291.java:43) ~[waterdog-1.0.0-SNAPSHOT.jar:?] at com.nukkitx.protocol.bedrock.v291.serializer.BossEventSerializer_v291.serialize(BossEventSerializer_v291.java:11) ~[waterdog-1.0.0-SNAPSHOT.jar:?] at com.nukkitx.protocol.bedrock.BedrockPacketCodec.tryEncode(BedrockPacketCodec.java:80) ~[waterdog-1.0.0-SNAPSHOT.jar:?] ... 26 more

Please make sure the bug you are reporting hasn't been reported here already. Duplicate issues will be quickly closed.

[REQ] Please remove any prefixes from any issue template

Describe the solution you'd like
The solution I'd like to see is all prefixes being removed from any pull request or issue template.

Describe alternatives you've considered
Well, a perfect alternative are GitHub's labels. They exist, they don't cost anything, they're super easy to setup and you're already using them. They're a perfect way to give any issue, pull request, conversation, matter etc. more context. [REQ] or [BUG] are just noise and super redundant.

Java 8

Please add support for java 8

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: dev/waterdog/WaterdogPE has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)

Downstream switch

Is your feature request related to a problem? Please describe.

Nah, but its annoying.

Describe the solution you'd like

Forms, Titles(ActionBar, Tip, etc.) & Scoreboards will removed on server switch

Describe alternatives you've considered

Caching all forms ids, if player send form -> remove from cache, then send data null (player closed form)

/server player server

Please set the command in such a way that you have the option of moving other users only with OP. Say that it is no longer one command, but that it becomes two. Once for all users and once only for the team or owner

Best Regents

Cannot use WaterDogPE to join Java Server (Geyser).

Describe the bug
I use the latest version of WaterDogPE, the latest version of PowerNukkit (used to transfer to another server) and the latest version of Geyser (the java server is PaperSpigot 1.12.2, also added Floodgate). I change the configuration of Geyser to offline mode, and the java server is also offline mode, But when you join that server (from Nukkit server to Paperspigot server), the system prompts: to join this server, please log in to your Xbox account. If I don't use WaterDogPE to join and enter the address directly, this problem won't appear. I think it's a problem with WaterDogPE.

To Reproduce
Steps to reproduce the behavior:

  1. I downloaded the latest version of WaterDogPE(WD), PowerNukkit(PN), Geyser and Floodgate, also PaperSpigot 1.12.2(PS).
  2. I added Geyser&Floodgate into PaperSpigot 1.12.2. They worked normally. Then I configured WD&PN.
  3. I take PN as the main server and enter through WD. When I try to enter PS with WD command, it gives an error prompt: to join this server, please log in to your Xbox account. But it's normal for me to join PS directly.

Expected behavior
It can join Java Server normally through WaterDogPE

Screenshots
*Tips for joining Java Server (Only English part)
image

Join java server through address
image

Platform
1.Windows Server 2019
2.AdoptOpenJDK 11&16 (11 used to the Java Server, others used 16)
3.WaterDogPE 1.1.0 (github release version)
4.Geyser 1.4 (git-master-7ae27c7) & Viaversion 4.0.0 (1.12.2 => 1.17)

Add protocol 1.8x

Is your feature request related to a problem? Please describe.

Please add support for protocols 1.8 / 1.9 / 1.10 / 1.11 / 1.12 please

Could not connect: Outdated server!

Hello there!

A lot of players (including me) are recieving the following message when joining via the proxy: Could not connect: Outdated server!. Only after restarting the game for a few times, they've been able to join.

I've also noticed another weird issue (may be related to this):
When querying our proxy, it sometimes shows "1.16.220 - 0 players" but it's actually "1.17.10 - ... players"

Why is it like that? How can I fix this? Am I the only one experiencing this issue?

We're using version 1.1.1 (1.17.10, protocol 448)

No react on anything after internal server error

Describe the bug
If i get a internal server error of a server where i want to connect with wdpe the world doesn't load an i on a fallback server but idk where i'm. I dont can break blocks, i dont can do commands.

To Reproduce
Steps to reproduce the behavior:

  1. Write a Plugin with an Internal server error ( without an ; idk)
  2. Transfer to server where the plugin is
  3. Look, you see a error.

Expected behavior
I expected that i get a reconnect to my lobby but idk where was then.

Screenshots
Screenshot_2021-02-04-23-51-37-375_com.mojang.minecraftpe.jpg

Platform (please complete the following information):

  • OS: Debian 10
  • Java Version 8
  • Actually WaterdogPE Version.

Error on Join

This error comes when a player joins.

java.util.concurrent.CompletionException: java.lang.NullPointerException
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314) ~[?:?]
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319) ~[?:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1702) ~[?:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1692) ~[?:?]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) ~[?:?]
at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020) ~[?:?]
at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) ~[?:?]
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) ~[?:?]
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183) ~[?:?]
Caused by: java.lang.NullPointerException
at java.util.Objects.requireNonNull(Objects.java:221) ~[?:?]
at de.proxyutils.main.Main.login(Main.java:97) ~[?:?]
at dev.waterdog.event.EventHandler.handlePriority(EventHandler.java:96) ~[Waterdog.jar:?]
at dev.waterdog.event.EventHandler.lambda$handle$0(EventHandler.java:55) ~[Waterdog.jar:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) ~[?:?]
... 6 more

20210221_213134

Education edition items on PM4

So in Pocketmine 4.0 they added education edition items.
But this causes the client to crash when looking for those in your inventory.
At the Discord I asked for help and someone tried to figure out what could cause the issue.

He thinks it has something to do with the item palette, but didn't see any way that Waterdog managed that.

Element Items

2021-04-10.23-39-02.mp4

Scaffolding climbing is buggy

Describe the bug
If you try to climb scaffolding, you will get a breathing-air display and can climb into the air while breathing-air display is there. I use PowerNukkit (https://github.com/Superzock3003/PowerNukkit/actions/runs/558979548) and without WaterdogPE it works without problems.
To Reproduce
Steps to reproduce the behavior:

  1. Place a scaffolding
  2. Climb up the scaffolding

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
Minecraft 11 02 2021 20_49_32_LI

Platform (please complete the following information):

  • OS: Linux
  • Java 11
  • master (1.0.0)

License inconsistent

The License specified on GitHub is not the same as the Licenses in the Source files.

Player Removal issue

Describe the bug
In some cases players do not get removed from the player map, resulting in an inaccurate player count number

To Reproduce
Steps to reproduce the behavior:

  1. Start the proxy
  2. Let players join and play (and disconnect (different disconnect methods?))
  3. Run /wdlist or check the query returned player count

Expected behavior
Player numbers should always be correct

Screenshots
image

Platform (please complete the following information):

  • OS: Linux
  • 1.8
  • Latest

Additional context
Reported by Florian.#2001 on Discord

Create crash with AvailableCommandsPacket

19:50:29 [WARN ] Received violation from VirVoltaSurMC: PacketViolationWarningPacket(type=MALFORMED_PACKET, severity=TERMINATING_CONNECTION, packetCauseId=76, context=)

I have this error if in one of my command I put a Command Enum with an arg type string with in it the word "daymarble" in the array (ps I don't know why this word but I know that if I don't put it in it works fine

Plugin can't send player to an other server

I have downloaded a plugin to add /join [server] but i have got this error when i perform the command.
Other plugins give me that error too

2021-05-10 12:31:18.114 [Network Listener - #1] WARN - Received violation from Draco1544: PacketViolationWarningPacket(type=MALFORMED_PACKET, severity=TERMINATING_CONNECTION, packetCauseId=117, context=)
2021-05-10 12:31:18.116 [Network Listener - #5] INFO - [/192.168.1.40:49698|Draco1544] -> Downstream [aventure] has disconnected
2021-05-10 12:31:18.118 [Network Listener - #1] INFO - [/192.168.1.40:49698|Draco1544] -> Upstream has disconnected

Bedrock Dedicated Server (BDS) Support

Describe the bug
I used the latest version of WaterDog (compiled by myself). When I used it to send to Bedrock Dedicated Server, although I successfully entered, the square could not be placed, the right-click square would disappear, and the new chunk could not be loaded. Is Bedrock Dedicated Server supported? If so , Please fix this BUG, if not, I hope to support Bedrock Dedicated Server in the future version (OldWaterDog does not support I am a bit disappointed, so I hope this version can support)
To Reproduce
Steps to reproduce the behavior:

  1. I compiled the WaterDogPE
  2. Created two test servers (one is nukkitx and the other is Bedrock Dedicated Server)
  3. Transfer from nukkitx server to Bedrock Dedicated Server
  4. The console did not report an error, but there was a problem.(the square could not be placed, the right-click square would disappear, and the new chunk could not be loaded)

Expected behavior
Can perfectly support Bedrock Dedicated Server.

Screenshots
the new chunk could not be loaded
image
the square could not be placed, the right-click square would disappear.When I re-enter the server, everything will be back to the original state. The consoles of WaterDogPE and Bedrock Dedicated Server successfully show that I have joined the server without any errors
image

Platform (please complete the following information):

  • Windows Server 2016
  • AdoptOpenJDK 11 (JVM is Eclipse OpenJ9)
  • WaterDogPE 1.0.0 (latest version & compiled by myself)

Additional context
I used machine translation(Google Translate)

One thing!

Is there a Transfer command? for Nukkit

[REQ] Please add a Maven wrapper to your repository

Describe the solution you'd like
Please consider adding a Maven wrapper to your repository. It's essentially the same as a Gradle wrapper. It allows your users and fellow contributors and maintainers to clone the repository and execute mvnw clean package (notice the w after mvn) without actually having a Maven distribution installed on your system. It allows for more flexibility and costs your user, including me, less time.

Learn more here.

How to setup the Maven wrapper
mvn -N io.takari:maven:0.7.7:wrapper
How to setup the Maven wrapper (that uses a specific Maven version)
mvn -N io.takari:maven:wrapper -Dmaven=3.6.3

Bedrock Dedicated Server & Pocketmine Generation

Information:

WaterdogPE ProtocolI Java MCBE Software involved
1.1.0 440 11 PM4 & BDS

Description:

The blocks generated in the world are sent to the client in the wrong way, replacing each other.

For example, torches instead of being shown to the player as torches, are ladders (not are exactly what they are replaced for, it is an example).

image

How to reproduce:

1. Add 2 servers, one using Pocketmine and the other Bedrock Dedicated Server
2. Set either of the 2 servers to the first priority
3. Join the proxy server, apparently you can find everything "normal"
4. Transfer to the opposite server, you will notice that all blocks are buggy

Notes

  • I have only tested this with PM4 and BDS, I don't know if PM3 or any other software will get the same errors.

Reload Resource Packs

Is your feature request related to a problem? Please describe.
/

Describe the solution you'd like
A command to reload all resource packs.

Describe alternatives you've considered
/

Additional context
/

Inventory transactions, Items mismatch

When connected to the proxy if you use a geysermc connected java server you won’t be able to use the items in an item gui (My Example: I cannot queue in my Practice server because when the gui opens the items won’t do anything)
OLD GEYSER VERSION:
Joined the server with WaterdogPE proxy and the commands executed from the item gui worked
NEW VERSION OF GEYSER WITH THIS BUG:
Joined the server with WaterdogPE proxy and the commands executed from the item gui don’t work
Joined the server without WaterdogPE proxy and the commands from the item gui work.
The guis stopped working since the new update to 1.16.220 version of bedrock
These are the two geyser that i’ve used (the old version with 1.16.210 that worked fine and the new one that has this bug)
https://filebin.net/l426ni7p0s66iicx
Example video with a casual premade server:
https://filebin.net/tgqbu99bgs2ugadk
Server Version and Plugins:
PaperSpigot 1.8.8 with java 1.8.0
Plugins used: StrikePractice, Geyser-Spigot
When the geyser server is the primary server that the proxy will try to connect to the items work fine.

Make a Plugin Website

Is your feature request related to a problem? Please describe.
Its very hard to find plugins for WaterDogPE

Describe the solution you'd like
I would like a website which will have the plugins made by other people who submitted and approved by WaterdogPE team

Describe alternatives you've considered
poggit.pmmp.io

Additional context
Make a Plugin website for WaterdogPE

Logged in other location and twice nickname bug

When someone join the proxy and downstream, his nickname appears twice in pause menu list.

image

(possibly also related to this) it sometimes kicks people who enter the server because of "logged in other location".

change package name

The package name should be changed to dev.waterdog from pe.waterdog as the convention is to use the domain name as the package name.

This should be done ASAP before the software starts getting more popular.

Players cant join the 2nd server in priority list if the first one is offline

Describe the bug
When a player is joining he is not being connected to lobby2 which is in my priority server list when lobby 1 is offline, the server is always kicking because the lobby 1 is down

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'config.yml'
  2. Add 2 servers lobby1 and lobby2
  3. Scroll down to priorities
  4. add lobby1 first and then lobby2
  5. Stop the lobby1 server
  6. join through the proxy
  7. It will not let you join lobby2

Expected behavior
I expected that it will send players to lobby2

Platform (please complete the following information):

  • OS: Linux
  • Java Version: java11
  • Version of Waterdog: latest

Additional context
Please fix it

MANY PACKETS (DDOS BY PROXY)

1° Erro: The waterdog keeps knocking down many players on the network with the reason * Disconnected from Server *

2° Erro: Besides sending lots of packets to the pocketmine, making it take a long time to process the packets from the same proxy ip, is there any way to fix this?

Can't Join the server

Here is my error
04:36:03 [INFO ] [/49.37.209.156:58968|DeadBushMC] <-> Upstream has connected (protocol=448)

04:36:19 [INFO ] [/49.37.209.156:58968|DeadBushMC] -> Upstream has disconnected

04:36:19 [INFO ] [DeadBushMC] -> Disconnected with: Connection to kitpvp failed: java.util.concurrent.TimeoutException

Here is my config

Waterdog Main Configuration file

Configure your desired network settings here.

A list of all downstream servers that are available right after starting

address field is formatted using ip:port

publicAddress is optional and can be set to the ip players can directly connect through

servers:
kitpvp:
address: 51.79.157.25:19133
listener:

The Motd which will be displayed in the server tab of a player and returned during ping

motd: §l§3|§6Winter§4Hell§3|

The server priority list. If not changed by plugins, the proxy will connect the player to the first of those servers

priorities:

  • kitpvp

The address to bind the server to

host: 0.0.0.0:19132

The maximum amount of players that can connect to this proxy instance

max_players: 100

Map the ip a player joined through to a specific server

for example skywars.xyz.com => SkyWars-1

when a player connects using skywars-xyz.com as the serverIp, he will be connected to SkyWars-1 directly

forced_hosts: {}

Case-Sensitive permission list for players (empty using {})

permissions:
TobiasDev:

  • waterdog.player.transfer
  • waterdog.player.list
    alemiz003:
  • waterdog.player.transfer
  • waterdog.player.list

List of permissions each player should get by default (empty using [])

permissions_default:

  • waterdog.command.help
  • waterdog.command.info

Whether the debug output in the console should be enabled or not

enable_debug: false

If enabled, encrypted connection between client and proxy will be created

upstream_encryption: true

If enabled, only players which are authenticated with XBOX Live can join. If disabled, anyone can connect with any name

online_mode: true

If enabled, the proxy will be able to bind to an Ipv6 Address

enable_ipv6: false

If enabled, the proxy will pass information like XUID or IP to the downstream server using custom fields in the LoginPacket

use_login_extras: true

Replaces username spaces with underscores if enabled

replace_username_spaces: false

Whether server query should be enabled

enable_query: true

If enabled, when receiving a McpeTransferPacket, the proxy will check if the target server is in the downstream list, and if yes, use the fast transfer mechanism

prefer_fast_transfer: true

Fast-codec only decodes the packets required by the proxy, everything else will be passed rawly. Disabling this can create a performance hit

use_fast_codec: true

If enabled, the proxy will inject all the proxy commands in the AvailableCommandsPacket, enabling autocompletion

inject_proxy_commands: true

Upstream server compression ratio(proxy to client), higher = less bandwidth, more cpu, lower vice versa

upstream_compression_level: 6

Upstream server compression ratio(proxy to downstream server), higher = less bandwidth, more cpu, lower vice versa

downstream_compression_level: 2

Education features require small adjustments to work correctly. Enable this option if any of downstream servers support education features.

enable_edu_features: false

Enable/Disable the resource pack system

enable_packs: true

Whether texture packs should be enforced

force_apply_packs: false

You can set maximum pack size in MB to be cached.

pack_cache_size: 16

Creating threads may be in some situations expensive. Specify minimum count of idle threads per internal thread executors. Set to -1 to auto-detect by core count.

default_idle_threads: -1

Please tell me the full tutorial to fix this issue
I have turned off xuid and xbox off

PacketViolationWarningPacket -__-

When I join the server and trying to break block or chat or sometime automatically disconnect my client and say this message in console

15:02:19 [WARN ] Received violation from SouL YT7829: PacketViolationWarningPacket(type=MALFORMED_PACKET, severity=TERMINATING_CONNECTION, packetCauseId=117, context=)
15:02:19 [INFO ] [/103.199.182.157:64763|SouL YT7829] -> Upstream has disconnected
15:02:19 [INFO ] [/103.199.182.157:64763|SouL YT7829] -> Downstream [Hub] has disconnected

Please help me to fix :)

Nukkit Protocol Lib

Describe the bug
Joining doesn't work

To Reproduce
Steps to reproduce the behavior:

  1. Join proxy
  2. Wait
  3. You can see the server map, but you can't move
  4. See error

Expected behavior
Join without freeze effect

Screenshots
grafik

Platform (please complete the following information):

  • OS: Linux
  • Java 11
  • latest

NoClassDefFoundError: pe/waterdog/plugin/Plugin

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:
Start WaterdogPE

Expected behavior
Start without error

Screenshots

  • No screenshot here

Platform (please complete the following information):

  • Linux
  • Java 11
  • master -> Build 14

Additional context

05:37:42 [INFO ] Starting WaterDogPE proxy software!
05:37:42 [INFO ] Software Version: 1.0.0
05:37:42 [INFO ] Build Version: 14
05:37:42 [INFO ] Development Build: false
05:37:42 [INFO ] Software Authors: WaterdogTEAM
Exception in thread "WaterdogPE-main" java.lang.NoClassDefFoundError: pe/waterdog/plugin/Plugin
        at java.base/java.lang.ClassLoader.defineClass1(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
        at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
        at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:550)
        at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458)
        at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
        at dev.waterdog.plugin.PluginClassLoader.findClass(PluginClassLoader.java:59)
        at dev.waterdog.plugin.PluginManager.getClassFromCache(PluginManager.java:183)
        at dev.waterdog.plugin.PluginClassLoader.findClass(PluginClassLoader.java:55)
        at dev.waterdog.plugin.PluginClassLoader.findClass(PluginClassLoader.java:41)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        at dev.waterdog.plugin.PluginLoader.loadPluginJAR(PluginLoader.java:52)
        at dev.waterdog.plugin.PluginManager.loadPlugin(PluginManager.java:91)
        at dev.waterdog.plugin.PluginManager.lambda$loadPluginsIn$1(PluginManager.java:60)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
        at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
        at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
        at dev.waterdog.plugin.PluginManager.loadPluginsIn(PluginManager.java:60)
        at dev.waterdog.plugin.PluginManager.loadPluginsIn(PluginManager.java:52)
        at dev.waterdog.plugin.PluginManager.<init>(PluginManager.java:48)
        at dev.waterdog.ProxyServer.<init>(ProxyServer.java:116)
        at dev.waterdog.WaterdogPE.main(WaterdogPE.java:56)
Caused by: java.lang.ClassNotFoundException: pe.waterdog.plugin.Plugin
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
        at dev.waterdog.plugin.PluginClassLoader.findClass(PluginClassLoader.java:59)
        at dev.waterdog.plugin.PluginClassLoader.findClass(PluginClassLoader.java:41)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)

How do I force players to log in through the proxy?

Is your feature request related to a problem? Please describe.
How do I force players to log in through the proxy?

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

WaterdogPE does NOT start fully and you have to press stop MULTIPLE times so it crashes

Hello WaterdogPE team,
I have had this problem for a while and finally want to see if it is possible to fix it. So I installed WDPE correctly and when I start it, it ALWAYS shows the starting icon. When I have to stop, I have to spam press stop in order for it to crash, it takes at least 30 seconds.
I am pretty sure in the discord, someone had the same problem on Falixnodes, but don't quote me on that. I told them I had the same issue, but I can't find the picture sorry about that.

image
image
image

Error when Transferring

Describe the bug
When I transferred from lobby to skyblock server It gave me this error

12:47:45 [INFO ] [/103.245.193.188:57660|Altamash347] <-> Upstream has connected (protocol=422)
12:47:46 [INFO ] [/103.245.193.188:57660|Altamash347] -> Downstream [lobby] has connected
12:48:16 [INFO ] [/103.245.193.188:57660|Altamash347] -> Upstream has disconnected
12:48:16 [INFO ] [Altamash347] -> **Disconnected with: Connection to skyblock failed: java.util.concurrent.TimeoutException**

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'config.yml'
  2. change add 2 servers in the server list
  3. save it
  4. restart the proxy
  5. Join the server
  6. Transfer from one server to another
  7. see the error Connection to skyblock failed: java.util.concurrent.TimeoutException

Expected behavior
I expected to transfer to the skyblock server without the long loading screen

Screenshots
image

Platform (please complete the following information):

  • OS: Linux
  • Java Version: Java 11
  • Version of Waterdog: Latest

Additional context
the main error is this Connection to skyblock failed: java.util.concurrent.TimeoutException
I dont know if I mistaken in something but It is showing to me

Can't join on my server.

Hello,

today I have first time instal the WaterdogPE Server on my Ubuntu Root Server with one Nukkit Server.
I installed the server like the docs.
After the Start the Server I would join him, also can't join him...
In the Waterdog console is all clan no errors
In my Lobby server console is this error:
15:46:05 [INFO ] edingjhdlive[/127.0.0.1:57306] hat sich ausgeloggt disconnectionScreen.notAuthenticated

Can me Help everyone, please?

With best Regrads,
Felix Schmitt

P.S. Sorry for my bad Englisch, I come from Germany

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.