diff --git a/src/main/java/com/viaversion/aas/protocol/sharewareto1_14/ClientboundPacketsShareware.java b/src/main/java/com/viaversion/aas/protocol/sharewareto1_14/ClientboundPacketsShareware.java
new file mode 100644
index 0000000..68d3074
--- /dev/null
+++ b/src/main/java/com/viaversion/aas/protocol/sharewareto1_14/ClientboundPacketsShareware.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (c) RK_01 2021.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+ * associated documentation files (the "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
+ * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * ===================================
+ *
+ * Copyright (c) VIAaaS contributors
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+package com.viaversion.aas.protocol.sharewareto1_14;
+
+import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
+
+public enum ClientboundPacketsShareware implements ClientboundPacketType {
+ SPAWN_ENTITY, // 0x00
+ SPAWN_EXPERIENCE_ORB, // 0x01
+ SPAWN_GLOBAL_ENTITY, // 0x02
+ SPAWN_MOB, // 0x03
+ SPAWN_PAINTING, // 0x04
+ SPAWN_PLAYER, // 0x05
+ ENTITY_ANIMATION, // 0x06
+ STATISTICS, // 0x07
+ BLOCK_BREAK_ANIMATION, // 0x08
+ BLOCK_ENTITY_DATA, // 0x09
+ BLOCK_ACTION, // 0x0A
+ BLOCK_CHANGE, // 0x0B
+ BOSSBAR, // 0x0C
+ SERVER_DIFFICULTY, // 0x0D
+ CHAT_MESSAGE, // 0x0E
+ MULTI_BLOCK_CHANGE, // 0x0F
+ TAB_COMPLETE, // 0x10
+ DECLARE_COMMANDS, // 0x11
+ WINDOW_CONFIRMATION, // 0x12
+ CLOSE_WINDOW, // 0x13
+ OPEN_HORSE_WINDOW, // 0x14
+ WINDOW_ITEMS, // 0x15
+ WINDOW_PROPERTY, // 0x16
+ SET_SLOT, // 0x17
+ COOLDOWN, // 0x18
+ PLUGIN_MESSAGE, // 0x19
+ NAMED_SOUND, // 0x1A
+ DISCONNECT, // 0x1B
+ ENTITY_STATUS, // 0x1C
+ NBT_QUERY, // 0x1D
+ EXPLOSION, // 0x1E
+ UNLOAD_CHUNK, // 0x1F
+ GAME_EVENT, // 0x20
+ KEEP_ALIVE, // 0x21
+ CHUNK_DATA, // 0x22
+ EFFECT, // 0x23
+ SPAWN_PARTICLE, // 0x24
+ JOIN_GAME, // 0x25
+ MAP_DATA, // 0x26
+ ENTITY_MOVEMENT, // 0x27
+ ENTITY_POSITION, // 0x28
+ ENTITY_POSITION_AND_ROTATION, // 0x29
+ ENTITY_ROTATION, // 0x2A
+ VEHICLE_MOVE, // 0x2B
+ OPEN_BOOK, // 0x2C
+ OPEN_SIGN_EDITOR, // 0x2D
+ CRAFT_RECIPE_RESPONSE, // 0x2E
+ PLAYER_ABILITIES, // 0x2F
+ COMBAT_EVENT, // 0x30
+ PLAYER_INFO, // 0x31
+ FACE_PLAYER, // 0x32
+ PLAYER_POSITION, // 0x33
+ UNLOCK_RECIPES, // 0x34
+ DESTROY_ENTITIES, // 0x35
+ REMOVE_ENTITY_EFFECT, // 0x36
+ RESOURCE_PACK, // 0x37
+ RESPAWN, // 0x38
+ ENTITY_HEAD_LOOK, // 0x39
+ SELECT_ADVANCEMENTS_TAB, // 0x3A
+ WORLD_BORDER, // 0x3B
+ CAMERA, // 0x3C
+ HELD_ITEM_CHANGE, // 0x3D
+ DISPLAY_SCOREBOARD, // 0x3E
+ ENTITY_METADATA, // 0x3F
+ ATTACH_ENTITY, // 0x40
+ ENTITY_VELOCITY, // 0x41
+ ENTITY_EQUIPMENT, // 0x42
+ SET_EXPERIENCE, // 0x43
+ UPDATE_HEALTH, // 0x44
+ SCOREBOARD_OBJECTIVE, // 0x45
+ SET_PASSENGERS, // 0x46
+ TEAMS, // 0x47
+ UPDATE_SCORE, // 0x48
+ SPAWN_POSITION, // 0x49
+ TIME_UPDATE, // 0x4A
+ TITLE, // 0x4B
+ STOP_SOUND, // 0x4C
+ SOUND, // 0x4D
+ ENTITY_SOUND, // 0x4E
+ TAB_LIST, // 0x4F
+ COLLECT_ITEM, // 0x50
+ ENTITY_TELEPORT, // 0x51
+ ADVANCEMENTS, // 0x52
+ ENTITY_PROPERTIES, // 0x53
+ ENTITY_EFFECT, // 0x54
+ DECLARE_RECIPES, // 0x55
+ TAGS, // 0x56
+ UPDATE_LIGHT, // 0x57
+ OPEN_WINDOW, // 0x58
+ TRADE_LIST, // 0x59
+ UPDATE_VIEW_DISTANCE; // 0x5A
+
+ @Override
+ public int getId() {
+ return this.ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return this.name();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/viaversion/aas/protocol/sharewareto1_14/ProtocolSharewareto1_14.java b/src/main/java/com/viaversion/aas/protocol/sharewareto1_14/ProtocolSharewareto1_14.java
new file mode 100644
index 0000000..8977322
--- /dev/null
+++ b/src/main/java/com/viaversion/aas/protocol/sharewareto1_14/ProtocolSharewareto1_14.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) RK_01 2021.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+ * associated documentation files (the "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
+ * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * ===================================
+ *
+ * Copyright (c) VIAaaS contributors
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+package com.viaversion.aas.protocol.sharewareto1_14;
+
+import com.viaversion.viaversion.api.connection.UserConnection;
+import com.viaversion.viaversion.api.protocol.AbstractProtocol;
+import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14;
+import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14;
+
+// https://github.com/RaphiMC/ViaAprilFools/
+public class ProtocolSharewareto1_14 extends AbstractProtocol {
+ public ProtocolSharewareto1_14() {
+ super(ClientboundPackets1_14.class, ClientboundPacketsShareware.class, ServerboundPackets1_14.class, ServerboundPacketsShareware.class);
+ }
+
+ @Override
+ protected void registerPackets() {
+ this.cancelClientbound(ClientboundPackets1_14.UPDATE_VIEW_POSITION);
+ this.cancelClientbound(ClientboundPackets1_14.ACKNOWLEDGE_PLAYER_DIGGING);
+ }
+
+ @Override
+ public void init(UserConnection userConnection) {
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/viaversion/aas/protocol/sharewareto1_14/ServerboundPacketsShareware.java b/src/main/java/com/viaversion/aas/protocol/sharewareto1_14/ServerboundPacketsShareware.java
new file mode 100644
index 0000000..50c91d9
--- /dev/null
+++ b/src/main/java/com/viaversion/aas/protocol/sharewareto1_14/ServerboundPacketsShareware.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) RK_01 2021.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+ * associated documentation files (the "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
+ * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * ===================================
+ *
+ * Copyright (c) VIAaaS contributors
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+package com.viaversion.aas.protocol.sharewareto1_14;
+
+import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType;
+
+public enum ServerboundPacketsShareware implements ServerboundPacketType {
+
+ TELEPORT_CONFIRM, // 0x00
+ QUERY_BLOCK_NBT, // 0x01
+ SET_DIFFICULTY, // 0x02
+ CHAT_MESSAGE, // 0x03
+ CLIENT_STATUS, // 0x04
+ CLIENT_SETTINGS, // 0x05
+ TAB_COMPLETE, // 0x06
+ WINDOW_CONFIRMATION, // 0x07
+ CLICK_WINDOW_BUTTON, // 0x08
+ CLICK_WINDOW, // 0x09
+ CLOSE_WINDOW, // 0x0A
+ PLUGIN_MESSAGE, // 0x0B
+ EDIT_BOOK, // 0x0C
+ ENTITY_NBT_REQUEST, // 0x0D
+ INTERACT_ENTITY, // 0x0E
+ LOCK_DIFFICULTY, // 0x0F
+ KEEP_ALIVE, // 0x10
+ PLAYER_MOVEMENT, // 0x11
+ PLAYER_POSITION, // 0x12
+ PLAYER_POSITION_AND_ROTATION, // 0x13
+ PLAYER_ROTATION, // 0x14
+ VEHICLE_MOVE, // 0x15
+ STEER_BOAT, // 0x16
+ PICK_ITEM, // 0x17
+ CRAFT_RECIPE_REQUEST, // 0x18
+ PLAYER_ABILITIES, // 0x19
+ PLAYER_DIGGING, // 0x1A
+ ENTITY_ACTION, // 0x1B
+ STEER_VEHICLE, // 0x1C
+ RECIPE_BOOK_DATA, // 0x1D
+ RENAME_ITEM, // 0x1E
+ RESOURCE_PACK_STATUS, // 0x1F
+ ADVANCEMENT_TAB, // 0x20
+ SELECT_TRADE, // 0x21
+ SET_BEACON_EFFECT, // 0x22
+ HELD_ITEM_CHANGE, // 0x23
+ UPDATE_COMMAND_BLOCK, // 0x24
+ UPDATE_COMMAND_BLOCK_MINECART, // 0x25
+ CREATIVE_INVENTORY_ACTION, // 0x26
+ UPDATE_JIGSAW_BLOCK, // 0x27
+ UPDATE_STRUCTURE_BLOCK, // 0x28
+ UPDATE_SIGN, // 0x29
+ ANIMATION, // 0x2A
+ SPECTATE, // 0x2B
+ PLAYER_BLOCK_PLACEMENT, // 0x2C
+ USE_ITEM; // 0x2D
+
+ @Override
+ public int getId() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/viaversion/aas/codec/packet/login/CryptoRequest.kt b/src/main/kotlin/com/viaversion/aas/codec/packet/login/CryptoRequest.kt
index 6a49132..c3daf1d 100644
--- a/src/main/kotlin/com/viaversion/aas/codec/packet/login/CryptoRequest.kt
+++ b/src/main/kotlin/com/viaversion/aas/codec/packet/login/CryptoRequest.kt
@@ -16,7 +16,7 @@ class CryptoRequest : Packet {
override fun decode(byteBuf: ByteBuf, protocolVersion: Int) {
serverId = Type.STRING.read(byteBuf)
- if (protocolVersion >= ProtocolVersion.v1_8.version) {
+ if (protocolVersion >= ProtocolVersion.v1_8.version || protocolVersion == 1) {
publicKey = KeyFactory.getInstance("RSA")
.generatePublic(X509EncodedKeySpec(Type.BYTE_ARRAY_PRIMITIVE.read(byteBuf)))
token = Type.BYTE_ARRAY_PRIMITIVE.read(byteBuf)
@@ -29,7 +29,7 @@ class CryptoRequest : Packet {
override fun encode(byteBuf: ByteBuf, protocolVersion: Int) {
Type.STRING.write(byteBuf, serverId)
- if (protocolVersion >= ProtocolVersion.v1_8.version) {
+ if (protocolVersion >= ProtocolVersion.v1_8.version || protocolVersion == 1) {
Type.BYTE_ARRAY_PRIMITIVE.write(byteBuf, publicKey.encoded)
Type.BYTE_ARRAY_PRIMITIVE.write(byteBuf, token)
} else {
diff --git a/src/main/kotlin/com/viaversion/aas/codec/packet/login/CryptoResponse.kt b/src/main/kotlin/com/viaversion/aas/codec/packet/login/CryptoResponse.kt
index 0366ee3..e4058ca 100644
--- a/src/main/kotlin/com/viaversion/aas/codec/packet/login/CryptoResponse.kt
+++ b/src/main/kotlin/com/viaversion/aas/codec/packet/login/CryptoResponse.kt
@@ -11,7 +11,7 @@ class CryptoResponse : Packet {
lateinit var encryptedToken: ByteArray
override fun decode(byteBuf: ByteBuf, protocolVersion: Int) {
- if (protocolVersion >= ProtocolVersion.v1_8.version) {
+ if (protocolVersion >= ProtocolVersion.v1_8.version || protocolVersion == 1) {
encryptedKey = Type.BYTE_ARRAY_PRIMITIVE.read(byteBuf)
encryptedToken = Type.BYTE_ARRAY_PRIMITIVE.read(byteBuf)
} else {
@@ -21,7 +21,7 @@ class CryptoResponse : Packet {
}
override fun encode(byteBuf: ByteBuf, protocolVersion: Int) {
- if (protocolVersion >= ProtocolVersion.v1_8.version) {
+ if (protocolVersion >= ProtocolVersion.v1_8.version || protocolVersion == 1) {
Type.BYTE_ARRAY_PRIMITIVE.write(byteBuf, encryptedKey)
Type.BYTE_ARRAY_PRIMITIVE.write(byteBuf, encryptedToken)
} else {
diff --git a/src/main/kotlin/com/viaversion/aas/codec/packet/login/LoginSuccess.kt b/src/main/kotlin/com/viaversion/aas/codec/packet/login/LoginSuccess.kt
index 7b408e2..51459fb 100644
--- a/src/main/kotlin/com/viaversion/aas/codec/packet/login/LoginSuccess.kt
+++ b/src/main/kotlin/com/viaversion/aas/codec/packet/login/LoginSuccess.kt
@@ -16,7 +16,7 @@ class LoginSuccess : Packet {
protocolVersion >= ProtocolVersion.v1_16.version -> {
Type.UUID_INT_ARRAY.read(byteBuf)
}
- protocolVersion >= ProtocolVersion.v1_7_6.version -> {
+ protocolVersion >= ProtocolVersion.v1_7_6.version || protocolVersion == 1 -> {
UUID.fromString(Type.STRING.read(byteBuf))
}
else -> parseUndashedId(Type.STRING.read(byteBuf))
@@ -29,7 +29,7 @@ class LoginSuccess : Packet {
protocolVersion >= ProtocolVersion.v1_16.version -> {
Type.UUID_INT_ARRAY.write(byteBuf, id)
}
- protocolVersion >= ProtocolVersion.v1_7_6.version -> {
+ protocolVersion >= ProtocolVersion.v1_7_6.version || protocolVersion == 1 -> {
Type.STRING.write(byteBuf, id.toString())
}
else -> Type.STRING.write(byteBuf, id.toString().replace("-", ""))
diff --git a/src/main/kotlin/com/viaversion/aas/protocol/AspirinProtocols.kt b/src/main/kotlin/com/viaversion/aas/protocol/AspirinProtocols.kt
index cd5de09..6268806 100644
--- a/src/main/kotlin/com/viaversion/aas/protocol/AspirinProtocols.kt
+++ b/src/main/kotlin/com/viaversion/aas/protocol/AspirinProtocols.kt
@@ -1,6 +1,7 @@
package com.viaversion.aas.protocol
import com.viaversion.aas.protocol.id47toid5.Protocol1_8To1_7_6
+import com.viaversion.aas.protocol.sharewareto1_14.ProtocolSharewareto1_14
import com.viaversion.viaversion.api.Via
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion
@@ -8,4 +9,7 @@ import com.viaversion.viaversion.api.protocol.version.ProtocolVersion
// + https://github.com/creeper123123321/ViaRewind/tree/17to18
fun registerAspirinProtocols() {
Via.getManager().protocolManager.registerProtocol(Protocol1_8To1_7_6, ProtocolVersion.v1_8, ProtocolVersion.v1_7_6)
+ // todo fix version checks
+ val shareware = ProtocolVersion.register(1, "3D Shareware v1.34")
+ Via.getManager().protocolManager.registerProtocol(ProtocolSharewareto1_14(), shareware, ProtocolVersion.v1_14)
}