From ddd0400b57e8f93db86e5b06ab4449996466f357 Mon Sep 17 00:00:00 2001 From: EOT3000 <43685885+EOT3000@users.noreply.github.com> Date: Wed, 13 Nov 2019 09:48:13 -0500 Subject: [PATCH 01/18] VERSION is always 1.0-SNAPSHOT --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 45f3f919..af9314c6 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -27,7 +27,7 @@ If applicable, add screenshots to help explain your problem. run /version **Geyser version** -Not yet +Jenkins **Bedrock version** The version of your Minecraft pe From 38ae400d0c31d9cafaf879d9c0b8714270368601 Mon Sep 17 00:00:00 2001 From: LegacyGamerHD Date: Fri, 15 Nov 2019 04:04:30 +0100 Subject: [PATCH 02/18] add phew entity flags (#79) * Add some entity flags * goddangit stupid web editor * whoops (Some information pulled from BMan's pull request for flags) --- .../java/entity/JavaEntityMetadataTranslator.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityMetadataTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityMetadataTranslator.java index f19a2912..1d001480 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityMetadataTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityMetadataTranslator.java @@ -53,8 +53,11 @@ public class JavaEntityMetadataTranslator extends PacketTranslator Date: Thu, 14 Nov 2019 21:07:22 -0600 Subject: [PATCH 03/18] Fix tabs in formatting from previous commit --- .../java/entity/JavaEntityMetadataTranslator.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityMetadataTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityMetadataTranslator.java index 1d001480..a21b2f86 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityMetadataTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityMetadataTranslator.java @@ -53,11 +53,11 @@ public class JavaEntityMetadataTranslator extends PacketTranslator Date: Fri, 15 Nov 2019 21:25:43 -0600 Subject: [PATCH 04/18] Fix players not showing up Skins still need some work as it applies to every player online rather than a specific player; however, players are now visible regardless. --- .../org/geysermc/connector/utils/ProvidedSkin.java | 11 ++++++----- .../java/org/geysermc/connector/utils/SkinUtils.java | 12 +++++++++++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/connector/src/main/java/org/geysermc/connector/utils/ProvidedSkin.java b/connector/src/main/java/org/geysermc/connector/utils/ProvidedSkin.java index 007a9557..71bf2984 100644 --- a/connector/src/main/java/org/geysermc/connector/utils/ProvidedSkin.java +++ b/connector/src/main/java/org/geysermc/connector/utils/ProvidedSkin.java @@ -3,6 +3,7 @@ package org.geysermc.connector.utils; import lombok.Getter; import javax.imageio.ImageIO; +import java.awt.Color; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -18,11 +19,11 @@ public class ProvidedSkin { try { for (int y = 0; y < image.getHeight(); y++) { for (int x = 0; x < image.getWidth(); x++) { - int rgba = image.getRGB(x, y); - outputStream.write((rgba >> 16) & 0xFF); - outputStream.write((rgba >> 8) & 0xFF); - outputStream.write(rgba & 0xFF); - outputStream.write((rgba >> 24) & 0xFF); + Color color = new Color(image.getRGB(x, y), true); + outputStream.write(color.getRed()); + outputStream.write(color.getGreen()); + outputStream.write(color.getBlue()); + outputStream.write(color.getAlpha()); } } image.flush(); diff --git a/connector/src/main/java/org/geysermc/connector/utils/SkinUtils.java b/connector/src/main/java/org/geysermc/connector/utils/SkinUtils.java index 08b9ed1f..988501b8 100644 --- a/connector/src/main/java/org/geysermc/connector/utils/SkinUtils.java +++ b/connector/src/main/java/org/geysermc/connector/utils/SkinUtils.java @@ -13,6 +13,7 @@ import org.geysermc.connector.entity.PlayerEntity; import org.geysermc.connector.network.session.GeyserSession; import java.util.Base64; +import java.util.Collections; import java.util.UUID; import java.util.function.Consumer; @@ -48,7 +49,16 @@ public class SkinUtils { public static PlayerListPacket.Entry buildEntryManually(UUID uuid, String username, long geyserId, String skinId, byte[] skinData, byte[] capeData, String geometryName, String geometryData) { - SerializedSkin serializedSkin = SerializedSkin.of(skinId, ImageData.of(64, 64, skinData), ImageData.of(64, 32, capeData), geometryName, geometryData, true); + if (skinData == null || skinData.length == 0) { + skinData = SkinProvider.EMPTY_SKIN.getSkinData(); + } + + if (capeData == null || capeData.length == 0) { + capeData = SkinProvider.EMPTY_CAPE.getCapeData(); + } + + SerializedSkin serializedSkin = SerializedSkin.of(skinId, geometryName, ImageData.of(64, 64, skinData), + Collections.emptyList(), ImageData.of(64, 32, capeData), geometryData, "", true, false, false, "", ""); PlayerListPacket.Entry entry = new PlayerListPacket.Entry(uuid); entry.setName(username); From 73c9ee313c403bad0302edd3b2577d985846b0df Mon Sep 17 00:00:00 2001 From: RednedEpic Date: Fri, 15 Nov 2019 22:10:23 -0600 Subject: [PATCH 05/18] Add fox entity type --- .../java/org/geysermc/connector/entity/type/EntityType.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/connector/src/main/java/org/geysermc/connector/entity/type/EntityType.java b/connector/src/main/java/org/geysermc/connector/entity/type/EntityType.java index af95536c..88414531 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/type/EntityType.java +++ b/connector/src/main/java/org/geysermc/connector/entity/type/EntityType.java @@ -135,7 +135,8 @@ public enum EntityType { DROWNED(110, 1.95f, 0.6f), TROPICAL_FISH(111, 0.6f, 0.6f), COD(112, 0.25f, 0.5f), - PANDA(113, 1.25f, 1.125f, 1.825f); + PANDA(113, 1.25f, 1.125f, 1.825f), + FOX(121, 0.5f, 1.25f); private final int type; private final float height; From 51c1792d67f20a17f88abb92461833926f01f7f0 Mon Sep 17 00:00:00 2001 From: RednedEpic Date: Fri, 15 Nov 2019 22:21:26 -0600 Subject: [PATCH 06/18] Only send one empty chunk upon login --- .../network/session/GeyserSession.java | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java b/connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java index b5be8cbc..8f4544d3 100644 --- a/connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java +++ b/connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java @@ -135,25 +135,22 @@ public class GeyserSession implements Player { Vector3f pos = Vector3f.ZERO; int chunkX = pos.getFloorX() >> 4; int chunkZ = pos.getFloorZ() >> 4; - for (int x = -5; x < 5; x++) { - for (int z = -5; z < 5; z++) { - NetworkChunkPublisherUpdatePacket chunkPublisherUpdatePacket = new NetworkChunkPublisherUpdatePacket(); - chunkPublisherUpdatePacket.setPosition(pos.toInt()); - chunkPublisherUpdatePacket.setRadius(renderDistance << 4); - upstream.sendPacket(chunkPublisherUpdatePacket); + NetworkChunkPublisherUpdatePacket chunkPublisherUpdatePacket = new NetworkChunkPublisherUpdatePacket(); + chunkPublisherUpdatePacket.setPosition(pos.toInt()); + chunkPublisherUpdatePacket.setRadius(renderDistance << 4); + upstream.sendPacket(chunkPublisherUpdatePacket); - LevelChunkPacket data = new LevelChunkPacket(); - data.setChunkX(chunkX + x); - data.setChunkZ(chunkZ + z); - data.setSubChunksLength(0); - data.setData(TranslatorsInit.EMPTY_LEVEL_CHUNK_DATA); - upstream.sendPacket(data); - } - } + LevelChunkPacket data = new LevelChunkPacket(); + data.setChunkX(chunkX); + data.setChunkZ(chunkZ); + data.setSubChunksLength(0); + data.setData(TranslatorsInit.EMPTY_LEVEL_CHUNK_DATA); + upstream.sendPacket(data); BiomeDefinitionListPacket biomePacket = new BiomeDefinitionListPacket(); biomePacket.setTag(CompoundTag.EMPTY); upstream.sendPacket(biomePacket); + AvailableEntityIdentifiersPacket entityPacket = new AvailableEntityIdentifiersPacket(); entityPacket.setTag(CompoundTag.EMPTY); upstream.sendPacket(entityPacket); @@ -161,8 +158,6 @@ public class GeyserSession implements Player { PlayStatusPacket playStatusPacket = new PlayStatusPacket(); playStatusPacket.setStatus(PlayStatusPacket.Status.PLAYER_SPAWN); upstream.sendPacket(playStatusPacket); - - connector.getLogger().debug("play status sent"); } public void authenticate(String username) { From d2034854180362b7aa9182181c9edb3b1fdd750d Mon Sep 17 00:00:00 2001 From: RednedEpic Date: Sun, 17 Nov 2019 15:29:49 -0600 Subject: [PATCH 07/18] Add entity status translator --- .../network/translators/TranslatorsInit.java | 1 + .../entity/JavaEntityStatusTranslator.java | 97 +++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityStatusTranslator.java diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/TranslatorsInit.java b/connector/src/main/java/org/geysermc/connector/network/translators/TranslatorsInit.java index d4bc5b45..5711409c 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/TranslatorsInit.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/TranslatorsInit.java @@ -114,6 +114,7 @@ public class TranslatorsInit { Registry.registerJava(ServerEntityRotationPacket.class, new JavaEntityRotationTranslator()); Registry.registerJava(ServerEntityHeadLookPacket.class, new JavaEntityHeadLookTranslator()); Registry.registerJava(ServerEntityMetadataPacket.class, new JavaEntityMetadataTranslator()); + Registry.registerJava(ServerEntityStatusPacket.class, new JavaEntityStatusTranslator()); Registry.registerJava(ServerBossBarPacket.class, new JavaBossBarTranslator()); Registry.registerJava(ServerSpawnExpOrbPacket.class, new JavaSpawnExpOrbTranslator()); diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityStatusTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityStatusTranslator.java new file mode 100644 index 00000000..a3745864 --- /dev/null +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityStatusTranslator.java @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2019 GeyserMC. http://geysermc.org + * + * 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. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/Geyser + */ + +package org.geysermc.connector.network.translators.java.entity; + +import com.github.steveice10.mc.protocol.packet.ingame.server.entity.ServerEntityStatusPacket; +import com.nukkitx.protocol.bedrock.packet.EntityEventPacket; +import org.geysermc.connector.entity.Entity; +import org.geysermc.connector.network.session.GeyserSession; +import org.geysermc.connector.network.translators.PacketTranslator; + +public class JavaEntityStatusTranslator extends PacketTranslator { + + @Override + public void translate(ServerEntityStatusPacket packet, GeyserSession session) { + Entity entity = session.getEntityCache().getEntityByJavaId(packet.getEntityId()); + if (packet.getEntityId() == session.getPlayerEntity().getEntityId()) { + entity = session.getPlayerEntity(); + } + if (entity == null) + return; + + EntityEventPacket entityEventPacket = new EntityEventPacket(); + entityEventPacket.setRuntimeEntityId(entity.getGeyserId()); + switch (packet.getStatus()) { + case LIVING_HURT: + case LIVING_HURT_SWEET_BERRY_BUSH: + entityEventPacket.setEvent(EntityEventPacket.Event.HURT_ANIMATION); + break; + case LIVING_DEATH: + entityEventPacket.setEvent(EntityEventPacket.Event.DEATH_ANIMATION); + break; + case WOLF_SHAKE_WATER: + entityEventPacket.setEvent(EntityEventPacket.Event.SHAKE_WET); + break; + case PLAYER_FINISH_USING_ITEM: + entityEventPacket.setEvent(EntityEventPacket.Event.USE_ITEM); + break; + case FISHING_HOOK_PULL_PLAYER: + entityEventPacket.setEvent(EntityEventPacket.Event.FISH_HOOK_LURED); + break; + case TAMEABLE_TAMING_FAILED: + entityEventPacket.setEvent(EntityEventPacket.Event.TAME_FAIL); + break; + case TAMEABLE_TAMING_SUCCEEDED: + entityEventPacket.setEvent(EntityEventPacket.Event.TAME_SUCCESS); + case ZOMBIE_VILLAGER_CURE: + entityEventPacket.setEvent(EntityEventPacket.Event.ZOMBIE_VILLAGER_CURE); + break; + case ANIMAL_EMIT_HEARTS: + entityEventPacket.setEvent(EntityEventPacket.Event.LOVE_PARTICLES); + break; + case FIREWORK_EXPLODE: + entityEventPacket.setEvent(EntityEventPacket.Event.FIREWORK_PARTICLES); + break; + case WITCH_EMIT_PARTICLES: + entityEventPacket.setEvent(EntityEventPacket.Event.WITCH_SPELL_PARTICLES); + break; + case TOTEM_OF_UNDYING_MAKE_SOUND: + entityEventPacket.setEvent(EntityEventPacket.Event.CONSUME_TOTEM); + break; + case SHEEP_GRAZE_OR_TNT_CART_EXPLODE: + entityEventPacket.setEvent(EntityEventPacket.Event.MINECART_TNT_PRIME_FUSE); + break; + case IRON_GOLEM_HOLD_POPPY: + entityEventPacket.setEvent(EntityEventPacket.Event.IRON_GOLEM_OFFER_FLOWER); + break; + case IRON_GOLEM_EMPTY_HAND: + entityEventPacket.setEvent(EntityEventPacket.Event.IRON_GOLEM_WITHDRAW_FLOWER); + break; + } + + session.getUpstream().sendPacket(entityEventPacket); + } +} From 577aa6c8fc6528f7096f2ec750093bf1d2f25646 Mon Sep 17 00:00:00 2001 From: RednedEpic Date: Sun, 17 Nov 2019 15:40:13 -0600 Subject: [PATCH 08/18] Add unload chunk translator --- .../network/translators/TranslatorsInit.java | 1 + .../java/world/JavaUnloadChunkTranslator.java | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUnloadChunkTranslator.java diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/TranslatorsInit.java b/connector/src/main/java/org/geysermc/connector/network/translators/TranslatorsInit.java index 5711409c..6539fb05 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/TranslatorsInit.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/TranslatorsInit.java @@ -142,6 +142,7 @@ public class TranslatorsInit { Registry.registerJava(ServerTeamPacket.class, new JavaTeamTranslator()); Registry.registerJava(ServerBlockChangePacket.class, new JavaBlockChangeTranslator()); Registry.registerJava(ServerMultiBlockChangePacket.class, new JavaMultiBlockChangeTranslator()); + Registry.registerJava(ServerUnloadChunkPacket.class, new JavaUnloadChunkTranslator()); Registry.registerJava(ServerOpenWindowPacket.class, new OpenWindowPacketTranslator()); diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUnloadChunkTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUnloadChunkTranslator.java new file mode 100644 index 00000000..b727f440 --- /dev/null +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUnloadChunkTranslator.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019 GeyserMC. http://geysermc.org + * + * 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. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/Geyser + */ + +package org.geysermc.connector.network.translators.java.world; + +import com.github.steveice10.mc.protocol.packet.ingame.server.world.ServerUnloadChunkPacket; +import org.geysermc.connector.network.session.GeyserSession; +import org.geysermc.connector.network.translators.PacketTranslator; +import org.geysermc.connector.world.chunk.ChunkPosition; + +public class JavaUnloadChunkTranslator extends PacketTranslator { + + @Override + public void translate(ServerUnloadChunkPacket packet, GeyserSession session) { + session.getChunkCache().removeChunk(new ChunkPosition(packet.getX(), packet.getZ())); + } +} From 068033aeaa575c2d25278c7def9c2497df01eb2a Mon Sep 17 00:00:00 2001 From: Tim203 Date: Tue, 19 Nov 2019 21:31:24 +0100 Subject: [PATCH 09/18] Fixes errors related to skins --- .../BedrockPlayerInitializedTranslator.java | 1 - .../spawn/JavaSpawnPlayerTranslator.java | 5 ++-- .../connector/utils/ProvidedSkin.java | 11 ++++---- .../connector/utils/SkinProvider.java | 13 ++++++--- .../geysermc/connector/utils/SkinUtils.java | 27 +++++++++---------- 5 files changed, 30 insertions(+), 27 deletions(-) diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockPlayerInitializedTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockPlayerInitializedTranslator.java index 435b192b..ba2e3c93 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockPlayerInitializedTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockPlayerInitializedTranslator.java @@ -15,7 +15,6 @@ public class BedrockPlayerInitializedTranslator extends PacketTranslator entity.sendPlayer(session)); } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/spawn/JavaSpawnPlayerTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/spawn/JavaSpawnPlayerTranslator.java index 4d00bdcb..660cac2e 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/spawn/JavaSpawnPlayerTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/spawn/JavaSpawnPlayerTranslator.java @@ -51,8 +51,9 @@ public class JavaSpawnPlayerTranslator extends PacketTranslator entity.sendPlayer(session)); + if (session.getUpstream().isInitialized()) { + SkinUtils.requestAndHandleSkinAndCape(entity, session, skinAndCape -> entity.sendPlayer(session)); + } } } diff --git a/connector/src/main/java/org/geysermc/connector/utils/ProvidedSkin.java b/connector/src/main/java/org/geysermc/connector/utils/ProvidedSkin.java index 71bf2984..78cd8933 100644 --- a/connector/src/main/java/org/geysermc/connector/utils/ProvidedSkin.java +++ b/connector/src/main/java/org/geysermc/connector/utils/ProvidedSkin.java @@ -3,7 +3,6 @@ package org.geysermc.connector.utils; import lombok.Getter; import javax.imageio.ImageIO; -import java.awt.Color; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -19,11 +18,11 @@ public class ProvidedSkin { try { for (int y = 0; y < image.getHeight(); y++) { for (int x = 0; x < image.getWidth(); x++) { - Color color = new Color(image.getRGB(x, y), true); - outputStream.write(color.getRed()); - outputStream.write(color.getGreen()); - outputStream.write(color.getBlue()); - outputStream.write(color.getAlpha()); + int rgba = image.getRGB(x, y); + outputStream.write((rgba >> 16) & 0xFF); // Red + outputStream.write((rgba >> 8) & 0xFF); // Green + outputStream.write(rgba & 0xFF); // Blue + outputStream.write((rgba >> 24) & 0xFF); // Alpha } } image.flush(); diff --git a/connector/src/main/java/org/geysermc/connector/utils/SkinProvider.java b/connector/src/main/java/org/geysermc/connector/utils/SkinProvider.java index 2d2aceab..b2634e3b 100644 --- a/connector/src/main/java/org/geysermc/connector/utils/SkinProvider.java +++ b/connector/src/main/java/org/geysermc/connector/utils/SkinProvider.java @@ -22,12 +22,12 @@ public class SkinProvider { public static final boolean ALLOW_THIRD_PARTY_CAPES = ((GeyserConnector)Geyser.getConnector()).getConfig().isAllowThirdPartyCapes(); private static final ExecutorService EXECUTOR_SERVICE = Executors.newFixedThreadPool(ALLOW_THIRD_PARTY_CAPES ? 21 : 14); - public static final Skin EMPTY_SKIN = new Skin(-1, ""); public static final byte[] STEVE_SKIN = new ProvidedSkin("bedrock/skin/skin_steve.png").getSkin(); + public static final Skin EMPTY_SKIN = new Skin(-1, "steve", STEVE_SKIN); private static Map cachedSkins = new ConcurrentHashMap<>(); private static Map> requestedSkins = new ConcurrentHashMap<>(); - public static final Cape EMPTY_CAPE = new Cape("", new byte[0], -1, true); + public static final Cape EMPTY_CAPE = new Cape("", "no-cape", new byte[0], -1, true); private static Map cachedCapes = new ConcurrentHashMap<>(); private static Map> requestedCapes = new ConcurrentHashMap<>(); @@ -149,8 +149,11 @@ public class SkinProvider { cape = requestImage(capeUrl, true); } catch (Exception ignored) {} // just ignore I guess + String[] urlSection = capeUrl.split("/"); // A real url is expected at this stage + return new Cape( capeUrl, + urlSection[urlSection.length - 1], // get the texture id and use it as cape id cape.length > 0 ? cape : EMPTY_CAPE.getCapeData(), System.currentTimeMillis(), cape.length == 0 @@ -209,13 +212,14 @@ public class SkinProvider { public static class Skin { private UUID skinOwner; private String textureUrl; - private byte[] skinData = STEVE_SKIN; + private byte[] skinData; private long requestedOn; private boolean updated; - private Skin(long requestedOn, String textureUrl) { + private Skin(long requestedOn, String textureUrl, byte[] skinData) { this.requestedOn = requestedOn; this.textureUrl = textureUrl; + this.skinData = skinData; } } @@ -223,6 +227,7 @@ public class SkinProvider { @Getter public static class Cape { private String textureUrl; + private String capeId; private byte[] capeData; private long requestedOn; private boolean failed; diff --git a/connector/src/main/java/org/geysermc/connector/utils/SkinUtils.java b/connector/src/main/java/org/geysermc/connector/utils/SkinUtils.java index 988501b8..640ae450 100644 --- a/connector/src/main/java/org/geysermc/connector/utils/SkinUtils.java +++ b/connector/src/main/java/org/geysermc/connector/utils/SkinUtils.java @@ -20,6 +20,7 @@ import java.util.function.Consumer; public class SkinUtils { public static PlayerListPacket.Entry buildCachedEntry(GameProfile profile, long geyserId) { GameProfileData data = GameProfileData.from(profile); + SkinProvider.Cape cape = SkinProvider.getCachedCape(data.getCapeUrl()); return buildEntryManually( profile.getId(), @@ -27,7 +28,8 @@ public class SkinUtils { geyserId, profile.getIdAsString(), SkinProvider.getCachedSkin(profile.getId()).getSkinData(), - SkinProvider.getCachedCape(data.getCapeUrl()).getCapeData(), + cape.getCapeId(), + cape.getCapeData(), getLegacySkinGeometry("geometry.humanoid.custom" + (data.isAlex() ? "Slim" : "")), "" ); @@ -40,6 +42,7 @@ public class SkinUtils { geyserId, profile.getIdAsString(), SkinProvider.STEVE_SKIN, + SkinProvider.EMPTY_CAPE.getCapeId(), SkinProvider.EMPTY_CAPE.getCapeData(), getLegacySkinGeometry("geometry.humanoid"), "" @@ -47,18 +50,13 @@ public class SkinUtils { } public static PlayerListPacket.Entry buildEntryManually(UUID uuid, String username, long geyserId, - String skinId, byte[] skinData, byte[] capeData, + String skinId, byte[] skinData, + String capeId, byte[] capeData, String geometryName, String geometryData) { - if (skinData == null || skinData.length == 0) { - skinData = SkinProvider.EMPTY_SKIN.getSkinData(); - } - - if (capeData == null || capeData.length == 0) { - capeData = SkinProvider.EMPTY_CAPE.getCapeData(); - } - - SerializedSkin serializedSkin = SerializedSkin.of(skinId, geometryName, ImageData.of(64, 64, skinData), - Collections.emptyList(), ImageData.of(64, 32, capeData), geometryData, "", true, false, false, "", ""); + SerializedSkin serializedSkin = SerializedSkin.of( + skinId, geometryName, ImageData.of(skinData), Collections.emptyList(), + ImageData.of(capeData), geometryData, "", true, false, false, capeId, uuid.toString() + ); PlayerListPacket.Entry entry = new PlayerListPacket.Entry(uuid); entry.setName(username); @@ -107,7 +105,7 @@ public class SkinUtils { public static void requestAndHandleSkinAndCape(PlayerEntity entity, GeyserSession session, Consumer skinAndCapeConsumer) { Geyser.getGeneralThreadPool().execute(() -> { - SkinUtils.GameProfileData data = SkinUtils.GameProfileData.from(entity.getProfile()); + GameProfileData data = GameProfileData.from(entity.getProfile()); SkinProvider.requestSkinAndCape(entity.getUuid(), data.getSkinUrl(), data.getCapeUrl()) .whenCompleteAsync((skinAndCape, throwable) -> { @@ -126,12 +124,13 @@ public class SkinUtils { entity.setLastSkinUpdate(skin.getRequestedOn()); if (session.getUpstream().isInitialized()) { - PlayerListPacket.Entry updatedEntry = SkinUtils.buildEntryManually( + PlayerListPacket.Entry updatedEntry = buildEntryManually( entity.getUuid(), entity.getUsername(), entity.getGeyserId(), entity.getUuid().toString(), skin.getSkinData(), + cape.getCapeId(), cape.getCapeData(), getLegacySkinGeometry("geometry.humanoid.custom" + (data.isAlex() ? "Slim" : "")), "" From 61d07ab4411505302fe06a9d440e8fc6913e41cd Mon Sep 17 00:00:00 2001 From: Redned Date: Tue, 19 Nov 2019 19:09:04 -0600 Subject: [PATCH 10/18] Create FUNDING.yml --- .github/FUNDING.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..b4b93dca --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: GeyserMC +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] From 0fe1a302a3d0a24e55a70260149120b88f0ee8b7 Mon Sep 17 00:00:00 2001 From: AJ Ferguson Date: Wed, 20 Nov 2019 17:28:40 -0900 Subject: [PATCH 11/18] Update mappings --- .../resources/bedrock/creative_items.json | 57 +- .../src/main/resources/bedrock/items.json | 524 +++++++++++++++++- connector/src/main/resources/blocks.json | 204 +++---- connector/src/main/resources/items.json | 346 ++++++------ 4 files changed, 829 insertions(+), 302 deletions(-) diff --git a/connector/src/main/resources/bedrock/creative_items.json b/connector/src/main/resources/bedrock/creative_items.json index 60073989..8453bf90 100644 --- a/connector/src/main/resources/bedrock/creative_items.json +++ b/connector/src/main/resources/bedrock/creative_items.json @@ -1039,6 +1039,9 @@ { "id" : 2 }, + { + "id" : 198 + }, { "id" : 243 }, @@ -1336,6 +1339,26 @@ "id" : -131, "damage" : 4 }, + { + "id" : -131, + "damage" : 11 + }, + { + "id" : -131, + "damage" : 9 + }, + { + "id" : -131, + "damage" : 10 + }, + { + "id" : -131, + "damage" : 8 + }, + { + "id" : -131, + "damage" : 12 + }, { "id" : -133, "damage" : 3 @@ -1441,6 +1464,9 @@ "id" : 175, "damage" : 5 }, + { + "id" : -216 + }, { "id" : 351, "damage" : 19 @@ -1748,6 +1774,10 @@ "id" : 383, "damage" : 113 }, + { + "id" : 383, + "damage" : 121 + }, { "id" : 383, "damage" : 33 @@ -2993,15 +3023,15 @@ { "id" : 54 }, - { - "id" : -203 - }, { "id" : 146 }, { "id" : 130 }, + { + "id" : -203 + }, { "id" : 205 }, @@ -3819,32 +3849,25 @@ "id" : 69 }, { - "id" : 143, - "damage" : 5 + "id" : 143 }, { - "id" : -144, - "damage" : 5 + "id" : -144 }, { - "id" : -141, - "damage" : 5 + "id" : -141 }, { - "id" : -143, - "damage" : 5 + "id" : -143 }, { - "id" : -140, - "damage" : 5 + "id" : -140 }, { - "id" : -142, - "damage" : 5 + "id" : -142 }, { - "id" : 77, - "damage" : 5 + "id" : 77 }, { "id" : 131 diff --git a/connector/src/main/resources/bedrock/items.json b/connector/src/main/resources/bedrock/items.json index 1c1c2fa1..e4b9e43e 100644 --- a/connector/src/main/resources/bedrock/items.json +++ b/connector/src/main/resources/bedrock/items.json @@ -51,6 +51,10 @@ "name": "minecraft:bread", "id": 297 }, + { + "name": "minecraft:light_block", + "id": -215 + }, { "name": "minecraft:porkchop", "id": 319 @@ -63,10 +67,18 @@ "name": "minecraft:fish", "id": 349 }, + { + "name": "minecraft:element_52", + "id": -63 + }, { "name": "minecraft:diamond_sword", "id": 276 }, + { + "name": "minecraft:element_38", + "id": -49 + }, { "name": "minecraft:sandstone_stairs", "id": 128 @@ -87,6 +99,10 @@ "name": "minecraft:horsearmorgold", "id": 418 }, + { + "name": "minecraft:element_74", + "id": -85 + }, { "name": "minecraft:pufferfish", "id": 462 @@ -107,6 +123,10 @@ "name": "minecraft:emerald", "id": 388 }, + { + "name": "minecraft:element_47", + "id": -58 + }, { "name": "minecraft:mushroom_stew", "id": 282 @@ -135,10 +155,22 @@ "name": "minecraft:cooked_fish", "id": 350 }, + { + "name": "minecraft:element_32", + "id": -43 + }, { "name": "minecraft:double_stone_slab4", "id": -166 }, + { + "name": "minecraft:element_5", + "id": -16 + }, + { + "name": "minecraft:element_25", + "id": -36 + }, { "name": "minecraft:polished_granite_stairs", "id": -172 @@ -159,10 +191,18 @@ "name": "minecraft:cooked_salmon", "id": 463 }, + { + "name": "minecraft:element_87", + "id": -98 + }, { "name": "minecraft:pumpkin_seeds", "id": 361 }, + { + "name": "minecraft:element_53", + "id": -64 + }, { "name": "minecraft:dried_kelp", "id": 464 @@ -219,6 +259,10 @@ "name": "minecraft:chicken", "id": 365 }, + { + "name": "minecraft:element_31", + "id": -42 + }, { "name": "minecraft:cooked_chicken", "id": 366 @@ -243,6 +287,10 @@ "name": "minecraft:diamond_axe", "id": 279 }, + { + "name": "minecraft:element_105", + "id": -116 + }, { "name": "minecraft:carrot", "id": 391 @@ -259,6 +307,10 @@ "name": "minecraft:baked_potato", "id": 393 }, + { + "name": "minecraft:element_15", + "id": -26 + }, { "name": "minecraft:carpet", "id": 171 @@ -367,6 +419,10 @@ "name": "minecraft:arrow", "id": 262 }, + { + "name": "minecraft:element_97", + "id": -108 + }, { "name": "minecraft:campfire", "id": 720 @@ -463,6 +519,10 @@ "name": "minecraft:slime_ball", "id": 341 }, + { + "name": "minecraft:element_58", + "id": -69 + }, { "name": "minecraft:golden_sword", "id": 283 @@ -483,6 +543,10 @@ "name": "minecraft:golden_axe", "id": 286 }, + { + "name": "minecraft:element_62", + "id": -73 + }, { "name": "minecraft:string", "id": 287 @@ -551,14 +615,26 @@ "name": "minecraft:grindstone", "id": -195 }, + { + "name": "minecraft:element_46", + "id": -57 + }, { "name": "minecraft:potion", "id": 373 }, + { + "name": "minecraft:wither_rose", + "id": -216 + }, { "name": "minecraft:leather_helmet", "id": 298 }, + { + "name": "minecraft:element_48", + "id": -59 + }, { "name": "minecraft:leather_chestplate", "id": 299 @@ -587,6 +663,14 @@ "name": "minecraft:stonebrick", "id": 98 }, + { + "name": "minecraft:stickypistonarmcollision", + "id": -217 + }, + { + "name": "minecraft:structure_void", + "id": 217 + }, { "name": "minecraft:chainmail_chestplate", "id": 303 @@ -595,6 +679,10 @@ "name": "minecraft:lit_blast_furnace", "id": -214 }, + { + "name": "minecraft:element_11", + "id": -22 + }, { "name": "minecraft:chainmail_leggings", "id": 304 @@ -631,6 +719,10 @@ "name": "minecraft:iron_boots", "id": 309 }, + { + "name": "minecraft:element_104", + "id": -115 + }, { "name": "minecraft:chorus_fruit_popped", "id": 433 @@ -643,6 +735,10 @@ "name": "minecraft:diamond_leggings", "id": 312 }, + { + "name": "minecraft:element_75", + "id": -86 + }, { "name": "minecraft:diamond_boots", "id": 313 @@ -787,6 +883,10 @@ "name": "minecraft:flowing_lava", "id": 10 }, + { + "name": "minecraft:element_86", + "id": -97 + }, { "name": "minecraft:red_glazed_terracotta", "id": 234 @@ -831,6 +931,10 @@ "name": "minecraft:clock", "id": 347 }, + { + "name": "minecraft:element_96", + "id": -107 + }, { "name": "minecraft:dye", "id": 351 @@ -859,6 +963,10 @@ "name": "minecraft:cake", "id": 354 }, + { + "name": "minecraft:element_113", + "id": -124 + }, { "name": "minecraft:mossy_cobblestone", "id": 48 @@ -891,6 +999,14 @@ "name": "minecraft:double_stone_slab2", "id": 182 }, + { + "name": "minecraft:element_3", + "id": -14 + }, + { + "name": "minecraft:element_23", + "id": -34 + }, { "name": "minecraft:skull", "id": 397 @@ -939,6 +1055,10 @@ "name": "minecraft:fermented_spider_eye", "id": 376 }, + { + "name": "minecraft:element_81", + "id": -92 + }, { "name": "minecraft:monster_egg", "id": 97 @@ -1019,10 +1139,18 @@ "name": "minecraft:netherstar", "id": 399 }, + { + "name": "minecraft:element_16", + "id": -27 + }, { "name": "minecraft:fireworks", "id": 401 }, + { + "name": "minecraft:element_30", + "id": -41 + }, { "name": "minecraft:fireworkscharge", "id": 402 @@ -1047,6 +1175,10 @@ "name": "minecraft:concrete", "id": 236 }, + { + "name": "minecraft:element_73", + "id": -84 + }, { "name": "minecraft:quartz", "id": 406 @@ -1059,10 +1191,18 @@ "name": "minecraft:leaves2", "id": 161 }, + { + "name": "minecraft:element_102", + "id": -113 + }, { "name": "minecraft:coral_fan_hang2", "id": -136 }, + { + "name": "minecraft:element_67", + "id": -78 + }, { "name": "minecraft:hopper_minecart", "id": 408 @@ -1107,13 +1247,17 @@ "name": "minecraft:record_13", "id": 500 }, + { + "name": "minecraft:stone_button", + "id": 77 + }, { "name": "minecraft:record_cat", "id": 501 }, { - "name": "minecraft:stone_button", - "id": 77 + "name": "minecraft:element_89", + "id": -100 }, { "name": "minecraft:record_blocks", @@ -1123,6 +1267,10 @@ "name": "minecraft:bamboo", "id": -163 }, + { + "name": "minecraft:element_72", + "id": -83 + }, { "name": "minecraft:record_chirp", "id": 503 @@ -1187,6 +1335,10 @@ "name": "minecraft:end_crystal", "id": 426 }, + { + "name": "minecraft:element_55", + "id": -66 + }, { "name": "minecraft:birch_door", "id": 428 @@ -1203,6 +1355,10 @@ "name": "minecraft:acacia_door", "id": 430 }, + { + "name": "minecraft:element_116", + "id": -127 + }, { "name": "minecraft:chorus_fruit", "id": 432 @@ -1251,6 +1407,10 @@ "name": "minecraft:prismarine_shard", "id": 409 }, + { + "name": "minecraft:element_112", + "id": -123 + }, { "name": "minecraft:totem", "id": 450 @@ -1263,6 +1423,10 @@ "name": "minecraft:pumpkin_stem", "id": 104 }, + { + "name": "minecraft:element_50", + "id": -61 + }, { "name": "minecraft:lever", "id": 69 @@ -1271,6 +1435,10 @@ "name": "minecraft:heart_of_the_sea", "id": 467 }, + { + "name": "minecraft:element_92", + "id": -103 + }, { "name": "minecraft:grass", "id": 2 @@ -1323,6 +1491,22 @@ "name": "minecraft:banner_pattern", "id": 434 }, + { + "name": "minecraft:suspicious_stew", + "id": 734 + }, + { + "name": "minecraft:element_4", + "id": -15 + }, + { + "name": "minecraft:element_24", + "id": -35 + }, + { + "name": "minecraft:camera", + "id": 498 + }, { "name": "minecraft:compound", "id": 499 @@ -1331,6 +1515,10 @@ "name": "minecraft:bleach", "id": 451 }, + { + "name": "minecraft:element_40", + "id": -51 + }, { "name": "minecraft:rapid_fertilizer", "id": 449 @@ -1399,6 +1587,10 @@ "name": "minecraft:coral_block", "id": -132 }, + { + "name": "minecraft:element_54", + "id": -65 + }, { "name": "minecraft:double_stone_slab", "id": 44 @@ -1407,6 +1599,14 @@ "name": "minecraft:double_stone_slab3", "id": -162 }, + { + "name": "minecraft:element_2", + "id": -13 + }, + { + "name": "minecraft:element_22", + "id": -33 + }, { "name": "minecraft:real_double_stone_slab2", "id": 181 @@ -1423,6 +1623,10 @@ "name": "minecraft:leaves", "id": 18 }, + { + "name": "minecraft:element_10", + "id": -21 + }, { "name": "minecraft:birch_button", "id": -141 @@ -1435,6 +1639,10 @@ "name": "minecraft:red_sandstone", "id": 179 }, + { + "name": "minecraft:element_91", + "id": -102 + }, { "name": "minecraft:wooden_slab", "id": 158 @@ -1463,10 +1671,6 @@ "name": "minecraft:planks", "id": 5 }, - { - "name": "minecraft:redstone_torch", - "id": 76 - }, { "name": "minecraft:quartz_block", "id": 155 @@ -1511,6 +1715,10 @@ "name": "minecraft:stained_glass", "id": 241 }, + { + "name": "minecraft:element_82", + "id": -93 + }, { "name": "minecraft:stained_glass_pane", "id": 160 @@ -1523,6 +1731,10 @@ "name": "minecraft:undyed_shulker_box", "id": 205 }, + { + "name": "minecraft:element_107", + "id": -118 + }, { "name": "minecraft:piston", "id": 33 @@ -1567,6 +1779,10 @@ "name": "minecraft:bell", "id": -206 }, + { + "name": "minecraft:element_42", + "id": -53 + }, { "name": "minecraft:cartography_table", "id": -200 @@ -1587,6 +1803,10 @@ "name": "minecraft:chemistry_table", "id": 238 }, + { + "name": "minecraft:element_70", + "id": -81 + }, { "name": "minecraft:tnt", "id": 46 @@ -1603,54 +1823,214 @@ "name": "minecraft:brown_mushroom", "id": 39 }, + { + "name": "minecraft:element_0", + "id": 36 + }, + { + "name": "minecraft:element_20", + "id": -31 + }, + { + "name": "minecraft:element_1", + "id": -12 + }, + { + "name": "minecraft:element_21", + "id": -32 + }, + { + "name": "minecraft:element_6", + "id": -17 + }, + { + "name": "minecraft:element_26", + "id": -37 + }, + { + "name": "minecraft:element_7", + "id": -18 + }, + { + "name": "minecraft:element_27", + "id": -38 + }, + { + "name": "minecraft:element_8", + "id": -19 + }, + { + "name": "minecraft:element_28", + "id": -39 + }, { "name": "minecraft:dark_oak_pressure_plate", "id": -152 }, + { + "name": "minecraft:element_9", + "id": -20 + }, + { + "name": "minecraft:element_29", + "id": -40 + }, { "name": "minecraft:item.spruce_door", "id": 193 }, + { + "name": "minecraft:element_12", + "id": -23 + }, { "name": "minecraft:cyan_glazed_terracotta", "id": 229 }, + { + "name": "minecraft:element_13", + "id": -24 + }, + { + "name": "minecraft:element_14", + "id": -25 + }, { "name": "minecraft:iron_ore", "id": 15 }, + { + "name": "minecraft:element_17", + "id": -28 + }, + { + "name": "minecraft:element_18", + "id": -29 + }, { "name": "minecraft:birch_pressure_plate", "id": -151 }, + { + "name": "minecraft:element_19", + "id": -30 + }, { "name": "minecraft:wooden_pressure_plate", "id": 72 }, + { + "name": "minecraft:element_33", + "id": -44 + }, + { + "name": "minecraft:element_34", + "id": -45 + }, + { + "name": "minecraft:element_35", + "id": -46 + }, { "name": "minecraft:composter", "id": -213 }, + { + "name": "minecraft:element_36", + "id": -47 + }, + { + "name": "minecraft:element_37", + "id": -48 + }, + { + "name": "minecraft:element_39", + "id": -50 + }, + { + "name": "minecraft:element_41", + "id": -52 + }, { "name": "minecraft:hay_block", "id": 170 }, + { + "name": "minecraft:element_43", + "id": -54 + }, { "name": "minecraft:lit_redstone_lamp", "id": 124 }, + { + "name": "minecraft:element_44", + "id": -55 + }, + { + "name": "minecraft:element_45", + "id": -56 + }, + { + "name": "minecraft:element_49", + "id": -60 + }, + { + "name": "minecraft:element_51", + "id": -62 + }, + { + "name": "minecraft:element_56", + "id": -67 + }, + { + "name": "minecraft:element_57", + "id": -68 + }, + { + "name": "minecraft:element_59", + "id": -70 + }, + { + "name": "minecraft:element_60", + "id": -71 + }, { "name": "minecraft:dropper", "id": 125 }, + { + "name": "minecraft:element_61", + "id": -72 + }, + { + "name": "minecraft:element_63", + "id": -74 + }, + { + "name": "minecraft:element_64", + "id": -75 + }, + { + "name": "minecraft:element_65", + "id": -76 + }, { "name": "minecraft:coral_fan_hang3", "id": -137 }, + { + "name": "minecraft:element_66", + "id": -77 + }, { "name": "minecraft:redstone_lamp", "id": 123 }, + { + "name": "minecraft:element_68", + "id": -79 + }, { "name": "minecraft:spruce_trapdoor", "id": -149 @@ -1659,18 +2039,54 @@ "name": "minecraft:purple_glazed_terracotta", "id": 219 }, + { + "name": "minecraft:element_69", + "id": -80 + }, { "name": "minecraft:iron_block", "id": 42 }, + { + "name": "minecraft:element_71", + "id": -82 + }, + { + "name": "minecraft:element_76", + "id": -87 + }, + { + "name": "minecraft:element_77", + "id": -88 + }, { "name": "minecraft:water", "id": 9 }, + { + "name": "minecraft:element_78", + "id": -89 + }, + { + "name": "minecraft:element_79", + "id": -90 + }, + { + "name": "minecraft:element_80", + "id": -91 + }, { "name": "minecraft:netherreactor", "id": 247 }, + { + "name": "minecraft:element_83", + "id": -94 + }, + { + "name": "minecraft:element_84", + "id": -95 + }, { "name": "minecraft:jungle_wall_sign", "id": -189 @@ -1679,6 +2095,18 @@ "name": "minecraft:end_brick_stairs", "id": -178 }, + { + "name": "minecraft:element_85", + "id": -96 + }, + { + "name": "minecraft:element_88", + "id": -99 + }, + { + "name": "minecraft:element_90", + "id": -101 + }, { "name": "minecraft:birch_standing_sign", "id": -186 @@ -1687,6 +2115,18 @@ "name": "minecraft:gold_ore", "id": 14 }, + { + "name": "minecraft:element_93", + "id": -104 + }, + { + "name": "minecraft:element_94", + "id": -105 + }, + { + "name": "minecraft:element_95", + "id": -106 + }, { "name": "minecraft:glass", "id": 20 @@ -1695,10 +2135,62 @@ "name": "minecraft:red_nether_brick", "id": 215 }, + { + "name": "minecraft:element_98", + "id": -109 + }, + { + "name": "minecraft:element_99", + "id": -110 + }, + { + "name": "minecraft:element_100", + "id": -111 + }, + { + "name": "minecraft:element_101", + "id": -112 + }, + { + "name": "minecraft:element_103", + "id": -114 + }, + { + "name": "minecraft:element_106", + "id": -117 + }, + { + "name": "minecraft:element_108", + "id": -119 + }, + { + "name": "minecraft:element_109", + "id": -120 + }, + { + "name": "minecraft:element_110", + "id": -121 + }, + { + "name": "minecraft:element_111", + "id": -122 + }, + { + "name": "minecraft:element_114", + "id": -125 + }, { "name": "minecraft:birch_fence_gate", "id": 184 }, + { + "name": "minecraft:element_115", + "id": -126 + }, + { + "name": "minecraft:element_117", + "id": -128 + }, { "name": "minecraft:slime", "id": 165 @@ -1707,6 +2199,10 @@ "name": "minecraft:spruce_standing_sign", "id": -181 }, + { + "name": "minecraft:element_118", + "id": -129 + }, { "name": "minecraft:gravel", "id": 13 @@ -1855,6 +2351,10 @@ "name": "minecraft:red_nether_brick_stairs", "id": -184 }, + { + "name": "minecraft:redstone_torch", + "id": 76 + }, { "name": "minecraft:ice", "id": 79 @@ -2179,6 +2679,14 @@ "name": "minecraft:chorus_plant", "id": 240 }, + { + "name": "minecraft:fire", + "id": 51 + }, + { + "name": "minecraft:item.camera", + "id": 242 + }, { "name": "minecraft:stonecutter", "id": 245 @@ -2203,10 +2711,6 @@ "name": "minecraft:stripped_dark_oak_log", "id": -9 }, - { - "name": "minecraft:fire", - "id": 51 - }, { "name": "minecraft:hard_glass_pane", "id": 190 diff --git a/connector/src/main/resources/blocks.json b/connector/src/main/resources/blocks.json index df9f305c..0e8f0d0e 100644 --- a/connector/src/main/resources/blocks.json +++ b/connector/src/main/resources/blocks.json @@ -577,339 +577,339 @@ }, "minecraft:oak_leaves[distance=1,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 8 + "bedrock_data": 4 }, "minecraft:oak_leaves[distance=1,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 4 + "bedrock_data": 0 }, "minecraft:oak_leaves[distance=2,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 8 + "bedrock_data": 4 }, "minecraft:oak_leaves[distance=2,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 4 + "bedrock_data": 0 }, "minecraft:oak_leaves[distance=3,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 8 + "bedrock_data": 4 }, "minecraft:oak_leaves[distance=3,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 4 + "bedrock_data": 0 }, "minecraft:oak_leaves[distance=4,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 8 + "bedrock_data": 4 }, "minecraft:oak_leaves[distance=4,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 4 + "bedrock_data": 0 }, "minecraft:oak_leaves[distance=5,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 8 + "bedrock_data": 4 }, "minecraft:oak_leaves[distance=5,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 4 + "bedrock_data": 0 }, "minecraft:oak_leaves[distance=6,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 8 + "bedrock_data": 4 }, "minecraft:oak_leaves[distance=6,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 4 + "bedrock_data": 0 }, "minecraft:oak_leaves[distance=7,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 8 + "bedrock_data": 4 }, "minecraft:oak_leaves[distance=7,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 4 + "bedrock_data": 0 }, "minecraft:spruce_leaves[distance=1,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 9 + "bedrock_data": 5 }, "minecraft:spruce_leaves[distance=1,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 5 + "bedrock_data": 1 }, "minecraft:spruce_leaves[distance=2,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 9 + "bedrock_data": 5 }, "minecraft:spruce_leaves[distance=2,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 5 + "bedrock_data": 1 }, "minecraft:spruce_leaves[distance=3,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 9 + "bedrock_data": 5 }, "minecraft:spruce_leaves[distance=3,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 5 + "bedrock_data": 1 }, "minecraft:spruce_leaves[distance=4,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 9 + "bedrock_data": 5 }, "minecraft:spruce_leaves[distance=4,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 5 + "bedrock_data": 1 }, "minecraft:spruce_leaves[distance=5,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 9 + "bedrock_data": 5 }, "minecraft:spruce_leaves[distance=5,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 5 + "bedrock_data": 1 }, "minecraft:spruce_leaves[distance=6,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 9 + "bedrock_data": 5 }, "minecraft:spruce_leaves[distance=6,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 5 + "bedrock_data": 1 }, "minecraft:spruce_leaves[distance=7,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 9 + "bedrock_data": 5 }, "minecraft:spruce_leaves[distance=7,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 5 + "bedrock_data": 1 }, "minecraft:birch_leaves[distance=1,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 10 + "bedrock_data": 6 }, "minecraft:birch_leaves[distance=1,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 6 + "bedrock_data": 2 }, "minecraft:birch_leaves[distance=2,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 10 + "bedrock_data": 6 }, "minecraft:birch_leaves[distance=2,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 6 + "bedrock_data": 2 }, "minecraft:birch_leaves[distance=3,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 10 + "bedrock_data": 6 }, "minecraft:birch_leaves[distance=3,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 6 + "bedrock_data": 2 }, "minecraft:birch_leaves[distance=4,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 10 + "bedrock_data": 6 }, "minecraft:birch_leaves[distance=4,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 6 + "bedrock_data": 2 }, "minecraft:birch_leaves[distance=5,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 10 + "bedrock_data": 6 }, "minecraft:birch_leaves[distance=5,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 6 + "bedrock_data": 2 }, "minecraft:birch_leaves[distance=6,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 10 + "bedrock_data": 6 }, "minecraft:birch_leaves[distance=6,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 6 + "bedrock_data": 2 }, "minecraft:birch_leaves[distance=7,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 10 + "bedrock_data": 6 }, "minecraft:birch_leaves[distance=7,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 6 + "bedrock_data": 2 }, "minecraft:jungle_leaves[distance=1,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 11 + "bedrock_data": 7 }, "minecraft:jungle_leaves[distance=1,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 7 + "bedrock_data": 3 }, "minecraft:jungle_leaves[distance=2,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 11 + "bedrock_data": 7 }, "minecraft:jungle_leaves[distance=2,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 7 + "bedrock_data": 3 }, "minecraft:jungle_leaves[distance=3,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 11 + "bedrock_data": 7 }, "minecraft:jungle_leaves[distance=3,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 7 + "bedrock_data": 3 }, "minecraft:jungle_leaves[distance=4,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 11 + "bedrock_data": 7 }, "minecraft:jungle_leaves[distance=4,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 7 + "bedrock_data": 3 }, "minecraft:jungle_leaves[distance=5,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 11 + "bedrock_data": 7 }, "minecraft:jungle_leaves[distance=5,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 7 + "bedrock_data": 3 }, "minecraft:jungle_leaves[distance=6,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 11 + "bedrock_data": 7 }, "minecraft:jungle_leaves[distance=6,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 7 + "bedrock_data": 3 }, "minecraft:jungle_leaves[distance=7,persistent=true]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 11 + "bedrock_data": 7 }, "minecraft:jungle_leaves[distance=7,persistent=false]": { "bedrock_identifier": "minecraft:leaves", - "bedrock_data": 7 + "bedrock_data": 3 }, "minecraft:acacia_leaves[distance=1,persistent=true]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 8 + "bedrock_data": 4 }, "minecraft:acacia_leaves[distance=1,persistent=false]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 4 + "bedrock_data": 0 }, "minecraft:acacia_leaves[distance=2,persistent=true]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 8 + "bedrock_data": 4 }, "minecraft:acacia_leaves[distance=2,persistent=false]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 4 + "bedrock_data": 0 }, "minecraft:acacia_leaves[distance=3,persistent=true]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 8 + "bedrock_data": 4 }, "minecraft:acacia_leaves[distance=3,persistent=false]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 4 + "bedrock_data": 0 }, "minecraft:acacia_leaves[distance=4,persistent=true]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 8 + "bedrock_data": 4 }, "minecraft:acacia_leaves[distance=4,persistent=false]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 4 + "bedrock_data": 0 }, "minecraft:acacia_leaves[distance=5,persistent=true]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 8 + "bedrock_data": 4 }, "minecraft:acacia_leaves[distance=5,persistent=false]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 4 + "bedrock_data": 0 }, "minecraft:acacia_leaves[distance=6,persistent=true]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 8 + "bedrock_data": 4 }, "minecraft:acacia_leaves[distance=6,persistent=false]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 4 + "bedrock_data": 0 }, "minecraft:acacia_leaves[distance=7,persistent=true]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 8 + "bedrock_data": 4 }, "minecraft:acacia_leaves[distance=7,persistent=false]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 4 + "bedrock_data": 0 }, "minecraft:dark_oak_leaves[distance=1,persistent=true]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 9 + "bedrock_data": 5 }, "minecraft:dark_oak_leaves[distance=1,persistent=false]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 5 + "bedrock_data": 1 }, "minecraft:dark_oak_leaves[distance=2,persistent=true]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 9 + "bedrock_data": 5 }, "minecraft:dark_oak_leaves[distance=2,persistent=false]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 5 + "bedrock_data": 1 }, "minecraft:dark_oak_leaves[distance=3,persistent=true]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 9 + "bedrock_data": 5 }, "minecraft:dark_oak_leaves[distance=3,persistent=false]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 5 + "bedrock_data": 1 }, "minecraft:dark_oak_leaves[distance=4,persistent=true]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 9 + "bedrock_data": 5 }, "minecraft:dark_oak_leaves[distance=4,persistent=false]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 5 + "bedrock_data": 1 }, "minecraft:dark_oak_leaves[distance=5,persistent=true]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 9 + "bedrock_data": 5 }, "minecraft:dark_oak_leaves[distance=5,persistent=false]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 5 + "bedrock_data": 1 }, "minecraft:dark_oak_leaves[distance=6,persistent=true]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 9 + "bedrock_data": 5 }, "minecraft:dark_oak_leaves[distance=6,persistent=false]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 5 + "bedrock_data": 1 }, "minecraft:dark_oak_leaves[distance=7,persistent=true]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 9 + "bedrock_data": 5 }, "minecraft:dark_oak_leaves[distance=7,persistent=false]": { "bedrock_identifier": "minecraft:leaves2", - "bedrock_data": 5 + "bedrock_data": 1 }, "minecraft:sponge": { "bedrock_identifier": "minecraft:sponge", @@ -5688,8 +5688,8 @@ "bedrock_data": 9 }, "minecraft:wither_rose": { - "bedrock_identifier": "minecraft:red_flower", - "bedrock_data": 11 + "bedrock_identifier": "minecraft:wither_rose", + "bedrock_data": 0 }, "minecraft:lily_of_the_valley": { "bedrock_identifier": "minecraft:red_flower", @@ -34892,7 +34892,7 @@ "bedrock_data": 8 }, "minecraft:structure_void": { - "bedrock_identifier": "minecraft:air", + "bedrock_identifier": "minecraft:structure_void", "bedrock_data": 0 }, "minecraft:observer[facing=north,powered=true]": { @@ -35897,23 +35897,23 @@ }, "minecraft:dead_tube_coral_block": { "bedrock_identifier": "minecraft:coral_block", - "bedrock_data": 5 + "bedrock_data": 8 }, "minecraft:dead_brain_coral_block": { "bedrock_identifier": "minecraft:coral_block", - "bedrock_data": 6 + "bedrock_data": 9 }, "minecraft:dead_bubble_coral_block": { "bedrock_identifier": "minecraft:coral_block", - "bedrock_data": 7 + "bedrock_data": 10 }, "minecraft:dead_fire_coral_block": { "bedrock_identifier": "minecraft:coral_block", - "bedrock_data": 8 + "bedrock_data": 11 }, "minecraft:dead_horn_coral_block": { "bedrock_identifier": "minecraft:coral_block", - "bedrock_data": 9 + "bedrock_data": 12 }, "minecraft:tube_coral_block": { "bedrock_identifier": "minecraft:coral_block", @@ -35937,43 +35937,43 @@ }, "minecraft:dead_tube_coral[waterlogged=true]": { "bedrock_identifier": "minecraft:coral", - "bedrock_data": 0 + "bedrock_data": 8 }, "minecraft:dead_tube_coral[waterlogged=false]": { "bedrock_identifier": "minecraft:coral", - "bedrock_data": 0 + "bedrock_data": 8 }, "minecraft:dead_brain_coral[waterlogged=true]": { "bedrock_identifier": "minecraft:coral", - "bedrock_data": 1 + "bedrock_data": 9 }, "minecraft:dead_brain_coral[waterlogged=false]": { "bedrock_identifier": "minecraft:coral", - "bedrock_data": 1 + "bedrock_data": 9 }, "minecraft:dead_bubble_coral[waterlogged=true]": { "bedrock_identifier": "minecraft:coral", - "bedrock_data": 2 + "bedrock_data": 10 }, "minecraft:dead_bubble_coral[waterlogged=false]": { "bedrock_identifier": "minecraft:coral", - "bedrock_data": 2 + "bedrock_data": 10 }, "minecraft:dead_fire_coral[waterlogged=true]": { "bedrock_identifier": "minecraft:coral", - "bedrock_data": 3 + "bedrock_data": 11 }, "minecraft:dead_fire_coral[waterlogged=false]": { "bedrock_identifier": "minecraft:coral", - "bedrock_data": 3 + "bedrock_data": 11 }, "minecraft:dead_horn_coral[waterlogged=true]": { "bedrock_identifier": "minecraft:coral", - "bedrock_data": 4 + "bedrock_data": 12 }, "minecraft:dead_horn_coral[waterlogged=false]": { "bedrock_identifier": "minecraft:coral", - "bedrock_data": 4 + "bedrock_data": 12 }, "minecraft:tube_coral[waterlogged=true]": { "bedrock_identifier": "minecraft:coral", diff --git a/connector/src/main/resources/items.json b/connector/src/main/resources/items.json index 86df5991..746b30b4 100644 --- a/connector/src/main/resources/items.json +++ b/connector/src/main/resources/items.json @@ -1,6 +1,6 @@ { "minecraft:air": { - "bedrock_id": 0, + "bedrock_id": -158, "bedrock_data": 0 }, "minecraft:stone": { @@ -176,52 +176,52 @@ "bedrock_data": 0 }, "minecraft:stripped_oak_wood": { - "bedrock_id": -10, - "bedrock_data": 0 + "bedrock_id": -212, + "bedrock_data": 8 }, "minecraft:stripped_spruce_wood": { - "bedrock_id": -5, - "bedrock_data": 0 + "bedrock_id": -212, + "bedrock_data": 9 }, "minecraft:stripped_birch_wood": { - "bedrock_id": -6, - "bedrock_data": 0 + "bedrock_id": -212, + "bedrock_data": 10 }, "minecraft:stripped_jungle_wood": { - "bedrock_id": -7, - "bedrock_data": 0 + "bedrock_id": -212, + "bedrock_data": 11 }, "minecraft:stripped_acacia_wood": { - "bedrock_id": -8, - "bedrock_data": 0 + "bedrock_id": -212, + "bedrock_data": 12 }, "minecraft:stripped_dark_oak_wood": { - "bedrock_id": -9, - "bedrock_data": 0 + "bedrock_id": -212, + "bedrock_data": 13 }, "minecraft:oak_wood": { - "bedrock_id": 248, + "bedrock_id": -212, "bedrock_data": 0 }, "minecraft:spruce_wood": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -212, + "bedrock_data": 1 }, "minecraft:birch_wood": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -212, + "bedrock_data": 2 }, "minecraft:jungle_wood": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -212, + "bedrock_data": 3 }, "minecraft:acacia_wood": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -212, + "bedrock_data": 4 }, "minecraft:dark_oak_wood": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -212, + "bedrock_data": 5 }, "minecraft:oak_leaves": { "bedrock_id": 18, @@ -269,7 +269,7 @@ }, "minecraft:dispenser": { "bedrock_id": 23, - "bedrock_data": 3 + "bedrock_data": 0 }, "minecraft:sandstone": { "bedrock_id": 24, @@ -297,7 +297,7 @@ }, "minecraft:sticky_piston": { "bedrock_id": 29, - "bedrock_data": 1 + "bedrock_data": 0 }, "minecraft:cobweb": { "bedrock_id": 30, @@ -325,7 +325,7 @@ }, "minecraft:piston": { "bedrock_id": 33, - "bedrock_data": 1 + "bedrock_data": 0 }, "minecraft:white_wool": { "bedrock_id": 35, @@ -432,15 +432,15 @@ "bedrock_data": 8 }, "minecraft:cornflower": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 38, + "bedrock_data": 9 }, "minecraft:lily_of_the_valley": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 38, + "bedrock_data": 10 }, "minecraft:wither_rose": { - "bedrock_id": 248, + "bedrock_id": -216, "bedrock_data": 0 }, "minecraft:brown_mushroom": { @@ -484,11 +484,11 @@ "bedrock_data": 5 }, "minecraft:stone_slab": { - "bedrock_id": 44, - "bedrock_data": 0 + "bedrock_id": -166, + "bedrock_data": 2 }, "minecraft:smooth_stone_slab": { - "bedrock_id": 248, + "bedrock_id": 44, "bedrock_data": 0 }, "minecraft:sandstone_slab": { @@ -496,8 +496,8 @@ "bedrock_data": 1 }, "minecraft:cut_sandstone_slab": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -166, + "bedrock_data": 3 }, "minecraft:petrified_oak_slab": { "bedrock_id": 44, @@ -528,8 +528,8 @@ "bedrock_data": 0 }, "minecraft:cut_red_sandstone_slab": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -166, + "bedrock_data": 4 }, "minecraft:purpur_slab": { "bedrock_id": 182, @@ -548,19 +548,19 @@ "bedrock_data": 3 }, "minecraft:smooth_quartz": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 155, + "bedrock_data": 3 }, "minecraft:smooth_red_sandstone": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 179, + "bedrock_data": 3 }, "minecraft:smooth_sandstone": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 24, + "bedrock_data": 3 }, "minecraft:smooth_stone": { - "bedrock_id": 248, + "bedrock_id": -183, "bedrock_data": 0 }, "minecraft:bricks": { @@ -697,7 +697,7 @@ }, "minecraft:stone_button": { "bedrock_id": 77, - "bedrock_data": 5 + "bedrock_data": 0 }, "minecraft:snow": { "bedrock_id": 78, @@ -988,56 +988,56 @@ "bedrock_data": 1 }, "minecraft:brick_wall": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 139, + "bedrock_data": 6 }, "minecraft:prismarine_wall": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 139, + "bedrock_data": 11 }, "minecraft:red_sandstone_wall": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 139, + "bedrock_data": 12 }, "minecraft:mossy_stone_brick_wall": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 139, + "bedrock_data": 8 }, "minecraft:granite_wall": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 139, + "bedrock_data": 2 }, "minecraft:stone_brick_wall": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 139, + "bedrock_data": 7 }, "minecraft:nether_brick_wall": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 139, + "bedrock_data": 9 }, "minecraft:andesite_wall": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 139, + "bedrock_data": 4 }, "minecraft:red_nether_brick_wall": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 139, + "bedrock_data": 13 }, "minecraft:sandstone_wall": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 139, + "bedrock_data": 5 }, "minecraft:end_stone_brick_wall": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 139, + "bedrock_data": 10 }, "minecraft:diorite_wall": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 139, + "bedrock_data": 3 }, "minecraft:oak_button": { "bedrock_id": 143, - "bedrock_data": 5 + "bedrock_data": 0 }, "minecraft:spruce_button": { "bedrock_id": -144, @@ -1121,7 +1121,7 @@ }, "minecraft:dropper": { "bedrock_id": 125, - "bedrock_data": 3 + "bedrock_data": 0 }, "minecraft:white_terracotta": { "bedrock_id": 159, @@ -1188,7 +1188,7 @@ "bedrock_data": 15 }, "minecraft:barrier": { - "bedrock_id": 95, + "bedrock_id": -161, "bedrock_data": 0 }, "minecraft:iron_trapdoor": { @@ -1844,24 +1844,24 @@ "bedrock_data": 4 }, "minecraft:dead_brain_coral": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -131, + "bedrock_data": 9 }, "minecraft:dead_bubble_coral": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -131, + "bedrock_data": 10 }, "minecraft:dead_fire_coral": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -131, + "bedrock_data": 11 }, "minecraft:dead_horn_coral": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -131, + "bedrock_data": 12 }, "minecraft:dead_tube_coral": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -131, + "bedrock_data": 8 }, "minecraft:tube_coral_fan": { "bedrock_id": -133, @@ -1912,51 +1912,51 @@ "bedrock_data": 0 }, "minecraft:polished_granite_stairs": { - "bedrock_id": 248, + "bedrock_id": -172, "bedrock_data": 0 }, "minecraft:smooth_red_sandstone_stairs": { - "bedrock_id": 248, + "bedrock_id": -176, "bedrock_data": 0 }, "minecraft:mossy_stone_brick_stairs": { - "bedrock_id": 248, + "bedrock_id": -175, "bedrock_data": 0 }, "minecraft:polished_diorite_stairs": { - "bedrock_id": 248, + "bedrock_id": -173, "bedrock_data": 0 }, "minecraft:mossy_cobblestone_stairs": { - "bedrock_id": 248, + "bedrock_id": -179, "bedrock_data": 0 }, "minecraft:end_stone_brick_stairs": { - "bedrock_id": 248, + "bedrock_id": -178, "bedrock_data": 0 }, "minecraft:stone_stairs": { - "bedrock_id": 248, + "bedrock_id": -180, "bedrock_data": 0 }, "minecraft:smooth_sandstone_stairs": { - "bedrock_id": 248, + "bedrock_id": -177, "bedrock_data": 0 }, "minecraft:smooth_quartz_stairs": { - "bedrock_id": 248, + "bedrock_id": -185, "bedrock_data": 0 }, "minecraft:granite_stairs": { - "bedrock_id": 248, + "bedrock_id": -169, "bedrock_data": 0 }, "minecraft:andesite_stairs": { - "bedrock_id": 248, + "bedrock_id": -171, "bedrock_data": 0 }, "minecraft:red_nether_brick_stairs": { - "bedrock_id": 248, + "bedrock_id": -184, "bedrock_data": 0 }, "minecraft:polished_andesite_stairs": { @@ -1968,59 +1968,59 @@ "bedrock_data": 0 }, "minecraft:polished_granite_slab": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -162, + "bedrock_data": 7 }, "minecraft:smooth_red_sandstone_slab": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -162, + "bedrock_data": 1 }, "minecraft:mossy_stone_brick_slab": { - "bedrock_id": 248, + "bedrock_id": -166, "bedrock_data": 0 }, "minecraft:polished_diorite_slab": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -162, + "bedrock_data": 5 }, "minecraft:mossy_cobblestone_slab": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 182, + "bedrock_data": 5 }, "minecraft:end_stone_brick_slab": { - "bedrock_id": 248, + "bedrock_id": -162, "bedrock_data": 0 }, "minecraft:smooth_sandstone_slab": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 182, + "bedrock_data": 6 }, "minecraft:smooth_quartz_slab": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -166, + "bedrock_data": 1 }, "minecraft:granite_slab": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -162, + "bedrock_data": 6 }, "minecraft:andesite_slab": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -162, + "bedrock_data": 3 }, "minecraft:red_nether_brick_slab": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 182, + "bedrock_data": 7 }, "minecraft:polished_andesite_slab": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -162, + "bedrock_data": 2 }, "minecraft:diorite_slab": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": -162, + "bedrock_data": 4 }, "minecraft:scaffolding": { - "bedrock_id": 248, + "bedrock_id": -165, "bedrock_data": 0 }, "minecraft:iron_door": { @@ -2360,7 +2360,7 @@ "bedrock_data": 0 }, "minecraft:spruce_sign": { - "bedrock_id": 427, + "bedrock_id": 472, "bedrock_data": 0 }, "minecraft:birch_sign": { @@ -2376,7 +2376,7 @@ "bedrock_data": 0 }, "minecraft:dark_oak_sign": { - "bedrock_id": 276, + "bedrock_id": 476, "bedrock_data": 0 }, "minecraft:bucket": { @@ -2588,20 +2588,20 @@ "bedrock_data": 15 }, "minecraft:blue_dye": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 351, + "bedrock_data": 18 }, "minecraft:brown_dye": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 351, + "bedrock_data": 17 }, "minecraft:black_dye": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 351, + "bedrock_data": 16 }, "minecraft:white_dye": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 351, + "bedrock_data": 19 }, "minecraft:bone": { "bedrock_id": 352, @@ -2796,8 +2796,8 @@ "bedrock_data": 43 }, "minecraft:cat_spawn_egg": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 383, + "bedrock_data": 75 }, "minecraft:cave_spider_spawn_egg": { "bedrock_id": 383, @@ -2848,8 +2848,8 @@ "bedrock_data": 104 }, "minecraft:fox_spawn_egg": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 383, + "bedrock_data": 121 }, "minecraft:ghast_spawn_egg": { "bedrock_id": 383, @@ -2888,8 +2888,8 @@ "bedrock_data": 22 }, "minecraft:panda_spawn_egg": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 383, + "bedrock_data": 113 }, "minecraft:parrot_spawn_egg": { "bedrock_id": 383, @@ -2904,8 +2904,8 @@ "bedrock_data": 12 }, "minecraft:pillager_spawn_egg": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 383, + "bedrock_data": 114 }, "minecraft:polar_bear_spawn_egg": { "bedrock_id": 383, @@ -2920,8 +2920,8 @@ "bedrock_data": 18 }, "minecraft:ravager_spawn_egg": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 383, + "bedrock_data": 59 }, "minecraft:salmon_spawn_egg": { "bedrock_id": 383, @@ -2964,8 +2964,8 @@ "bedrock_data": 46 }, "minecraft:trader_llama_spawn_egg": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 383, + "bedrock_data": 29 }, "minecraft:tropical_fish_spawn_egg": { "bedrock_id": 383, @@ -2988,8 +2988,8 @@ "bedrock_data": 57 }, "minecraft:wandering_trader_spawn_egg": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 383, + "bedrock_data": 118 }, "minecraft:witch_spawn_egg": { "bedrock_id": 383, @@ -3301,18 +3301,18 @@ }, "minecraft:spectral_arrow": { "bedrock_id": 262, - "bedrock_data": 2 + "bedrock_data": 0 }, "minecraft:tipped_arrow": { - "bedrock_id": 440, - "bedrock_data": 1 + "bedrock_id": 262, + "bedrock_data": 0 }, "minecraft:lingering_potion": { "bedrock_id": 441, "bedrock_data": 0 }, "minecraft:shield": { - "bedrock_id": 268, + "bedrock_id": 513, "bedrock_data": 0 }, "minecraft:elytra": { @@ -3356,7 +3356,7 @@ "bedrock_data": 0 }, "minecraft:debug_stick": { - "bedrock_id": 248, + "bedrock_id": 280, "bedrock_data": 0 }, "minecraft:music_disc_13": { @@ -3428,7 +3428,7 @@ "bedrock_data": 0 }, "minecraft:suspicious_stew": { - "bedrock_id": 248, + "bedrock_id": 734, "bedrock_data": 0 }, "minecraft:loom": { @@ -3436,75 +3436,75 @@ "bedrock_data": 0 }, "minecraft:flower_banner_pattern": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 434, + "bedrock_data": 2 }, "minecraft:creeper_banner_pattern": { - "bedrock_id": 248, + "bedrock_id": 434, "bedrock_data": 0 }, "minecraft:skull_banner_pattern": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 434, + "bedrock_data": 1 }, "minecraft:mojang_banner_pattern": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 434, + "bedrock_data": 3 }, "minecraft:globe_banner_pattern": { - "bedrock_id": 248, - "bedrock_data": 0 + "bedrock_id": 434, + "bedrock_data": 4 }, "minecraft:barrel": { - "bedrock_id": 248, + "bedrock_id": -203, "bedrock_data": 0 }, "minecraft:smoker": { - "bedrock_id": 248, + "bedrock_id": -198, "bedrock_data": 0 }, "minecraft:blast_furnace": { - "bedrock_id": 248, + "bedrock_id": -196, "bedrock_data": 0 }, "minecraft:cartography_table": { - "bedrock_id": 248, + "bedrock_id": -200, "bedrock_data": 0 }, "minecraft:fletching_table": { - "bedrock_id": 248, + "bedrock_id": -201, "bedrock_data": 0 }, "minecraft:grindstone": { - "bedrock_id": 248, + "bedrock_id": -195, "bedrock_data": 0 }, "minecraft:lectern": { - "bedrock_id": 248, + "bedrock_id": -194, "bedrock_data": 0 }, "minecraft:smithing_table": { - "bedrock_id": 248, + "bedrock_id": -202, "bedrock_data": 0 }, "minecraft:stonecutter": { - "bedrock_id": 248, + "bedrock_id": -197, "bedrock_data": 0 }, "minecraft:bell": { - "bedrock_id": 248, + "bedrock_id": -206, "bedrock_data": 0 }, "minecraft:lantern": { - "bedrock_id": 248, + "bedrock_id": -208, "bedrock_data": 0 }, "minecraft:sweet_berries": { - "bedrock_id": 248, + "bedrock_id": 477, "bedrock_data": 0 }, "minecraft:campfire": { - "bedrock_id": 248, + "bedrock_id": 720, "bedrock_data": 0 } } \ No newline at end of file From d7568ef52364e7a906b6c13a6ab5fa352d4cf1fc Mon Sep 17 00:00:00 2001 From: Redned Date: Fri, 22 Nov 2019 17:54:36 -0600 Subject: [PATCH 12/18] Fix entity types with wrong names --- .../java/org/geysermc/connector/entity/type/EntityType.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/connector/src/main/java/org/geysermc/connector/entity/type/EntityType.java b/connector/src/main/java/org/geysermc/connector/entity/type/EntityType.java index 88414531..70d53f40 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/type/EntityType.java +++ b/connector/src/main/java/org/geysermc/connector/entity/type/EntityType.java @@ -87,7 +87,7 @@ public enum EntityType { TRIPOD_CAMERA(62, 0f), PLAYER(63, 1.8f, 0.6f, 0.6f, 1.62f), ITEM(64, 0.25f, 0.25f), - PRIMED_TNT(65, 0.98f, 0.98f), + TNT(65, 0.98f, 0.98f), FALLING_BLOCK(66, 0.98f, 0.98f), MOVING_BLOCK(67, 0f), EXPERIENCE_BOTTLE(68, 0.25f, 0.25f), @@ -108,7 +108,7 @@ public enum EntityType { EGG(82, 0f), PAINTING(83, 0f), MINECART(84, 0f), - LARGE_FIREBALL(85, 0f), + FIREBALL(85, 0f), SPLASH_POTION(86, 0f), ENDER_PEARL(87, 0f), LEASH_KNOT(88, 0f), From 8725dba69cd56306bbac1f5ec735d1aded314d61 Mon Sep 17 00:00:00 2001 From: RednedEpic Date: Tue, 26 Nov 2019 19:52:13 -0600 Subject: [PATCH 13/18] Fix offline mode console spam for skins --- .../main/java/org/geysermc/connector/utils/SkinUtils.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/connector/src/main/java/org/geysermc/connector/utils/SkinUtils.java b/connector/src/main/java/org/geysermc/connector/utils/SkinUtils.java index 988501b8..f6a845cb 100644 --- a/connector/src/main/java/org/geysermc/connector/utils/SkinUtils.java +++ b/connector/src/main/java/org/geysermc/connector/utils/SkinUtils.java @@ -9,6 +9,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.apache.commons.codec.Charsets; import org.geysermc.api.Geyser; +import org.geysermc.connector.GeyserConnector; import org.geysermc.connector.entity.PlayerEntity; import org.geysermc.connector.network.session.GeyserSession; @@ -97,8 +98,10 @@ public class SkinUtils { return new GameProfileData(skinUrl, capeUrl, isAlex); } catch (Exception exception) { + if (!((GeyserConnector) Geyser.getConnector()).getConfig().getRemote().getAuthType().equals("offline")) { + Geyser.getLogger().debug("Got invalid texture data for " + profile.getName() + " " + exception.getMessage()); + } // return default skin with default cape when texture data is invalid - Geyser.getLogger().debug("Got invalid texture data for " + profile.getName() + " " + exception.getMessage()); return new GameProfileData("", "", false); } } From c67630dfb1dd04037b47dbcf7d6c53f79b332814 Mon Sep 17 00:00:00 2001 From: RednedEpic Date: Tue, 26 Nov 2019 20:03:23 -0600 Subject: [PATCH 14/18] Update to latest NukkitX Protocol changes --- .../java/entity/player/JavaPlayerHealthTranslator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/player/JavaPlayerHealthTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/player/JavaPlayerHealthTranslator.java index 1abd4c1c..73376385 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/player/JavaPlayerHealthTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/player/JavaPlayerHealthTranslator.java @@ -63,7 +63,7 @@ public class JavaPlayerHealthTranslator extends PacketTranslator Date: Tue, 26 Nov 2019 21:12:35 -0600 Subject: [PATCH 15/18] Fix end crystal entity --- .../java/org/geysermc/connector/entity/type/EntityType.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connector/src/main/java/org/geysermc/connector/entity/type/EntityType.java b/connector/src/main/java/org/geysermc/connector/entity/type/EntityType.java index 70d53f40..d3286c8d 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/type/EntityType.java +++ b/connector/src/main/java/org/geysermc/connector/entity/type/EntityType.java @@ -93,7 +93,7 @@ public enum EntityType { EXPERIENCE_BOTTLE(68, 0.25f, 0.25f), EXPERIENCE_ORB(69, 0f), EYE_OF_ENDER(70, 0f), - ENDER_CRYSTAL(71, 0f), + END_CRYSTAL(71, 0f), FIREWORK_ROCKET(72, 0f), TRIDENT(73, 0f), TURTLE(74, 0.4f, 1.2f), From f06eb6f718996d2615df2db2e073ad361d50786b Mon Sep 17 00:00:00 2001 From: Redned Date: Wed, 27 Nov 2019 09:58:57 -0600 Subject: [PATCH 16/18] Bump NukkitX protocol library version --- connector/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/connector/pom.xml b/connector/pom.xml index 052ea6c0..7b295929 100644 --- a/connector/pom.xml +++ b/connector/pom.xml @@ -75,7 +75,7 @@ com.nukkitx.protocol bedrock-v388 - 2.4.0-SNAPSHOT + 2.4.0 compile @@ -164,4 +164,4 @@ - \ No newline at end of file + From 9875d204e32f8c0d6544506b1177b5eb1b903a38 Mon Sep 17 00:00:00 2001 From: RednedEpic Date: Wed, 27 Nov 2019 19:30:30 -0600 Subject: [PATCH 17/18] Add more entity metadata translations and fix autojump (Closes #73) --- .../org/geysermc/connector/entity/Entity.java | 54 +++++++++----- .../geysermc/connector/entity/ItemEntity.java | 58 +++++++++++++++ .../connector/entity/PaintingEntity.java | 25 +++++++ .../network/translators/TranslatorsInit.java | 6 +- .../entity/JavaEntityMetadataTranslator.java | 35 +-------- .../player/JavaPlayerAbilitiesTranslator.java | 72 +++++++++++++++++++ 6 files changed, 193 insertions(+), 57 deletions(-) create mode 100644 connector/src/main/java/org/geysermc/connector/entity/ItemEntity.java create mode 100644 connector/src/main/java/org/geysermc/connector/network/translators/java/entity/player/JavaPlayerAbilitiesTranslator.java diff --git a/connector/src/main/java/org/geysermc/connector/entity/Entity.java b/connector/src/main/java/org/geysermc/connector/entity/Entity.java index 8824c953..ba9fe4ab 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/Entity.java +++ b/connector/src/main/java/org/geysermc/connector/entity/Entity.java @@ -25,16 +25,15 @@ package org.geysermc.connector.entity; -import com.github.steveice10.mc.protocol.packet.ingame.server.entity.ServerEntityPropertiesPacket; +import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; +import com.github.steveice10.mc.protocol.data.game.entity.metadata.MetadataType; +import com.github.steveice10.mc.protocol.data.message.TextMessage; import com.nukkitx.math.vector.Vector3f; import com.nukkitx.protocol.bedrock.data.EntityData; import com.nukkitx.protocol.bedrock.data.EntityDataDictionary; import com.nukkitx.protocol.bedrock.data.EntityFlag; import com.nukkitx.protocol.bedrock.data.EntityFlags; -import com.nukkitx.protocol.bedrock.packet.AddEntityPacket; -import com.nukkitx.protocol.bedrock.packet.RemoveEntityPacket; -import com.nukkitx.protocol.bedrock.packet.SetEntityDataPacket; -import com.nukkitx.protocol.bedrock.packet.UpdateAttributesPacket; +import com.nukkitx.protocol.bedrock.packet.*; import lombok.Getter; import lombok.Setter; import org.geysermc.connector.console.GeyserLogger; @@ -43,6 +42,7 @@ import org.geysermc.connector.entity.attribute.AttributeType; import org.geysermc.connector.entity.type.EntityType; import org.geysermc.connector.network.session.GeyserSession; import org.geysermc.connector.utils.AttributeUtils; +import org.geysermc.connector.utils.MessageUtils; import java.util.*; @@ -164,6 +164,36 @@ public class Entity { updateAttributesPacket.setRuntimeEntityId(geyserId); updateAttributesPacket.setAttributes(attributes); session.getUpstream().sendPacket(updateAttributesPacket); + } + + public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { + switch (entityMetadata.getId()) { + case 0: + if (entityMetadata.getType() == MetadataType.BYTE) { + byte xd = (byte) entityMetadata.getValue(); + metadata.getFlags().setFlag(EntityFlag.ON_FIRE, (xd & 0x01) == 0x01); + metadata.getFlags().setFlag(EntityFlag.SNEAKING, (xd & 0x02) == 0x02); + metadata.getFlags().setFlag(EntityFlag.SPRINTING, (xd & 0x08) == 0x08); + metadata.getFlags().setFlag(EntityFlag.SWIMMING, (xd & 0x10) == 0x10); + metadata.getFlags().setFlag(EntityFlag.GLIDING, (xd & 0x80) == 0x80); + metadata.getFlags().setFlag(EntityFlag.INVISIBLE, (xd & 0x20) == 0x20); + } + break; + case 2: // custom name + TextMessage name = (TextMessage) entityMetadata.getValue(); + if (name != null) + metadata.put(EntityData.NAMETAG, MessageUtils.getBedrockMessage(name)); + break; + case 3: // is custom name visible + metadata.getFlags().setFlag(EntityFlag.ALWAYS_SHOW_NAME, (boolean) entityMetadata.getValue()); + break; + case 4: // silent + metadata.getFlags().setFlag(EntityFlag.SILENT, (boolean) entityMetadata.getValue()); + break; + case 5: // no gravity + metadata.getFlags().setFlag(EntityFlag.HAS_GRAVITY, !(boolean) entityMetadata.getValue()); + break; + } SetEntityDataPacket entityDataPacket = new SetEntityDataPacket(); entityDataPacket.setRuntimeEntityId(geyserId); @@ -171,20 +201,6 @@ public class Entity { session.getUpstream().sendPacket(entityDataPacket); } - // To be used at a later date - public void updateJavaAttributes(GeyserSession session) { - List attributes = new ArrayList<>(); - for (Map.Entry entry : this.attributes.entrySet()) { - if (!entry.getValue().getType().isBedrockAttribute()) - continue; - - attributes.add(AttributeUtils.getJavaAttribute(entry.getValue())); - } - - ServerEntityPropertiesPacket entityPropertiesPacket = new ServerEntityPropertiesPacket((int) entityId, attributes); - session.getDownstream().getSession().send(entityPropertiesPacket); - } - public void setPosition(Vector3f position) { if (is(PlayerEntity.class)) { this.position = position.add(0, entityType.getOffset(), 0); diff --git a/connector/src/main/java/org/geysermc/connector/entity/ItemEntity.java b/connector/src/main/java/org/geysermc/connector/entity/ItemEntity.java new file mode 100644 index 00000000..78c78f3f --- /dev/null +++ b/connector/src/main/java/org/geysermc/connector/entity/ItemEntity.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2019 GeyserMC. http://geysermc.org + * + * 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. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/Geyser + */ + +package org.geysermc.connector.entity; + +import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; +import com.github.steveice10.mc.protocol.data.game.entity.metadata.ItemStack; +import com.nukkitx.math.vector.Vector3f; +import com.nukkitx.protocol.bedrock.packet.AddItemEntityPacket; +import org.geysermc.connector.entity.type.EntityType; +import org.geysermc.connector.network.session.GeyserSession; +import org.geysermc.connector.network.translators.TranslatorsInit; + +public class ItemEntity extends Entity { + + public ItemEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) { + super(entityId, geyserId, entityType, position, motion, rotation); + } + + @Override + public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { + if (entityMetadata.getId() == 7) { + AddItemEntityPacket itemPacket = new AddItemEntityPacket(); + itemPacket.setRuntimeEntityId(geyserId); + itemPacket.setPosition(position); + itemPacket.setMotion(motion); + itemPacket.setUniqueEntityId(geyserId); + itemPacket.setFromFishing(false); + itemPacket.getMetadata().putAll(metadata); + itemPacket.setItemInHand(TranslatorsInit.getItemTranslator().translateToBedrock((ItemStack) entityMetadata.getValue())); + session.getUpstream().sendPacket(itemPacket); + } + + super.updateBedrockMetadata(entityMetadata, session); + } +} diff --git a/connector/src/main/java/org/geysermc/connector/entity/PaintingEntity.java b/connector/src/main/java/org/geysermc/connector/entity/PaintingEntity.java index f9f6e37f..b598b9bf 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/PaintingEntity.java +++ b/connector/src/main/java/org/geysermc/connector/entity/PaintingEntity.java @@ -1,3 +1,28 @@ +/* + * Copyright (c) 2019 GeyserMC. http://geysermc.org + * + * 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. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/Geyser + */ + package org.geysermc.connector.entity; import com.nukkitx.math.vector.Vector3f; diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/TranslatorsInit.java b/connector/src/main/java/org/geysermc/connector/network/translators/TranslatorsInit.java index 6539fb05..694ae525 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/TranslatorsInit.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/TranslatorsInit.java @@ -27,10 +27,7 @@ package org.geysermc.connector.network.translators; import com.github.steveice10.mc.protocol.packet.ingame.server.*; import com.github.steveice10.mc.protocol.packet.ingame.server.entity.*; -import com.github.steveice10.mc.protocol.packet.ingame.server.entity.player.ServerPlayerActionAckPacket; -import com.github.steveice10.mc.protocol.packet.ingame.server.entity.player.ServerPlayerHealthPacket; -import com.github.steveice10.mc.protocol.packet.ingame.server.entity.player.ServerPlayerPositionRotationPacket; -import com.github.steveice10.mc.protocol.packet.ingame.server.entity.player.ServerPlayerSetExperiencePacket; +import com.github.steveice10.mc.protocol.packet.ingame.server.entity.player.*; import com.github.steveice10.mc.protocol.packet.ingame.server.entity.spawn.*; import com.github.steveice10.mc.protocol.packet.ingame.server.scoreboard.ServerDisplayScoreboardPacket; import com.github.steveice10.mc.protocol.packet.ingame.server.scoreboard.ServerScoreboardObjectivePacket; @@ -129,6 +126,7 @@ public class TranslatorsInit { Registry.registerJava(ServerPlayerSetExperiencePacket.class, new JavaPlayerSetExperienceTranslator()); Registry.registerJava(ServerPlayerHealthPacket.class, new JavaPlayerHealthTranslator()); Registry.registerJava(ServerPlayerActionAckPacket.class, new JavaPlayerActionAckTranslator()); + Registry.registerJava(ServerPlayerAbilitiesPacket.class, new JavaPlayerAbilitiesTranslator()); Registry.registerJava(ServerNotifyClientPacket.class, new JavaNotifyClientTranslator()); Registry.registerJava(ServerChunkDataPacket.class, new JavaChunkDataTranslator()); diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityMetadataTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityMetadataTranslator.java index a21b2f86..85efcc68 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityMetadataTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityMetadataTranslator.java @@ -26,17 +26,10 @@ package org.geysermc.connector.network.translators.java.entity; import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; -import com.github.steveice10.mc.protocol.data.game.entity.metadata.ItemStack; -import com.github.steveice10.mc.protocol.data.game.entity.metadata.MetadataType; import com.github.steveice10.mc.protocol.packet.ingame.server.entity.ServerEntityMetadataPacket; -import com.nukkitx.protocol.bedrock.data.EntityFlag; -import com.nukkitx.protocol.bedrock.packet.AddItemEntityPacket; -import com.nukkitx.protocol.bedrock.packet.SetEntityDataPacket; import org.geysermc.connector.entity.Entity; -import org.geysermc.connector.entity.type.EntityType; import org.geysermc.connector.network.session.GeyserSession; import org.geysermc.connector.network.translators.PacketTranslator; -import org.geysermc.connector.network.translators.TranslatorsInit; public class JavaEntityMetadataTranslator extends PacketTranslator { @@ -49,35 +42,9 @@ public class JavaEntityMetadataTranslator extends PacketTranslator { + + @Override + public void translate(ServerPlayerAbilitiesPacket packet, GeyserSession session) { + Entity entity = session.getPlayerEntity(); + if (entity == null) + return; + + EntityDataDictionary metadata = entity.getMetadata(); + metadata.getFlags().setFlag(EntityFlag.CAN_FLY, packet.isCanFly()); + + SetEntityDataPacket entityDataPacket = new SetEntityDataPacket(); + entityDataPacket.setRuntimeEntityId(entity.getGeyserId()); + entityDataPacket.getMetadata().putAll(metadata); + session.getUpstream().sendPacket(entityDataPacket); + + int playerFlags = 0; + + playerFlags = setPlayerFlag(0x20, true, playerFlags); // auto jump + playerFlags = setPlayerFlag(0x40, packet.isCanFly(), playerFlags); // can fly + playerFlags = setPlayerFlag(0x200, packet.isFlying(), playerFlags); // is flying + + AdventureSettingsPacket adventureSettingsPacket = new AdventureSettingsPacket(); + adventureSettingsPacket.setUniqueEntityId(entity.getGeyserId()); + adventureSettingsPacket.setPlayerFlags(playerFlags); + session.getUpstream().sendPacket(adventureSettingsPacket); + } + + private int setPlayerFlag(int flag, boolean value, int playerFlags) { + if (value) { + return playerFlags | flag; + } else { + return playerFlags & ~flag; + } + } +} From 0e7fff0b9b7e4f5975faabb0737c817c6cd81627 Mon Sep 17 00:00:00 2001 From: Redned Date: Wed, 27 Nov 2019 20:58:58 -0600 Subject: [PATCH 18/18] Fix permissions --- .../java/entity/player/JavaPlayerAbilitiesTranslator.java | 1 + 1 file changed, 1 insertion(+) diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/player/JavaPlayerAbilitiesTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/player/JavaPlayerAbilitiesTranslator.java index 0daa03ad..25ebf1af 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/player/JavaPlayerAbilitiesTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/player/JavaPlayerAbilitiesTranslator.java @@ -57,6 +57,7 @@ public class JavaPlayerAbilitiesTranslator extends PacketTranslator