Tool [1.3] Omnitool, world creation, mapping, backups and more.

Nope still not working, getting these errors now:

Error importing plugin worldify:
Traceback (most recent call last):
File "omnitool.py", line 1066, in get_plugins
File "<string>", line 1, in <module>
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2237, in _find_a
nd_load
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2226, in _find_a
nd_load_unlocked
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 1200, in _load_u
nlocked
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 1129, in _exec
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 1471, in exec_mo
dule
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 321, in _call_wi
th_frames_removed
File "C:\Program Files\Omnitool\plugins\worldify.py", line 23, in <module>
from ..colorlib import data, bad
ValueError: attempted relative import beyond top-level package

Verified that I have the correct version of python (3.4.3) and that it is in the system path.
 
you can't start plugins from your OS, if you want to boot directly into a plugin you have to use "omnitool.exe plugin:worldify" - or just use the image from world button in the UI.

Also, Omnitool V18.2.1 is just released, which should fix all remaining worldify/image from world problems.
 
Any chance of letting us tinker with the planetoids on a more intricate level? Like deciding what kind of planetoids, custom planetoids, # of planetoids to make, crimson planetoids, etc?

Approximately the same could be said of Terra. (Size of Terra, cave size, blocks to generate, spikes or no spikes, different cores, crimson, etc.)

Basically, More Options?
 
Well, you can go into omnitool folder -> plugins -> planetoids_lib -> terradata.py with a text editor. You have stuff like chances for terra caves, alters to be placed, which planetoids, with which sizes, all loot tables; and generally a lot of config.
Doesn't have a gui, but it's not much harder than an ini file.

If you can code in python, you can also just tinker with planetoids.py and change anything to your hearts desire.
 
This program looks very nice, but i'm having some problems making my own plugins. All the plugins made by Ijwu that were linked to can't be loaded by omnitool. When i tried making a test plugin from the documentation the same thing happened. Not really surprising given that Ijwu wrote the documentation.

Here's the entire log after starting omnitool with all of Ijwu's plugins and my test one in the plugins folder.

██████╗ ███╗ ███╗███╗ ██╗██╗████████╗ ██████╗ ██████╗ ██╗
██╔═══██╗████╗ ████║████╗ ██║██║╚══██╔══╝██╔═══██╗██╔═══██╗██║
██║ ██║██╔████╔██║██╔██╗ ██║██║ ██║ ██║ ██║██║ ██║██║
██║ ██║██║╚██╔╝██║██║╚██╗██║██║ ██║ ██║ ██║██║ ██║██║
╚██████╔╝██║ ╚═╝ ██║██║ ╚████║██║ ██║ ╚██████╔╝╚██████╔╝███████╗
╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝
Error importing plugin mass_replace:
Traceback (most recent call last):
File "E:\Dropbox\PyTerraria\omnitool\__init__.py", line 795, in get_plugins
File "C:\Python34 64Bit\lib\importlib\__init__.py", line 109, in import_module

File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2254, in _gcd_im
port
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2237, in _find_a
nd_load
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2224, in _find_a
nd_load_unlocked
ImportError: No module named 'omnitool.plugins.mass_replace'
Error importing plugin mazeGen:
Traceback (most recent call last):
File "E:\Dropbox\PyTerraria\omnitool\__init__.py", line 795, in get_plugins
File "C:\Python34 64Bit\lib\importlib\__init__.py", line 109, in import_module

File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2254, in _gcd_im
port
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2237, in _find_a
nd_load
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2224, in _find_a
nd_load_unlocked
ImportError: No module named 'omnitool.plugins.mazeGen'
Error importing plugin npc_renamer:
Traceback (most recent call last):
File "E:\Dropbox\PyTerraria\omnitool\__init__.py", line 795, in get_plugins
File "C:\Python34 64Bit\lib\importlib\__init__.py", line 109, in import_module

File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2254, in _gcd_im
port
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2237, in _find_a
nd_load
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2224, in _find_a
nd_load_unlocked
ImportError: No module named 'omnitool.plugins.npc_renamer'
Error importing plugin sprouts_count:
Traceback (most recent call last):
File "E:\Dropbox\PyTerraria\omnitool\__init__.py", line 795, in get_plugins
File "C:\Python34 64Bit\lib\importlib\__init__.py", line 109, in import_module

File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2254, in _gcd_im
port
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2237, in _find_a
nd_load
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2224, in _find_a
nd_load_unlocked
ImportError: No module named 'omnitool.plugins.sprouts_count'
Error importing plugin sprout_grower:
Traceback (most recent call last):
File "E:\Dropbox\PyTerraria\omnitool\__init__.py", line 795, in get_plugins
File "C:\Python34 64Bit\lib\importlib\__init__.py", line 109, in import_module

