Merge remote-tracking branch 'origin/rewrite' into anvil
@@ -10,7 +10,7 @@ Github code repository:
|
|||||||
http://github.com/overviewer/Minecraft-Overviewer
|
http://github.com/overviewer/Minecraft-Overviewer
|
||||||
|
|
||||||
Blog:
|
Blog:
|
||||||
http://mcoverviewer.blogspot.com/
|
http://overviewer.org/blog/
|
||||||
|
|
||||||
|
|
||||||
The Minecraft Overviewer is a command-line tool for rendering high-resolution
|
The Minecraft Overviewer is a command-line tool for rendering high-resolution
|
||||||
|
|||||||
@@ -39,12 +39,14 @@ The ``worlds`` dictionary
|
|||||||
lines like this one. Otherwise, one is sufficient.
|
lines like this one. Otherwise, one is sufficient.
|
||||||
|
|
||||||
The ``renders`` dictionary
|
The ``renders`` dictionary
|
||||||
Each item here declares a "render" which is a map of a world rendered with a
|
Each item here declares a "render" which is a map of one dimension of one
|
||||||
set of options. If you have more than one, when viewing the maps, you will
|
world rendered with the given options. If you declare more than one render,
|
||||||
get a dropdown box to choose which map you want to look at.
|
then you will get a dropdown box to choose which map you want to look at
|
||||||
|
when viewing the maps.
|
||||||
|
|
||||||
You can render the same world multiple times with different options, or
|
You are free to declare as many renders as you want with whatever options
|
||||||
render multiple worlds.
|
you want. For example, you are allowed to render multiple worlds, or even
|
||||||
|
render the same world multiple times with different options.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
@@ -80,14 +82,6 @@ A more complicated example
|
|||||||
"dimension": "nether",
|
"dimension": "nether",
|
||||||
}
|
}
|
||||||
|
|
||||||
renders["survivalspawnoverlay"] = {
|
|
||||||
"world": "survival",
|
|
||||||
"title": "Spawn Overlay",
|
|
||||||
"rendermode": spawn_overlay,
|
|
||||||
"dimension": "overworld",
|
|
||||||
"overlay": ["survivalday", "survivalnight"],
|
|
||||||
}
|
|
||||||
|
|
||||||
renders["creative"] = {
|
renders["creative"] = {
|
||||||
"world": "creative",
|
"world": "creative",
|
||||||
"title": "Creative",
|
"title": "Creative",
|
||||||
@@ -96,24 +90,30 @@ A more complicated example
|
|||||||
}
|
}
|
||||||
|
|
||||||
outputdir = "/home/username/mcmap"
|
outputdir = "/home/username/mcmap"
|
||||||
textures = "/home/username/my_texture_pack.zip"
|
texturepath = "/home/username/my_texture_pack.zip"
|
||||||
|
|
||||||
This config defines four maps for render, and one overlay. Two of them are of
|
This config defines four maps for render. Two of them are of the survival
|
||||||
the survival world's overworld, one is for the survival's nether, and one is for
|
world's overworld, one is for the survival's nether, and one is for the creative
|
||||||
a creative world. The overlay is the "spawn_overlay" (which highlights areas
|
world.
|
||||||
that are dark enough for monsters to spawn) and it will be available when
|
|
||||||
viewing the survivalday and survivalnight maps.
|
|
||||||
|
|
||||||
Notice here we explicitly set the dimension property on each render. If
|
Notice here we explicitly set the dimension property on each render. If
|
||||||
dimension is not specified, the default or overworld dimension is used.
|
dimension is not specified, the default or overworld dimension is used. It is
|
||||||
|
necessary e.g. for the nether render.
|
||||||
|
|
||||||
Also note here we specify some different rendermodes. A rendermode refers to how
|
Also note here we specify some different rendermodes. A rendermode refers to how
|
||||||
the map is rendered. The Overviewer can render a map in many different ways, and
|
the map is rendered. The Overviewer can render a map in many different ways, and
|
||||||
there are many preset rendermodes, and you can even create your own (more on
|
there are many preset rendermodes, and you can even create your own (more on
|
||||||
that later).
|
that later).
|
||||||
|
|
||||||
And finally, note the usage of the ``textures`` option. This specifies a texture
|
And finally, note the usage of the ``texturepath`` option. This specifies a
|
||||||
pack to use for the rendering.
|
texture pack to use for the rendering. Also note that it is set at the top level
|
||||||
|
of the config file, and therefore applies to every render. It could be set on
|
||||||
|
individual renders to apply to just those renders.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
See the ``sample_config.py`` file included in the repository for another
|
||||||
|
example.
|
||||||
|
|
||||||
Config File Specifications
|
Config File Specifications
|
||||||
==========================
|
==========================
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ See also the `Github Homepage`_ and the `Updates Blog`_
|
|||||||
|
|
||||||
.. _Github Homepage: https://github.com/overviewer/Minecraft-Overviewer
|
.. _Github Homepage: https://github.com/overviewer/Minecraft-Overviewer
|
||||||
|
|
||||||
.. _Updates Blog: http://mcoverviewer.blogspot.com/
|
.. _Updates Blog: http://overviewer.org/blog/
|
||||||
|
|
||||||
Introduction
|
Introduction
|
||||||
============
|
============
|
||||||
@@ -111,6 +111,9 @@ our `Github Homepage`_.
|
|||||||
packages and don't want to have to compile anything yourself**, head to the
|
packages and don't want to have to compile anything yourself**, head to the
|
||||||
:doc:`installing` page.
|
:doc:`installing` page.
|
||||||
|
|
||||||
|
**Running Windows and not familiar with the command line?** Head to the
|
||||||
|
:doc:`win_tut/windowsguide` page.
|
||||||
|
|
||||||
**If you would like to build the Overviewer from source yourself (it's not that
|
**If you would like to build the Overviewer from source yourself (it's not that
|
||||||
bad)**, head to the :doc:`Building <building>` page.
|
bad)**, head to the :doc:`Building <building>` page.
|
||||||
|
|
||||||
@@ -148,6 +151,7 @@ Documentation Contents
|
|||||||
building
|
building
|
||||||
running
|
running
|
||||||
config
|
config
|
||||||
|
win_tut/windowsguide
|
||||||
faq
|
faq
|
||||||
design/designdoc
|
design/designdoc
|
||||||
|
|
||||||
|
|||||||
BIN
docs/win_tut/changed_dir.png
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
BIN
docs/win_tut/cmd.png
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
BIN
docs/win_tut/computer_properties.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
docs/win_tut/extracting.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
docs/win_tut/location1.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
docs/win_tut/location2.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
docs/win_tut/opening_cmd.png
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
BIN
docs/win_tut/system.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
docs/win_tut/usage.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
139
docs/win_tut/windowsguide.rst
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
====================
|
||||||
|
Windows Newbie Guide
|
||||||
|
====================
|
||||||
|
If you're running Windows and aren't as familiar with the Windows command
|
||||||
|
prompt as the rest of the documentation assumes you are, this page is for you!
|
||||||
|
|
||||||
|
The Overviewer is a *command line* tool, which means you will need to use the command line to run it.
|
||||||
|
|
||||||
|
**First step:** Open the command line.
|
||||||
|
Open your Start menu and type in the box 'cmd' and press enter. If you're
|
||||||
|
running XP you'll go to the "run" option instead and then type 'cmd' and
|
||||||
|
press enter.
|
||||||
|
|
||||||
|
.. image:: opening_cmd.png
|
||||||
|
|
||||||
|
This should bring up the *command prompt*, a black window with a prompt
|
||||||
|
where you can type *commands*. The prompt part will probably look something
|
||||||
|
like ``C:\Users\andrew>`` followed by a cursor where you type your commands.
|
||||||
|
|
||||||
|
.. image:: cmd.png
|
||||||
|
|
||||||
|
Leave this window open and move on to step 2.
|
||||||
|
|
||||||
|
Now that you know how to open a command line, and haven't been scared off yet,
|
||||||
|
the next step is to download the latest Overviewer.
|
||||||
|
|
||||||
|
**Step 2:** Download Overviewer
|
||||||
|
Go to the `Downloads Page
|
||||||
|
<https://github.com/overviewer/Minecraft-Overviewer/downloads>`_ and
|
||||||
|
download the *latest* version for your architecture, either 32 bit or 64
|
||||||
|
bit.
|
||||||
|
|
||||||
|
*This is important. If you don't know which to choose, 32 or 64,* then you
|
||||||
|
can find out by clicking on the start menu, *right clicking* on the
|
||||||
|
"Computer" icon or "My Computer" icon (depending on your version of
|
||||||
|
Windows), and then selecting "Properties." Somewhere among the information
|
||||||
|
about your computer it should tell you if you're running a *32 bit operating
|
||||||
|
system* or *64 bit operating system*.
|
||||||
|
|
||||||
|
.. image:: computer_properties.png
|
||||||
|
|
||||||
|
.. image:: system.png
|
||||||
|
|
||||||
|
Once you know if your computer is 32 or 64 bit, go and download the latest
|
||||||
|
version. We make small changes all the time, and a new version is uploaded
|
||||||
|
to that page for every change we make. It's usually best to just get the
|
||||||
|
latest.
|
||||||
|
|
||||||
|
Okay, you've got a command prompt open. You've got The Overviewer downloaded.
|
||||||
|
We're half way there!
|
||||||
|
|
||||||
|
**Step 3:** Extract the Overviewer zip you downloaded.
|
||||||
|
This is easy. I assume you know how to unzip things. Unzip the contents to
|
||||||
|
somewhere you can find easily. You'll need to find it in the command
|
||||||
|
prompt. It may help to leave the window with the unzipped contents open so
|
||||||
|
you can remind yourself where it is.
|
||||||
|
|
||||||
|
*Keep all those files together!* They're all needed to run The Overviewer.
|
||||||
|
|
||||||
|
.. image:: extracting.png
|
||||||
|
|
||||||
|
**Step 4:** Change directory in command prompt to the location of overviewer.exe
|
||||||
|
You remember the location of the files you just extracted? Windows doesn't
|
||||||
|
always make it easy. Here's how in windows 7: just click on the little icon
|
||||||
|
to the left of the directory name.
|
||||||
|
|
||||||
|
.. image:: location1.png
|
||||||
|
|
||||||
|
.. image:: location2.png
|
||||||
|
|
||||||
|
Got the location? Good. We're going to *change directory* to that directory
|
||||||
|
with the command prompt. Bring the command prompot window back up. The
|
||||||
|
command we're going to use is called ``cd``, it stands for ... *change
|
||||||
|
directory*!
|
||||||
|
|
||||||
|
I'm going to illustrate this with an example. Let's say you extracted
|
||||||
|
Overviewer to the directory
|
||||||
|
``c:\users\andrew\overviewer``. Here is exactly
|
||||||
|
what you'll type into the command prompt and then press enter::
|
||||||
|
|
||||||
|
cd c:\users\andrew\overviewer
|
||||||
|
|
||||||
|
.. image:: changed_dir.png
|
||||||
|
|
||||||
|
Okay, did it work? Your command *prompt* should now have the *current
|
||||||
|
working directory* in it. If your prompt changed to the directory that you
|
||||||
|
just cd'd to, then your current directory changed successfully! You're ready
|
||||||
|
for the next step!
|
||||||
|
|
||||||
|
Okay before we actually run Overviewer for real, let's do a checkpoint. You
|
||||||
|
should have *cd*'d to the directory where overviewer.exe is. To test, type this
|
||||||
|
in and you should see the help text print out::
|
||||||
|
|
||||||
|
overviewer.exe --help
|
||||||
|
|
||||||
|
note the two hyphens before "help". You should see something like this:
|
||||||
|
|
||||||
|
.. image:: usage.png
|
||||||
|
|
||||||
|
The help text displays the *usage* of overviewer.exe, or the parameters it takes
|
||||||
|
to run it. It's kind of long, I had to make my window larger to show it all.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
overviewer.exe [OPTIONS] <World # / Name / Path to World> <tiles dest dir>
|
||||||
|
|
||||||
|
Command line tool usage convention says that items in [square brackets] are
|
||||||
|
*optional*, while items in <angled brackets> are *required*.
|
||||||
|
|
||||||
|
**Step 5** Render a map!
|
||||||
|
Okay, so to render a map, you have to run ``overviewer.exe`` with two
|
||||||
|
*parameters*: the *world name* and a *destination directory*.
|
||||||
|
|
||||||
|
Let's say you have a world named "Singleplayer world" and you want to put
|
||||||
|
the tiles into a directory on your desktop. Try typing this into the command
|
||||||
|
prompt::
|
||||||
|
|
||||||
|
overviewer.exe "Singleplayer world" c:\users\andrew\desktop\mymap
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
You can also use a path to your world instead of a world name if you
|
||||||
|
know where it's stored. World names only work for single-player worlds.
|
||||||
|
|
||||||
|
If everything went according to plan, The Overviewer should now be churning
|
||||||
|
away furiously on your world, rendering thousands of image files that
|
||||||
|
compose a map of your world.
|
||||||
|
|
||||||
|
When it's done, open up the file ``index.html`` in a web browser and you
|
||||||
|
should see your map!
|
||||||
|
|
||||||
|
I hope this has been enough to get some of you Windows noobs started on The
|
||||||
|
Overviewer. Sorry there's no easy-to-use graphical interface right now. We want
|
||||||
|
to make one, we really do, but we haven't had the time and the talent to do so
|
||||||
|
yet.
|
||||||
|
|
||||||
|
As a next step, head to the :doc:`../options` page to see what else The Overviewer
|
||||||
|
can do. And as always, feel free to drop by in `IRC
|
||||||
|
<http://overviewer.org/irc/>`_ if you have any questions! We're glad to help!
|
||||||
@@ -141,6 +141,8 @@ directory.
|
|||||||
|
|
||||||
# create overviewer.js from the source js files
|
# create overviewer.js from the source js files
|
||||||
js_src = os.path.join(util.get_program_path(), "overviewer_core", "data", "js_src")
|
js_src = os.path.join(util.get_program_path(), "overviewer_core", "data", "js_src")
|
||||||
|
if not os.path.isdir(js_src):
|
||||||
|
js_src = os.path.join(util.get_program_path(), "js_src")
|
||||||
with open(os.path.join(self.outputdir, "overviewer.js"), "w") as fout:
|
with open(os.path.join(self.outputdir, "overviewer.js"), "w") as fout:
|
||||||
# first copy in js_src/overviewer.js
|
# first copy in js_src/overviewer.js
|
||||||
with open(os.path.join(js_src, "overviewer.js")) as f:
|
with open(os.path.join(js_src, "overviewer.js")) as f:
|
||||||
|
|||||||
@@ -239,7 +239,7 @@ overviewer.util = {
|
|||||||
|
|
||||||
var zoomLevels = model.get("zoomLevels");
|
var zoomLevels = model.get("zoomLevels");
|
||||||
var north_direction = model.get('north_direction');
|
var north_direction = model.get('north_direction');
|
||||||
console.log("fromWorldToLatLng: north_direction is %r", north_direction);
|
//console.log("fromWorldToLatLng: north_direction is %r", north_direction);
|
||||||
|
|
||||||
// the width and height of all the highest-zoom tiles combined,
|
// the width and height of all the highest-zoom tiles combined,
|
||||||
// inverted
|
// inverted
|
||||||
@@ -404,7 +404,7 @@ overviewer.util = {
|
|||||||
// save this info is a nice easy to parse format
|
// save this info is a nice easy to parse format
|
||||||
var currentWorldView = overviewer.mapModel.get("currentWorldView");
|
var currentWorldView = overviewer.mapModel.get("currentWorldView");
|
||||||
currentWorldView.options.lastViewport = [x,y,z,zoom];
|
currentWorldView.options.lastViewport = [x,y,z,zoom];
|
||||||
console.log("Updated lastViewport: %r" , [x,y,z,zoom]);
|
//console.log("Updated lastViewport: %r" , [x,y,z,zoom]);
|
||||||
window.location.replace("#/" + Math.floor(x) + "/" + Math.floor(y) + "/" + Math.floor(z) + "/" + zoom + "/" + w + "/" + maptype);
|
window.location.replace("#/" + Math.floor(x) + "/" + Math.floor(y) + "/" + Math.floor(z) + "/" + zoom + "/" + w + "/" + maptype);
|
||||||
},
|
},
|
||||||
'updateHash': function() {
|
'updateHash': function() {
|
||||||
|
|||||||
@@ -3,13 +3,13 @@ overviewer.views= {}
|
|||||||
|
|
||||||
overviewer.views.WorldView = Backbone.View.extend({
|
overviewer.views.WorldView = Backbone.View.extend({
|
||||||
initialize: function(opts) {
|
initialize: function(opts) {
|
||||||
console.log("WorldView::initialize()");
|
//console.log("WorldView::initialize()");
|
||||||
console.log(this.model.get("tileSets"));
|
//console.log(this.model.get("tileSets"));
|
||||||
this.options.mapTypes = [];
|
this.options.mapTypes = [];
|
||||||
this.options.mapTypeIds = [];
|
this.options.mapTypeIds = [];
|
||||||
this.model.get("tileSets").each(function(tset, index, list) {
|
this.model.get("tileSets").each(function(tset, index, list) {
|
||||||
console.log(" eaching");
|
//console.log(" eaching");
|
||||||
console.log(" Working on tileset %s" , tset.get("name"));
|
//console.log(" Working on tileset %s" , tset.get("name"));
|
||||||
var ops = {
|
var ops = {
|
||||||
getTileUrl: overviewer.gmap.getTileUrlGenerator(tset.get("path"), tset.get("base"), tset.get("imgextension")),
|
getTileUrl: overviewer.gmap.getTileUrlGenerator(tset.get("path"), tset.get("base"), tset.get("imgextension")),
|
||||||
'tileSize': new google.maps.Size(
|
'tileSize': new google.maps.Size(
|
||||||
@@ -55,7 +55,7 @@ overviewer.views.WorldSelectorView = Backbone.View.extend({
|
|||||||
"change select": "changeWorld"
|
"change select": "changeWorld"
|
||||||
},
|
},
|
||||||
changeWorld: function() {
|
changeWorld: function() {
|
||||||
console.log("change world!");
|
//console.log("change world!");
|
||||||
var selectObj = this.$("select")[0];
|
var selectObj = this.$("select")[0];
|
||||||
var selectedOption = selectObj.options[selectObj.selectedIndex];
|
var selectedOption = selectObj.options[selectObj.selectedIndex];
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ overviewer.views.WorldSelectorView = Backbone.View.extend({
|
|||||||
//
|
//
|
||||||
},
|
},
|
||||||
render: function(t) {
|
render: function(t) {
|
||||||
console.log("WorldSelectorView::render() TODO implement this (low priority)");
|
//console.log("WorldSelectorView::render() TODO implement this (low priority)");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -118,11 +118,11 @@ overviewer.views.CoordboxView = Backbone.View.extend({
|
|||||||
|
|
||||||
overviewer.views.GoogleMapView = Backbone.View.extend({
|
overviewer.views.GoogleMapView = Backbone.View.extend({
|
||||||
initialize: function(opts) {
|
initialize: function(opts) {
|
||||||
console.log(this);
|
//console.log(this);
|
||||||
this.options.map = null;
|
this.options.map = null;
|
||||||
var curWorld = this.model.get("currentWorldView").model;
|
var curWorld = this.model.get("currentWorldView").model;
|
||||||
console.log("Current world:");
|
//console.log("Current world:");
|
||||||
console.log(curWorld);
|
//console.log(curWorld);
|
||||||
|
|
||||||
var curTset = curWorld.get("tileSets").at(0);
|
var curTset = curWorld.get("tileSets").at(0);
|
||||||
|
|
||||||
@@ -144,9 +144,9 @@ overviewer.views.GoogleMapView = Backbone.View.extend({
|
|||||||
var mapOptions = {};
|
var mapOptions = {};
|
||||||
//
|
//
|
||||||
curWorld.get("tileSets").each(function(elem, index, list) {
|
curWorld.get("tileSets").each(function(elem, index, list) {
|
||||||
console.log("Setting up map for:");
|
//console.log("Setting up map for:");
|
||||||
console.log(elem);
|
//console.log(elem);
|
||||||
console.log("for %s generating url func with %s and %s", elem.get("name"), elem.get("path"), elem.get("base"));
|
//console.log("for %s generating url func with %s and %s", elem.get("name"), elem.get("path"), elem.get("base"));
|
||||||
|
|
||||||
});
|
});
|
||||||
// init the map with some default options. use the first tileset in the first world
|
// init the map with some default options. use the first tileset in the first world
|
||||||
@@ -172,7 +172,7 @@ overviewer.views.GoogleMapView = Backbone.View.extend({
|
|||||||
// register every ImageMapType with the map
|
// register every ImageMapType with the map
|
||||||
$.each(overviewer.collections.worldViews, function( index, worldView) {
|
$.each(overviewer.collections.worldViews, function( index, worldView) {
|
||||||
$.each(worldView.options.mapTypes, function(i_index, maptype) {
|
$.each(worldView.options.mapTypes, function(i_index, maptype) {
|
||||||
console.log("registered %s with the maptype registery", worldView.model.get("name") + maptype.shortname);
|
//console.log("registered %s with the maptype registery", worldView.model.get("name") + maptype.shortname);
|
||||||
overviewer.map.mapTypes.set(overviewerConfig.CONST.mapDivId +
|
overviewer.map.mapTypes.set(overviewerConfig.CONST.mapDivId +
|
||||||
worldView.model.get("name") + maptype.shortname , maptype);
|
worldView.model.get("name") + maptype.shortname , maptype);
|
||||||
});
|
});
|
||||||
@@ -183,7 +183,7 @@ overviewer.views.GoogleMapView = Backbone.View.extend({
|
|||||||
* Should be called when the current world has changed in GoogleMapModel
|
* Should be called when the current world has changed in GoogleMapModel
|
||||||
*/
|
*/
|
||||||
render: function() {
|
render: function() {
|
||||||
console.log("GoogleMapView::render()");
|
//console.log("GoogleMapView::render()");
|
||||||
var view = this.model.get("currentWorldView");
|
var view = this.model.get("currentWorldView");
|
||||||
this.options.mapOptions.mapTypeControlOptions = {
|
this.options.mapOptions.mapTypeControlOptions = {
|
||||||
mapTypeIds: view.options.mapTypeIds};
|
mapTypeIds: view.options.mapTypeIds};
|
||||||
@@ -198,14 +198,14 @@ overviewer.views.GoogleMapView = Backbone.View.extend({
|
|||||||
* Keeps track of the currently visible tileset
|
* Keeps track of the currently visible tileset
|
||||||
*/
|
*/
|
||||||
updateCurrentTileset: function() {
|
updateCurrentTileset: function() {
|
||||||
console.log("GoogleMapView::updateCurrentTileset()");
|
//console.log("GoogleMapView::updateCurrentTileset()");
|
||||||
var currentWorldView = this.model.get("currentWorldView");
|
var currentWorldView = this.model.get("currentWorldView");
|
||||||
var gmapCurrent = overviewer.map.getMapTypeId();
|
var gmapCurrent = overviewer.map.getMapTypeId();
|
||||||
for (id in currentWorldView.options.mapTypeIds) {
|
for (id in currentWorldView.options.mapTypeIds) {
|
||||||
if (currentWorldView.options.mapTypeIds[id] == gmapCurrent) {
|
if (currentWorldView.options.mapTypeIds[id] == gmapCurrent) {
|
||||||
console.log("updating currenttileset");
|
//console.log("updating currenttileset");
|
||||||
this.options.currentTileSet = currentWorldView.model.get("tileSets").at(id);
|
this.options.currentTileSet = currentWorldView.model.get("tileSets").at(id);
|
||||||
console.log(this);
|
//console.log(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,35 @@ class Setting(object):
|
|||||||
self.validator = validator
|
self.validator = validator
|
||||||
self.default = default
|
self.default = default
|
||||||
|
|
||||||
|
def checkBadEscape(s):
|
||||||
|
fixed = False
|
||||||
|
fixed_string = s
|
||||||
|
if "\a" in fixed_string:
|
||||||
|
fixed_string = s.replace("\a", r"\a")
|
||||||
|
fixed = True
|
||||||
|
if "\b" in fixed_string:
|
||||||
|
fixed_string = s.replace("\b", r"\b")
|
||||||
|
fixed = True
|
||||||
|
if "\t" in fixed_string:
|
||||||
|
fixed_string = s.replace("\t", r"\t")
|
||||||
|
fixed = True
|
||||||
|
if "\n" in fixed_string:
|
||||||
|
fixed_string = s.replace("\n", r"\n")
|
||||||
|
fixed = True
|
||||||
|
if "\v" in fixed_string:
|
||||||
|
fixed_string = s.replace("\v", r"\v")
|
||||||
|
fixed = True
|
||||||
|
if "\f" in fixed_string:
|
||||||
|
fixed_string = s.replace("\f", r"\f")
|
||||||
|
fixed = True
|
||||||
|
if "\r" in fixed_string:
|
||||||
|
fixed_string = s.replace("\r", r"\r")
|
||||||
|
fixed = True
|
||||||
|
return (fixed, fixed_string)
|
||||||
|
|
||||||
|
|
||||||
def validateWorldPath(worldpath):
|
def validateWorldPath(worldpath):
|
||||||
|
_, worldpath = checkBadEscape(worldpath)
|
||||||
abs_path = os.path.abspath(worldpath)
|
abs_path = os.path.abspath(worldpath)
|
||||||
if not os.path.exists(os.path.join(abs_path, "level.dat")):
|
if not os.path.exists(os.path.join(abs_path, "level.dat")):
|
||||||
raise ValidationException("No level.dat file in '%s'. Are you sure you have the right path?" % (abs_path,))
|
raise ValidationException("No level.dat file in '%s'. Are you sure you have the right path?" % (abs_path,))
|
||||||
@@ -133,6 +161,7 @@ def validateDimension(d):
|
|||||||
raise ValidationException("%r is not a valid dimension" % d)
|
raise ValidationException("%r is not a valid dimension" % d)
|
||||||
|
|
||||||
def validateOutputDir(d):
|
def validateOutputDir(d):
|
||||||
|
_, d = checkBadEscape(d)
|
||||||
if not d.strip():
|
if not d.strip():
|
||||||
raise ValidationException("You must specify a valid output directory")
|
raise ValidationException("You must specify a valid output directory")
|
||||||
return os.path.abspath(d)
|
return os.path.abspath(d)
|
||||||
|
|||||||
@@ -398,7 +398,8 @@ class TileSet(object):
|
|||||||
path = self.options.get('name'),
|
path = self.options.get('name'),
|
||||||
base = '',
|
base = '',
|
||||||
bgcolor = bgcolorformat(self.options.get('bgcolor')),
|
bgcolor = bgcolorformat(self.options.get('bgcolor')),
|
||||||
world = self.options.get('worldname_orig') + " - " + self.options.get('dimension'),
|
world = self.options.get('worldname_orig') +
|
||||||
|
(" - " + self.options.get('dimension') if self.options.get('dimension') != 'default' else ''),
|
||||||
last_rendertime = self.this_rendertime,
|
last_rendertime = self.this_rendertime,
|
||||||
imgextension = self.imgextension,
|
imgextension = self.imgextension,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ def findGitHash():
|
|||||||
|
|
||||||
def findGitVersion():
|
def findGitVersion():
|
||||||
try:
|
try:
|
||||||
p = Popen(['git', 'describe', '--tags'], stdout=PIPE, stderr=PIPE)
|
p = Popen(['git', 'describe', '--tags'], stdout=PIPE, stderr=PIPE, shell=True)
|
||||||
p.stderr.close()
|
p.stderr.close()
|
||||||
line = p.stdout.readlines()[0]
|
line = p.stdout.readlines()[0]
|
||||||
if line.startswith('release-'):
|
if line.startswith('release-'):
|
||||||
|
|||||||
1
setup.py
@@ -100,6 +100,7 @@ if py2exe is not None:
|
|||||||
setup_kwargs['data_files'] = [('', doc_files)]
|
setup_kwargs['data_files'] = [('', doc_files)]
|
||||||
setup_kwargs['data_files'] += recursive_data_files('overviewer_core/data/textures', 'textures')
|
setup_kwargs['data_files'] += recursive_data_files('overviewer_core/data/textures', 'textures')
|
||||||
setup_kwargs['data_files'] += recursive_data_files('overviewer_core/data/web_assets', 'web_assets')
|
setup_kwargs['data_files'] += recursive_data_files('overviewer_core/data/web_assets', 'web_assets')
|
||||||
|
setup_kwargs['data_files'] += recursive_data_files('overviewer_core/data/js_src', 'js_src')
|
||||||
setup_kwargs['data_files'] += recursive_data_files('contrib', 'contrib')
|
setup_kwargs['data_files'] += recursive_data_files('contrib', 'contrib')
|
||||||
setup_kwargs['zipfile'] = None
|
setup_kwargs['zipfile'] = None
|
||||||
if platform.system() == 'Windows' and '64bit' in platform.architecture():
|
if platform.system() == 'Windows' and '64bit' in platform.architecture():
|
||||||
|
|||||||