From 4cba8b05a5fb3ccf50e85b6b7c16bc45ee7bee88 Mon Sep 17 00:00:00 2001 From: EOT3000 <43685885+EOT3000@users.noreply.github.com> Date: Sat, 23 Nov 2019 16:01:04 -0500 Subject: [PATCH] Signs placed ingame work --- .../bedrock/BedrockMovePlayerTranslator.java | 20 +++++++++---------- .../blockentity/SignDataMapper.java | 1 + .../geysermc/connector/utils/ChunkUtils.java | 15 ++++++++++---- .../connector/utils/MessageUtils.java | 4 ++-- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockMovePlayerTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockMovePlayerTranslator.java index 678956d7c..ef98cc366 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockMovePlayerTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockMovePlayerTranslator.java @@ -26,6 +26,7 @@ package org.geysermc.connector.network.translators.bedrock; import com.github.steveice10.mc.protocol.packet.ingame.client.player.ClientPlayerPositionRotationPacket; +import static com.nukkitx.math.vector.Vector2f.from; import com.nukkitx.math.vector.Vector3f; import com.nukkitx.protocol.bedrock.packet.MoveEntityAbsolutePacket; import com.nukkitx.protocol.bedrock.packet.MovePlayerPacket; @@ -37,6 +38,8 @@ import org.geysermc.connector.entity.type.EntityType; import org.geysermc.connector.network.session.GeyserSession; import org.geysermc.connector.network.translators.PacketTranslator; +import static java.lang.Math.abs; + public class BedrockMovePlayerTranslator extends PacketTranslator { @Override @@ -91,18 +94,9 @@ public class BedrockMovePlayerTranslator extends PacketTranslator 100) { + if (yRange > 30 || dist(newPosition, currentPosition) > 10) { session.getConnector().getLogger().debug(ChatColor.RED + session.getName() + " moved too quickly." + " current position: " + currentPosition + ", new position: " + newPosition); @@ -112,6 +106,10 @@ public class BedrockMovePlayerTranslator extends PacketTranslator tiles = new ArrayList<>(Arrays.asList(column.getTileEntities())); for (int chunkY = 0; chunkY < chunkSectionCount; chunkY++) { @@ -46,12 +47,17 @@ public class ChunkUtils { BlockState blockState = chunk.get(x, y, z); BlockEntry block = TranslatorsInit.getBlockTranslator().getBedrockBlock(blockState); - section.getBlockStorageArray()[0].setFullBlock(ChunkSection.blockPosition(x, y, z), - block.getBedrockId() << 4 | block.getBedrockData()); + if(!block.getJavaIdentifier().contains("sign")) { + section.getBlockStorageArray()[0].setFullBlock(ChunkSection.blockPosition(x, y, z), + block.getBedrockId() << 4 | block.getBedrockData()); - if (block.getJavaIdentifier().contains("waterlogged=true")) { + if (block.getJavaIdentifier().contains("waterlogged=true")) { + section.getBlockStorageArray()[1].setFullBlock(ChunkSection.blockPosition(x, y, z), + 9 << 4); // water id + } + } else { section.getBlockStorageArray()[1].setFullBlock(ChunkSection.blockPosition(x, y, z), - 9 << 4); // water id + 0); } } } @@ -64,6 +70,7 @@ public class ChunkUtils { NBTOutputStream nbtStream = NbtUtils.createNetworkWriter(stream); for (CompoundTag tag : tiles) { + if(tag.get("id").getValue().toString().contains("sign")) continue; try { nbtStream.write(BlockEntityUtils.getExtraTags(tag)); } catch (Exception e) { diff --git a/connector/src/main/java/org/geysermc/connector/utils/MessageUtils.java b/connector/src/main/java/org/geysermc/connector/utils/MessageUtils.java index 3a364788b..d7add360a 100644 --- a/connector/src/main/java/org/geysermc/connector/utils/MessageUtils.java +++ b/connector/src/main/java/org/geysermc/connector/utils/MessageUtils.java @@ -104,6 +104,7 @@ public class MessageUtils { ret+=getFormat(FORMATS.get(string)); } } + ret+=object.get("text").getAsString(); if(object.has("extra")) { for(JsonElement element : object.get("extra").getAsJsonArray()) { @@ -116,14 +117,13 @@ public class MessageUtils { ret+=getFormat(FORMATS.get(string)); } } + ret+=element.getAsJsonObject().get("text").getAsString(); } else { ret+=element.getAsString(); } } } - ret+=object.get("text").getAsString(); - return ret; }