File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2254, in _gcd_im
port
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2237, in _find_a
nd_load
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2224, in _find_a
nd_load_unlocked
ImportError: No module named 'omnitool.plugins.sprout_grower'
Error importing plugin test:
Traceback (most recent call last):
File "E:\Dropbox\PyTerraria\omnitool\__init__.py", line 795, in get_plugins
File "C:\Python34 64Bit\lib\importlib\__init__.py", line 109, in import_module

File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2254, in _gcd_im
port
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2237, in _find_a
nd_load
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2224, in _find_a
nd_load_unlocked
ImportError: No module named 'omnitool.plugins.test'
Error importing plugin world_flooder:
Traceback (most recent call last):
File "E:\Dropbox\PyTerraria\omnitool\__init__.py", line 795, in get_plugins
File "C:\Python34 64Bit\lib\importlib\__init__.py", line 109, in import_module

File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2254, in _gcd_im
port
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2237, in _find_a
nd_load
File "c:\Python\64-bit\3.4\lib\importlib\_bootstrap.py", line 2224, in _find_a
nd_load_unlocked
ImportError: No module named 'omnitool.plugins.world_flooder'
Could not register to GameLauncher 3. Maybe it just isn't installed. Exception:
Traceback (most recent call last):
File "E:\Dropbox\PyTerraria\omnitool\__init__.py", line 992, in run
File "C:\Python34 64Bit\lib\pathlib.py", line 1069, in open
File "C:\Python34 64Bit\lib\pathlib.py", line 943, in _opener
File "C:\Python34 64Bit\lib\pathlib.py", line 322, in wrapped
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Samantha\\Do
cuments\\My Games\\Terraria\\Game Launcher\\omnitool.gli3'
GUI Matrix created, initializing..
Updater done

There's also some weirdness with the built in plugins but that seems to be a known issue.
 
Omnitool became a package, so all imports need to be changed. Ijwu's stuff isn't updated for it.
("from omnitool import database" is the new format, versus the old "import database")

Also, the plugin system underwent and still will undergo more changes. So I doubt that's the only thing broken with ijwu's plugins.
 
There should be, but considering it's currently changing, there is nobody who wants to keep constantly updating it.
After everything is updated to 1.3 and stable, there will probably be updated docs.
best you can currently do is look at the plugins that come with omnitool and look at how they work.

It also hasn't changed a bunch, it's mostly structural changes that simply break old plugins since they expect a different module layout.
 
The main problem with that is that none of the plugins that come with it are modifiers as far as i can tell, and that's really what i want to make. But i should be able to handle waiting for new docs. Any rough estimate on when one can expect that?
 
Modifiers don't work at all currently, since not all parts are updated to 1.3 format in the first place. I also don't have an estimate. Help is always welcome on github though, if you want to help update the pieces to 1.3.
 
I decided to look at modifiers but am unfamiliar with python 3.4 and some of the exceptions i've been seeing. Here are the two issues i've run in to so far:

plugingui retrieves a world name as a byte array and passes that information on to phil's gaming utilities. For some reason, that byte array ends up being treated like a widget and this causes an error to be thrown because you can't perform widget operations on a byte array. I got around this by changing line 72 in plugingui from name = get_name(f) to name = str(get_name(f)). This gets the gui working but it displays world names as a string representation of a byte array.

The next problem is in omnitool.__init__.py. On line 932 there is a function call to get_tile() and right now the interpreter doesn't know what that function is referring to. From what I can figure out, it's referring to a set of "get tile" functions in tlib.py. Also in __init__, there is a function called gen_slices that does make these calls to tlib and I think it is supposed to be involved in this in some way but I haven't figured that out yet. If Berserker could tell me about it I might be able to help further.
 
Last edited:
The plugingui is fixed with bytes.decode() as opposed to str(bytes). The Problem is deeper anyway; here's all the things that are todo for a fully functional updated plugin system:

Attach to each world(-class) the appropriate get_tile, get_signs, get_chests etc. methods, as per version in the header of the world.
Most of those don't exist for 1.3 yet - anything past tiles, to be exact.
Update all write methods to 1.3 format - most of which is still 1.1.

gen_slices generates image data for slices of a world. It's what's used for the mapping process.
 
Last edited:
I probably should have mentioned this but I went with str(bytes) because bytes.decode() wasn't working. It fails midway through the array.
 
I probably should have mentioned this but I went with str(bytes) because bytes.decode() wasn't working. It fails midway through the array.

The entire UI thing is fixed for a day now on the github version. If you want, we can continue this discussion there, since we can link into code and to commits directly there.
 
Omnitool is now on Patreon.
This allows you to support me with small monthly payments, if you want. Omnitool will continue to be free, there will never be a pay wall.
 
Back
Top Bottom