0

Compare commits

10 Commits

Author SHA1 Message Date
Nicolas F
13c1bddaf6 README: Add note about current maintenance status 2023-04-05 18:40:23 +02:00
agrif
6ffbe0f0be Merge pull request #2063 from overviewer/docs
Update design docs secion on projections
2022-08-14 13:44:33 -04:00
Andrew Chin
deedd85eac Update design docs secion on projections 2022-08-14 13:42:18 -04:00
Nicolas F
f7c027bd6c Revert "genpoi: ignore dat files with incomplete player info"
This reverts commit 44ffb2658e.

Breaks player handling in genpoi.
2022-07-17 00:12:08 +02:00
Andrew Chin
c1a034bc3a Merge pull request #2056 from overviewer/genpoi
genpoi: ignore dat files with incomplete player info
2022-07-14 21:08:51 -04:00
Andrew Chin
44ffb2658e genpoi: ignore dat files with incomplete player info
This can happen for worlds that are generated by something other than
minecraft.

Closes #2055
2022-07-14 20:45:39 -04:00
Nicolas F
8c4184dfdd Add muddy mangrove roots 2022-06-23 16:36:12 +02:00
Nicolas F
8dc2da3648 Add some mangrove stuff
btw I'm Pomu!
2022-06-23 16:22:46 +02:00
Nicolas F
d3c85da510 world: turn the double slab lookup into a dict lookup
This code was extraordinarily stupid, and now it's still bad but
slightly less stupid.
2022-06-23 16:01:08 +02:00
Nicolas F
4ac1b976a9 Add some mud blocks
I hate this codebase so much.
2022-06-23 15:37:15 +02:00
7 changed files with 99 additions and 113 deletions

View File

@@ -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.

View File

@@ -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

View File

@@ -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[] = {

View File

@@ -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

View File

@@ -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>

View File

@@ -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")

View File

@@ -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',