diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java index a4dc05e8..d29cf548 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java @@ -26,6 +26,7 @@ import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.packets.EntityP import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.packets.PlayerPackets1_14; import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.packets.SoundPackets1_14; import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage.ChunkLightStorage; +import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage.DifficultyStorage; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.entities.Entity1_14Types; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; @@ -195,6 +196,8 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { + short difficulty = wrapper.user().get(DifficultyStorage.class).getDifficulty(); + wrapper.write(Type.UNSIGNED_BYTE, difficulty); - wrapper.passthrough(Type.UNSIGNED_BYTE); // Max Players - wrapper.passthrough(Type.STRING); // Level Type - wrapper.read(Type.VAR_INT); // Read View Distance + wrapper.passthrough(Type.UNSIGNED_BYTE); // Max Players + wrapper.passthrough(Type.STRING); // Level Type + wrapper.read(Type.VAR_INT); // Read View Distance - //TODO Track client position - // Manually add position storage - /*int entitiyId = wrapper.get(Type.INT, 0); - StoredEntityData storedEntity = protocol.getEntityRewriter().tracker(wrapper.user()).entityData(entitiyId); - storedEntity.put(new EntityPositionStorage1_14());*/ - } + //TODO Track client position + // Manually add position storage + /*int entitiyId = wrapper.get(Type.INT, 0); + StoredEntityData storedEntity = protocol.getEntityRewriter().tracker(wrapper.user()).entityData(entitiyId); + storedEntity.put(new EntityPositionStorage1_14());*/ }); } }); @@ -333,16 +332,15 @@ public class EntityPackets1_14 extends LegacyEntityRewriter { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + int dimensionId = wrapper.get(Type.INT, 0); + clientWorld.setEnvironment(dimensionId); - wrapper.write(Type.UNSIGNED_BYTE, (short) 0); // Difficulty - wrapper.user().get(ChunkLightStorage.class).clear(); - } + short difficulty = wrapper.user().get(DifficultyStorage.class).getDifficulty(); + wrapper.write(Type.UNSIGNED_BYTE, difficulty); + + wrapper.user().get(ChunkLightStorage.class).clear(); }); } }); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java index d5aca0bf..20a7d848 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java @@ -18,6 +18,7 @@ package com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.packets; import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; +import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage.DifficultyStorage; import com.viaversion.viaversion.api.minecraft.Position; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; @@ -40,6 +41,10 @@ public class PlayerPackets1_14 extends RewriterBase { public void registerMap() { map(Type.UNSIGNED_BYTE); map(Type.BOOLEAN, Type.NOTHING); // Locked + handler(wrapper -> { + byte difficulty = wrapper.get(Type.UNSIGNED_BYTE, 0).byteValue(); + wrapper.user().get(DifficultyStorage.class).setDifficulty(difficulty); + }); } }); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/storage/DifficultyStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/storage/DifficultyStorage.java new file mode 100644 index 00000000..6fced60f --- /dev/null +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/storage/DifficultyStorage.java @@ -0,0 +1,37 @@ +/* + * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards + * Copyright (C) 2016-2022 ViaVersion and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class DifficultyStorage extends StoredObject { + private byte difficulty; + + public DifficultyStorage(UserConnection user) { + super(user); + } + + public byte getDifficulty() { + return difficulty; + } + + public void setDifficulty(byte difficulty) { + this.difficulty = difficulty; + } +} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/BlockItemPackets1_17.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/BlockItemPackets1_17.java index 5d78ab2b..17fafebf 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/BlockItemPackets1_17.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/BlockItemPackets1_17.java @@ -30,6 +30,9 @@ import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.LongArrayTag; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ServerboundPackets1_16_2; import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.types.Chunk1_16_2Type; @@ -38,6 +41,8 @@ import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ClientboundPacke import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ServerboundPackets1_17; import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.types.Chunk1_17Type; import com.viaversion.viaversion.rewriter.BlockRewriter; +import com.viaversion.viaversion.util.CompactArrayUtil; +import com.viaversion.viaversion.util.MathUtil; import java.util.ArrayList; import java.util.Arrays; @@ -282,6 +287,16 @@ public final class BlockItemPackets1_17 extends ItemRewriter heightMapData[i] = MathUtil.clamp(v + tracker.currentMinY(), 0, 255)); + heightMap.setValue(CompactArrayUtil.createCompactArrayWithPadding(9, heightMapData.length, i -> heightMapData[i])); + } + for (int i = 0; i < 16; i++) { ChunkSection section = sections[i]; if (section == null) continue; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/EntityPackets1_17.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/EntityPackets1_17.java index 09479812..fd652aa0 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/EntityPackets1_17.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/EntityPackets1_17.java @@ -218,8 +218,8 @@ public final class EntityPackets1_17 extends EntityRewriter 256 || logicalHeight.asInt() > 256) { if (warn && !warned) { - ViaBackwards.getPlatform().getLogger().severe("Custom worlds heights are NOT SUPPORTED for 1.16 players and older and may lead to errors!"); - ViaBackwards.getPlatform().getLogger().severe("You have min/max set to " + minY.asInt() + "/" + height.asInt()); + ViaBackwards.getPlatform().getLogger().warning("Custom worlds heights are NOT SUPPORTED for 1.16 players and older and may lead to errors!"); + ViaBackwards.getPlatform().getLogger().warning("You have min/max set to " + minY.asInt() + "/" + height.asInt()); warned = true; }