Compare commits
10 Commits
9d4f2cfe0b
...
13c1bddaf6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
13c1bddaf6 | ||
|
|
6ffbe0f0be | ||
|
|
deedd85eac | ||
|
|
f7c027bd6c | ||
|
|
c1a034bc3a | ||
|
|
44ffb2658e | ||
|
|
8c4184dfdd | ||
|
|
8dc2da3648 | ||
|
|
d3c85da510 | ||
|
|
4ac1b976a9 |
@@ -16,6 +16,10 @@ Blog:
|
||||
https://overviewer.org/blog/
|
||||
|
||||
|
||||
**PLEASE NOTE: Overviewer is currently unmaintained. PRs will not be merged
|
||||
and issues will not be addressed. The website and repository will remain online
|
||||
and accessible.**
|
||||
|
||||
The Minecraft Overviewer is a command-line tool for rendering high-resolution
|
||||
maps of Minecraft worlds. It generates a set of static html and image files and
|
||||
uses Leaflet to display a nice interactive map.
|
||||
|
||||
@@ -68,11 +68,10 @@ exist.
|
||||
Overviewer at a High Level
|
||||
==========================
|
||||
|
||||
Minecraft worlds are rendered in an approximated Isometric projection at an
|
||||
oblique angle. In the original design, the projection acts as if your eye is
|
||||
infinitely far away looking down at the world at a 45 degree angle in the
|
||||
South-East direction (now, the world can be rendered at any of the 4 oblique
|
||||
directions).
|
||||
Minecraft worlds are rendered in an Isometric projection at an oblique angle.
|
||||
The projection acts as if your eye is infinitely far away looking down at the
|
||||
world at an approximate 35 degree angle in the South-East direction (though the
|
||||
world can also be rendered at any of the 4 oblique directions).
|
||||
|
||||
.. image:: screenshot.png
|
||||
:alt: A screenshot of Overviewer output
|
||||
|
||||
@@ -341,7 +341,8 @@ const mc_block_t block_class_alt_height[] = {
|
||||
block_cobbled_deepslate_slab,
|
||||
block_polished_deepslate_slab,
|
||||
block_deepslate_brick_slab,
|
||||
block_deepslate_tile_slab};
|
||||
block_deepslate_tile_slab,
|
||||
block_mud_brick_slab};
|
||||
const size_t block_class_alt_height_len = COUNT_OF(block_class_alt_height);
|
||||
|
||||
const mc_block_t block_class_nether_roof[] = {
|
||||
|
||||
@@ -405,6 +405,14 @@ enum mc_block_id {
|
||||
block_glow_lichen = 1119,
|
||||
block_spore_blossom = 1120,
|
||||
|
||||
block_mud = 1121,
|
||||
block_packed_mud = 1122,
|
||||
block_mud_bricks = 1123,
|
||||
block_mud_brick_slab = 1124,
|
||||
block_mangrove_roots = 1125,
|
||||
block_mangrove_log = 1126,
|
||||
block_muddy_mangrove_roots = 1127,
|
||||
|
||||
// adding a gap in the numbering of walls to keep them all
|
||||
// in one numbering block starting at 1792
|
||||
// all blocks between 1792 and 2047 are considered walls
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
// increment this value if you've made a change to the c extension
|
||||
// and want to force users to rebuild
|
||||
#define OVERVIEWER_EXTENSION_VERSION 110
|
||||
#define OVERVIEWER_EXTENSION_VERSION 113
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
@@ -1097,7 +1097,7 @@ block(blockid=15, top_image="assets/minecraft/textures/block/iron_ore.png")
|
||||
# coal ore
|
||||
block(blockid=16, top_image="assets/minecraft/textures/block/coal_ore.png")
|
||||
|
||||
@material(blockid=[17, 162, 11306, 11307, 11308, 11309, 11310, 11311, 1008, 1009],
|
||||
@material(blockid=[17, 162, 11306, 11307, 11308, 11309, 11310, 11311, 1008, 1009, 1126],
|
||||
data=list(range(12)), solid=True)
|
||||
def wood(self, blockid, data):
|
||||
# extract orientation and wood type frorm data bits
|
||||
@@ -1163,7 +1163,11 @@ def wood(self, blockid, data):
|
||||
1: ("stripped_warped_stem.png", None),
|
||||
2: ("crimson_stem.png", None),
|
||||
3: ("stripped_crimson_stem.png", None),
|
||||
}
|
||||
},
|
||||
1126: {
|
||||
0: ("mangrove_log_top.png", "mangrove_log.png"),
|
||||
1: ("stripped_mangrove_log_top.png", "stripped_mangrove_log.png"),
|
||||
},
|
||||
}
|
||||
|
||||
top_f, side_f = wood_tex[blockid].get(wood_type, wood_tex[blockid][0])
|
||||
@@ -1200,6 +1204,8 @@ def leaves(self, blockid, data):
|
||||
t = self.load_image_texture("assets/minecraft/textures/block/flowering_azalea_leaves.png")
|
||||
elif (blockid, data) == (18, 7):
|
||||
t = self.load_image_texture("assets/minecraft/textures/block/azalea_leaves.png")
|
||||
elif (blockid, data) == (18, 8):
|
||||
t = self.load_image_texture("assets/minecraft/textures/block/mangrove_leaves.png")
|
||||
return self.build_block(t, t)
|
||||
|
||||
# sponge
|
||||
@@ -1698,10 +1704,10 @@ block(blockid=42, top_image="assets/minecraft/textures/block/iron_block.png")
|
||||
# double slabs and slabs
|
||||
# these wooden slabs are unobtainable without cheating, they are still
|
||||
# here because lots of pre-1.3 worlds use this blocks, add prismarine slabs
|
||||
@material(blockid=[43, 44, 181, 182, 204, 205] + list(range(11340, 11359)) +
|
||||
@material(blockid=[43, 44, 181, 182, 204, 205, 1124] + list(range(11340, 11359)) +
|
||||
list(range(1027, 1030)) + list(range(1072, 1080)) + list(range(1103, 1107)),
|
||||
data=list(range(16)),
|
||||
transparent=[44, 182, 205] + list(range(11340, 11359)) + list(range(1027, 1030)) +
|
||||
transparent=[44, 182, 205, 1124] + list(range(11340, 11359)) + list(range(1027, 1030)) +
|
||||
list(range(1072, 1080)) + list(range(1103, 1107)), solid=True)
|
||||
def slabs(self, blockid, data):
|
||||
if blockid == 44 or blockid == 182:
|
||||
@@ -1818,6 +1824,8 @@ def slabs(self, blockid, data):
|
||||
1106: "assets/minecraft/textures/block/deepslate_tiles.png",
|
||||
}
|
||||
top = side = self.load_image_texture(deepslate_tex[blockid]).copy()
|
||||
elif blockid == 1124:
|
||||
top = side = self.load_image_texture("assets/minecraft/textures/block/mud_bricks.png").copy()
|
||||
|
||||
if blockid == 43 or blockid == 181 or blockid == 204: # double slab
|
||||
return self.build_block(top, side)
|
||||
@@ -6374,3 +6382,11 @@ def spore_blossom(self, blockid, data):
|
||||
alpha_over(img, base_top, (0, 0), base_top)
|
||||
return img
|
||||
|
||||
|
||||
block(blockid=1121, top_image="assets/minecraft/textures/block/mud.png")
|
||||
block(blockid=1122, top_image="assets/minecraft/textures/block/packed_mud.png")
|
||||
block(blockid=1123, top_image="assets/minecraft/textures/block/mud_bricks.png")
|
||||
block(blockid=1125, top_image="assets/minecraft/textures/block/mangrove_roots_top.png",
|
||||
side_image="assets/minecraft/textures/block/mangrove_roots_side.png")
|
||||
block(blockid=1127, top_image="assets/minecraft/textures/block/muddy_mangrove_roots_top.png",
|
||||
side_image="assets/minecraft/textures/block/muddy_mangrove_roots_side.png")
|
||||
|
||||
@@ -345,6 +345,7 @@ class RegionSet(object):
|
||||
'minecraft:dark_oak_leaves': (18, 5),
|
||||
'minecraft:flowering_azalea_leaves': (18, 6),
|
||||
'minecraft:azalea_leaves': (18, 7),
|
||||
'minecraft:mangrove_leaves': (18, 8),
|
||||
'minecraft:sponge': (19, 0),
|
||||
'minecraft:wet_sponge': (19, 1),
|
||||
'minecraft:glass': (20, 0),
|
||||
@@ -863,6 +864,16 @@ class RegionSet(object):
|
||||
'minecraft:glow_lichen': (1119, 0),
|
||||
'minecraft:spore_blossom': (1120, 0),
|
||||
|
||||
# 1.19 blocks
|
||||
'minecraft:mud': (1121, 0),
|
||||
'minecraft:packed_mud': (1122, 0),
|
||||
'minecraft:mud_bricks': (1123, 0),
|
||||
'minecraft:mud_brick_slab': (1124, 0),
|
||||
'minecraft:mangrove_roots': (1125, 0),
|
||||
'minecraft:mangrove_log': (1126, 0),
|
||||
'minecraft:stripped_mangrove_log': (1126, 1),
|
||||
'minecraft:muddy_mangrove_roots': (1127, 0),
|
||||
|
||||
# New blocks
|
||||
'minecraft:carved_pumpkin': (11300, 0),
|
||||
'minecraft:spruce_pressure_plate': (11301, 0),
|
||||
@@ -1053,7 +1064,7 @@ class RegionSet(object):
|
||||
'minecraft:blackstone_slab','minecraft:polished_blackstone_slab',
|
||||
'minecraft:polished_blackstone_brick_slab', 'minecraft:cobbled_deepslate_slab',
|
||||
'minecraft:polished_deepslate_slab', 'minecraft:deepslate_brick_slab',
|
||||
'minecraft:deepslate_tile_slab'
|
||||
'minecraft:deepslate_tile_slab', 'minecraft:mud_brick_slab'
|
||||
)
|
||||
|
||||
prismarine_slabs = ('minecraft:prismarine_slab','minecraft:dark_prismarine_slab','minecraft:prismarine_brick_slab')
|
||||
@@ -1067,6 +1078,52 @@ class RegionSet(object):
|
||||
'minecraft:waxed_weathered_cut_copper_slab',
|
||||
'minecraft:waxed_oxidized_cut_copper_slab'
|
||||
)
|
||||
# Map from slab to double slab block
|
||||
slab_to_double = {
|
||||
'minecraft:stone_slab': 'minecraft:stone',
|
||||
'minecraft:cobblestone_slab': 'minecraft:cobblestone',
|
||||
'minecraft:sandstone_slab': 'minecraft:sandstone',
|
||||
'minecraft:red_sandstone_slab': 'minecraft:red_sandstone',
|
||||
'minecraft:nether_brick_slab': 'minecraft:nether_bricks',
|
||||
'minecraft:quartz_slab': 'minecraft:quartz_block',
|
||||
'minecraft:brick_slab': 'minecraft:bricks',
|
||||
'minecraft:purpur_slab': 'minecraft:purpur_block',
|
||||
'minecraft:andesite_slab': 'minecraft:andesite',
|
||||
'minecraft:diorite_slab': 'minecraft:diorite',
|
||||
'minecraft:granite_slab': 'minecraft:granite',
|
||||
'minecraft:polished_andesite_slab': 'minecraft:polished_andesite',
|
||||
'minecraft:polished_diorite_slab': 'minecraft:polished_diorite',
|
||||
'minecraft:polished_granite_slab': 'minecraft:polished_granite',
|
||||
'minecraft:red_nether_brick_slab': 'minecraft:red_nether_bricks',
|
||||
'minecraft:smooth_sandstone_slab': 'minecraft:smooth_sandstone',
|
||||
'minecraft:cut_sandstone_slab': 'minecraft:cut_sandstone',
|
||||
'minecraft:smooth_red_standstone_slab': 'minecraft:smooth_red_sandstone',
|
||||
'minecraft:cut_red_sandstone_slab': 'minecraft:cut_red_sandstone',
|
||||
'minecraft:end_stone_brick_slab': 'minecraft:end_stone_bricks',
|
||||
'minecraft:mossy_cobblestone_slab': 'minecraft:mossy_cobblestone',
|
||||
'minecraft:mossy_stone_brick_slab': 'minecraft:mossy_stone_bricks',
|
||||
'minecraft:smooth_quartz_slab': 'minecraft:smooth_quartz',
|
||||
'minecraft:smooth_stone_slab': 'minecraft:smooth_stone',
|
||||
'minecraft:blackstone_slab': 'minecraft:blackstone',
|
||||
'minecraft:polished_blackstone_slab': 'minecraft:polished_blackstone',
|
||||
'minecraft:polished_blackstone_brick_slab': 'minecraft:polished_blackstone_bricks',
|
||||
'minecraft:cobbled_deepslate_slab': 'minecraft:cobbled_deepslate',
|
||||
'minecraft:polished_deepslate_slab': 'minecraft:polished_deepslate',
|
||||
'minecraft:deepslate_brick_slab': 'minecraft:deepslate_bricks',
|
||||
'minecraft:deepslate_tile_slab': 'minecraft:deepslate_tiles',
|
||||
'minecraft:mud_brick_slab': 'minecraft:mud_bricks',
|
||||
'minecraft:cut_copper_slab': 'minecraft:cut_copper',
|
||||
'minecraft:exposed_cut_copper_slab': 'minecraft:exposed_cut_copper',
|
||||
'minecraft:weathered_cut_copper_slab': 'minecraft:weathered_cut_copper',
|
||||
'minecraft:oxidized_cut_copper_slab': 'minecraft:oxidized_cut_copper',
|
||||
'minecraft:waxed_cut_copper_slab': 'minecraft:waxed_cut_copper',
|
||||
'minecraft:waxed_exposed_cut_copper_slab': 'minecraft:waxed_exposed_cut_copper',
|
||||
'minecraft:waxed_weathered_cut_copper_slab': 'minecraft:waxed_weathered_cut_copper',
|
||||
'minecraft:waxed_oxidized_cut_copper_slab': 'minecraft:waxed_oxidized_cut_copper',
|
||||
'minecraft:prismarine_slab': 'minecraft:prismarine',
|
||||
'minecraft:dark_prismarine_slab': 'minecraft:dark_prismarine',
|
||||
'minecraft:prismarine_brick_slab': 'minecraft:prismarine_bricks',
|
||||
}
|
||||
|
||||
colors = ['white', 'orange', 'magenta', 'light_blue', 'yellow', 'lime', 'pink', 'gray', 'light_gray', 'cyan',
|
||||
'purple', 'blue', 'brown', 'green', 'red', 'black']
|
||||
@@ -1113,107 +1170,8 @@ class RegionSet(object):
|
||||
elif palette_entry['Properties']['type'] == 'double':
|
||||
if key in wood_slabs:
|
||||
block = 125 # block_double_wooden_slab
|
||||
elif key in stone_slabs:
|
||||
if key == 'minecraft:stone_brick_slab':
|
||||
block = 98
|
||||
elif key == 'minecraft:stone_slab':
|
||||
block = 1 # stone data 0
|
||||
elif key == 'minecraft:cobblestone_slab':
|
||||
block = 4 # cobblestone
|
||||
elif key == 'minecraft:sandstone_slab':
|
||||
block = 24 # minecraft:sandstone
|
||||
elif key == 'minecraft:red_sandstone_slab':
|
||||
block = 179 # minecraft:red_sandstone
|
||||
elif key == 'minecraft:nether_brick_slab':
|
||||
block = 112 # minecraft:nether_bricks
|
||||
elif key == 'minecraft:quartz_slab':
|
||||
block = 155 # minecraft:quartz_block
|
||||
elif key == 'minecraft:brick_slab':
|
||||
block = 45 # minecraft:bricks
|
||||
elif key == 'minecraft:purpur_slab':
|
||||
block = 201 # minecraft:purpur_block
|
||||
elif key == 'minecraft:andesite_slab':
|
||||
block = 1 # minecraft:andesite
|
||||
data = 5
|
||||
elif key == 'minecraft:diorite_slab':
|
||||
block = 1 # minecraft:diorite
|
||||
data = 3
|
||||
elif key == 'minecraft:granite_slab':
|
||||
block = 1 # minecraft:granite
|
||||
data = 1
|
||||
elif key == 'minecraft:polished_andesite_slab':
|
||||
block = 1 # minecraft: polished_andesite
|
||||
data = 6
|
||||
elif key == 'minecraft:polished_diorite_slab':
|
||||
block = 1 # minecraft: polished_diorite
|
||||
data = 4
|
||||
elif key == 'minecraft:polished_granite_slab':
|
||||
block = 1 # minecraft: polished_granite
|
||||
data = 2
|
||||
elif key == 'minecraft:red_nether_brick_slab':
|
||||
block = 215 # minecraft: red_nether_brick
|
||||
data = 0
|
||||
elif key == 'minecraft:smooth_sandstone_slab':
|
||||
block = 11314 # minecraft: smooth_sandstone
|
||||
data = 0
|
||||
elif key == 'minecraft:cut_sandstone_slab':
|
||||
block = 24 # minecraft: cut_sandstone
|
||||
data = 2
|
||||
elif key == 'minecraft:smooth_red_sandstone_slab':
|
||||
block = 11315 # minecraft: smooth_red_sandstone
|
||||
data = 0
|
||||
elif key == 'minecraft:cut_red_sandstone_slab':
|
||||
block = 179 # minecraft: cut_red_sandstone
|
||||
data = 2
|
||||
elif key == 'minecraft:end_stone_brick_slab':
|
||||
block = 206 # minecraft:end_stone_bricks
|
||||
data = 0
|
||||
elif key == 'minecraft:mossy_cobblestone_slab':
|
||||
block = 48 # minecraft:mossy_cobblestone
|
||||
data = 0
|
||||
elif key == 'minecraft:mossy_stone_brick_slab':
|
||||
block = 98 # minecraft:mossy_stone_bricks
|
||||
data = 1
|
||||
elif key == 'minecraft:smooth_quartz_slab':
|
||||
block = 155 # minecraft:smooth_quartz
|
||||
data = 0
|
||||
elif key == 'minecraft:smooth_stone_slab':
|
||||
block = 11313 # minecraft:smooth_stone
|
||||
data = 0
|
||||
elif key == 'minecraft:blackstone_slab':
|
||||
block = 1004 # blackstone
|
||||
data = 0
|
||||
elif key == 'minecraft:polished_blackstone_slab':
|
||||
block = 1022 # polished_blackstone
|
||||
data = 0
|
||||
elif key == 'minecraft:polished_blackstone_brick_slab':
|
||||
block = 1026 # polished_blackstone_bricks
|
||||
data = 0
|
||||
elif key == 'minecraft:cobbled_deepslate_slab':
|
||||
block = 1084 # 'minecraft:cobbled_deepslate'
|
||||
data = 0
|
||||
elif key == 'minecraft:polished_deepslate_slab':
|
||||
block = 1085 # 'minecraft:polished_deepslate'
|
||||
data = 0
|
||||
elif key == 'minecraft:deepslate_brick_slab':
|
||||
block = 1094 # 'minecraft:deepslate_bricks'
|
||||
data = 0
|
||||
elif key == 'minecraft:deepslate_tile_slab':
|
||||
block = 1096 # 'minecraft:deepslate_tiles'
|
||||
data = 0
|
||||
|
||||
elif key in prismarine_slabs:
|
||||
block = 168 # minecraft:prismarine variants
|
||||
if key == 'minecraft:prismarine_slab':
|
||||
data = 0
|
||||
elif key == 'minecraft:prismarine_brick_slab':
|
||||
data = 1
|
||||
elif key == 'minecraft:dark_prismarine_slab':
|
||||
data = 2
|
||||
elif key in copper_slabs:
|
||||
# dumb hack because I'm lazy but this function is horrid anyway
|
||||
block = block - 18
|
||||
|
||||
else:
|
||||
(block, data) = self._blockmap[slab_to_double[key]]
|
||||
|
||||
elif key in ['minecraft:ladder', 'minecraft:chest', 'minecraft:ender_chest',
|
||||
'minecraft:trapped_chest', 'minecraft:furnace',
|
||||
|
||||
Reference in New Issue
Block a user