overviewer/Minecraft-Overviewer

How to display "nether" world render in normal world render radio button menu?

mtoensing opened this issue · 3 comments

I would like to display the nether world render as a radio button in the normal world's menu. Basically, I would like to merge these to menus into one:

Screen Shot 2020-10-25 at 10 47 49Screen Shot 2020-10-25 at 10 47 43

Is this somehow possible? I struggled with this because "nether" is handled like a second "world" - which it is. Here is my current config.py:


# My config.py script for overviewer:
worlds["pudel"] = "/tmp/server/world/"
worlds["pudel_nether"] = "/tmp/server/world_nether/"
texturepath = "/tmp/overviewer/client.jar"
customwebassets = "/tmp/config/customwebassets"
processes = 2
outputdir = "/tmp/export/"
my_cave = [Base(), EdgeLines(), Cave(only_lit=True), DepthTinting()]
my_nowater = [Base(), EdgeLines(), NoFluids()]
defaultzoom = 5
my_crop = (-1200, -1600, 900, 400)

def playerIcons(poi):
    if poi['id'] == 'Player':
        poi['icon'] = "https://mc.marc.tv/assets/steve.png"
        return "Last known location for %s" % poi['EntityId']

def playerSpawns(poi):
    if poi['id']=='PlayerSpawn':
        poi['icon'] = "https://mc.marc.tv/assets/bed.png"
        return "Spawn for %s" % poi['EntityId']
'''
def signFilter(poi):
    if poi['id'] == 'Sign' or poi['id'] == 'minecraft:sign':
        poi['icon'] = "https://mc.marc.tv/assets/sign.png"
        text = "\n".join([poi['Text1'], poi['Text2'], poi['Text3'], poi['Text4']])
        if text.__contains__('...'):
            return text.replace('...', '')
'''

def chestFilter(poi):
    if poi['id'] == 'Chest' or poi['id'] == 'minecraft:chest':
        return "Chest with %d items" % len(poi['Items'])


thingsToMaker = [
    dict(name="Players", filterFunction=playerIcons),
    dict(name="Beds", filterFunction=playerSpawns),
    #dict(name="Signs", filterFunction=signFilter),
    #dict(name="Chests", filterFunction=chestFilter)
]

renders["day_complete_smooth"] = {
    'world': 'pudel',
    'title': 'Day',
    'rendermode': 'smooth_lighting',
    "dimension": "overworld",
    'markers': thingsToMaker
}

renders["night_complete"] = {
    'world': 'pudel',
    'title': 'Night',
    'rendermode': 'smooth_night',
    "dimension": "overworld",
    'markers': thingsToMaker
}

renders["cave_complete"] = {
    'world': 'pudel',
    'title': 'Cave',
    'rendermode': my_cave,
    "dimension": "overworld",
    'markers': thingsToMaker
}

renders["nether"] = {
    "world": "pudel_nether",
    "title": "Nether",
    "rendermode": "nether",
    "dimension": "nether"
}

# Import the Observers
from .observer import MultiplexingObserver, ProgressBarObserver, JSObserver

# Construct the ProgressBarObserver
pbo = ProgressBarObserver()

# Construct a basic JSObserver
jsObserver = JSObserver(outputdir, 30)

# Set the observer to a MultiplexingObserver
observer = MultiplexingObserver(pbo, jsObserver)

Result should look like this:

Screen Shot 2020-10-25 at 10 55 49

(Mockup!)

Why do I want to do this? The dropdown takes up too much space on mobile devices.

I think you could try to render the nether as jpg overlay of the main world.

renders["nether"] = {
    "world": "pudel_nether",
    "title": "Nether",
    "rendermode": "nether",
    "dimension": "nether",
    "overlay": ["day_complete_smooth"],
    "imgformat": "jpg",
}

It works and is fair enough for me. Thank you
Screen Shot 2020-12-03 at 13 15 30

Glad I was able to help