mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-17 03:15:35 -04:00
Fix wrong block exception: AIR but with different id?
This commit is contained in:
parent
8b80ea6402
commit
93c6579cc9
@ -13,9 +13,12 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.data.world.palette;
|
package de.bixilon.minosoft.data.world.palette;
|
||||||
|
|
||||||
|
import de.bixilon.minosoft.config.StaticConfiguration;
|
||||||
import de.bixilon.minosoft.data.mappings.blocks.Block;
|
import de.bixilon.minosoft.data.mappings.blocks.Block;
|
||||||
import de.bixilon.minosoft.data.mappings.versions.VersionMapping;
|
import de.bixilon.minosoft.data.mappings.versions.VersionMapping;
|
||||||
|
import de.bixilon.minosoft.logging.Log;
|
||||||
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
|
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
@ -31,7 +34,24 @@ public class IndirectPalette implements Palette {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Block byId(int id) {
|
public Block byId(int id) {
|
||||||
return mapping.getBlockById(map.getOrDefault(id, id));
|
int blockId = map.getOrDefault(id, id);
|
||||||
|
Block block = mapping.getBlockById(blockId);
|
||||||
|
if (StaticConfiguration.DEBUG_MODE) {
|
||||||
|
if (block == null) {
|
||||||
|
if (blockId == ProtocolDefinition.NULL_BLOCK_ID) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
String blockName;
|
||||||
|
if (versionId <= ProtocolDefinition.PRE_FLATTENING_VERSION_ID) {
|
||||||
|
blockName = String.format("%d:%d", blockId >> 4, blockId & 0xF);
|
||||||
|
} else {
|
||||||
|
blockName = String.valueOf(blockId);
|
||||||
|
}
|
||||||
|
Log.warn(String.format("Server sent unknown block: %s", blockName));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return block;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -18,7 +18,6 @@ import de.bixilon.minosoft.data.world.Chunk;
|
|||||||
import de.bixilon.minosoft.data.world.ChunkSection;
|
import de.bixilon.minosoft.data.world.ChunkSection;
|
||||||
import de.bixilon.minosoft.data.world.InChunkSectionLocation;
|
import de.bixilon.minosoft.data.world.InChunkSectionLocation;
|
||||||
import de.bixilon.minosoft.data.world.palette.Palette;
|
import de.bixilon.minosoft.data.world.palette.Palette;
|
||||||
import de.bixilon.minosoft.logging.Log;
|
|
||||||
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
|
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
|
||||||
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition;
|
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition;
|
||||||
|
|
||||||
@ -177,16 +176,6 @@ public final class ChunkUtil {
|
|||||||
|
|
||||||
Block block = palette.byId(blockId);
|
Block block = palette.byId(blockId);
|
||||||
if (block == null) {
|
if (block == null) {
|
||||||
if (blockId == ProtocolDefinition.NULL_BLOCK_ID) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
String blockName;
|
|
||||||
if (buffer.getVersionId() <= ProtocolDefinition.FLATTING_VERSION_ID) {
|
|
||||||
blockName = String.format("%d:%d", blockId >> 4, blockId & 0xF);
|
|
||||||
} else {
|
|
||||||
blockName = String.valueOf(blockId);
|
|
||||||
}
|
|
||||||
Log.warn(String.format("Server sent unknown block: %s", blockName));
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
blockMap.put(new InChunkSectionLocation(nibbleX, nibbleY, nibbleZ), block);
|
blockMap.put(new InChunkSectionLocation(nibbleX, nibbleY, nibbleZ), block);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user