Podshot / MCEdit-Unified

Combined MCEdit & Pymclevel repository.
http://podshot.github.io/MCEdit-Unified/
ISC License
484 stars 109 forks source link

Cannot load MCPE 1.0 saves #801

Open PuserZed opened 7 years ago

PuserZed commented 7 years ago

Yesterday I wanted to load a PE1.0 save, but it doesn't work. I found the PE saves are saved in a "db" folder, and the Level.dat is empty. Then I tried to use McEdit 2.0Beta to load it, but it also failed. Can you fix this? I want to transfer the PE to PC, because it's too hard to build a huge thing on a phone. Thx~

OnlyBMan commented 7 years ago

@PuserZed Hello! Right now, only MCEdit-Unified can run MCPE 1.0 worlds, only if you run from source and compile the new PE leveldb. If you want me to tell you how to do it, just respond back in this issue. 😄

PuserZed commented 7 years ago

@bman92102 Could you tell me how to do it? Thanks a lot!

OnlyBMan commented 7 years ago

Ok, first, you either need to be running Linux, or use a Linux virtual machine. I think it is possible from Windows itself, but I couldn't manage to successfully do it. So once you download MCEdit from source and install the necessary packages, you would need to open the terminal inside the folder pymclevel, and run the command

python setup_leveldb.py

PuserZed commented 7 years ago

@bman92102 Emm...I cannot find the file named "setup_leveldb.py" I only can find "test_leveldb.py"

PuserZed commented 7 years ago

@bman92102 I succeeded in running the setup_leveldb.py in Linux, but it told me "Syntax Error"

LaChal commented 7 years ago

Can you post the full error, please?

PuserZed commented 7 years ago

[puserzed@localhost pymclevel]$ python setup_leveldb.py

Building Linux Minecraft Pocket Edition for MCEdit...

Searching for the binaries needed (gcc, g++, unzip, wget)... All the needed binaries were found. Downloading sources for leveldb URL: https://codeload.github.com/Mojang/leveldb-mcpe/zip/a056ea7c18dfd7b806d6d693726ce79d75543904 --2017-06-05 17:45:40-- https://codeload.github.com/Mojang/leveldb-mcpe/zip/a056ea7c18dfd7b806d6d693726ce79d75543904 正在解析主机 codeload.github.com (codeload.github.com)... 192.30.255.121, 192.30.255.120 正在连接 codeload.github.com (codeload.github.com)|192.30.255.121|:443... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:未指定 [application/zip] 正在保存至: “leveldb.zip”

[     <=>                               ] 322,710      392KB/s 用时 0.8s   

2017-06-05 17:45:42 (392 KB/s) - “leveldb.zip” 已保存 [322710]

Unpacking leveldb Cleaning archive. Downloading sources for zlib URL: https://github.com/madler/zlib/archive/4a090adef8c773087ec8916ad3c2236ef560df27.zip --2017-06-05 17:45:42-- https://github.com/madler/zlib/archive/4a090adef8c773087ec8916ad3c2236ef560df27.zip 正在解析主机 github.com (github.com)... 192.30.255.113, 192.30.255.112 正在连接 github.com (github.com)|192.30.255.113|:443... 已连接。 已发出 HTTP 请求,正在等待回应... 302 Found 位置:https://codeload.github.com/madler/zlib/zip/4a090adef8c773087ec8916ad3c2236ef560df27 [跟随至新的 URL] --2017-06-05 17:45:43-- https://codeload.github.com/madler/zlib/zip/4a090adef8c773087ec8916ad3c2236ef560df27 正在解析主机 codeload.github.com (codeload.github.com)... 192.30.255.120, 192.30.255.121 正在连接 codeload.github.com (codeload.github.com)|192.30.255.120|:443... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:未指定 [application/zip] 正在保存至: “zlib.zip”

[     <=>                               ] 802,129      783KB/s 用时 1.0s   

2017-06-05 17:45:45 (783 KB/s) - “zlib.zip” 已保存 [802129]

Unpacking zlib Cleaning archive. Checking zlib. Traceback (most recent call last): File "setup_leveldb.py", line 253, in main() File "setup_leveldb.py", line 176, in main zlib = find_lib("libz.so.%s"%zlib_ideal_version) File "setup_leveldb.py", line 71, in find_lib paths = default_paths + get_lib_paths(input_file) File "setup_leveldb.py", line 60, in get_lib_paths for n in os.listdir(d): OSError: [Errno 2] No such file or directory: 'ld.so.conf.d'

LaChal commented 7 years ago

This shall be fixed now. Let us know :smile:

By the way, what is your Linux system?

PuserZed commented 7 years ago

It's CentOS7.0 , so what should I do next?🤔

PuserZed commented 7 years ago

`[puserzed@localhost pymclevel]$ python setup_leveldb.py

Building Linux Minecraft Pocket Edition for MCEdit...

Searching for the binaries needed (gcc, g++, unzip, wget)... All the needed binaries were found. Downloading sources for leveldb URL: https://codeload.github.com/Mojang/leveldb-mcpe/zip/a056ea7c18dfd7b806d6d693726ce79d75543904 --2017-06-05 23:06:15-- https://codeload.github.com/Mojang/leveldb-mcpe/zip/a056ea7c18dfd7b806d6d693726ce79d75543904 Resolving codeload.github.com (codeload.github.com)... 192.30.255.121, 192.30.255.120 Connecting to codeload.github.com (codeload.github.com)|192.30.255.121|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 322710 (315K) [application/zip] Saving to: ‘leveldb.zip’

100%[======================================>] 322,710 348KB/s in 0.9s

2017-06-05 23:06:17 (348 KB/s) - ‘leveldb.zip’ saved [322710/322710]

Unpacking leveldb Cleaning archive. Downloading sources for zlib URL: https://github.com/madler/zlib/archive/4a090adef8c773087ec8916ad3c2236ef560df27.zip --2017-06-05 23:06:17-- https://github.com/madler/zlib/archive/4a090adef8c773087ec8916ad3c2236ef560df27.zip Resolving github.com (github.com)... 192.30.255.112, 192.30.255.113 Connecting to github.com (github.com)|192.30.255.112|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://codeload.github.com/madler/zlib/zip/4a090adef8c773087ec8916ad3c2236ef560df27 [following] --2017-06-05 23:06:18-- https://codeload.github.com/madler/zlib/zip/4a090adef8c773087ec8916ad3c2236ef560df27 Resolving codeload.github.com (codeload.github.com)... 192.30.255.120, 192.30.255.121 Connecting to codeload.github.com (codeload.github.com)|192.30.255.120|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 802129 (783K) [application/zip] Saving to: ‘zlib.zip’

100%[======================================>] 802,129 747KB/s in 1.0s

2017-06-05 23:06:20 (747 KB/s) - ‘zlib.zip’ saved [802129/802129]

Unpacking zlib Cleaning archive. Checking zlib. ('/lib64/libz.so.1.2.7', True, '1.2.7') WARNING: zlib was found, but its version is 1.2.7. You can try to build with this version, but it may fail, or the generated libraries may not work... Continue [y/N]? y Building leveldb... g++ -pthread -shared -Wl,-soname -Wl,libleveldb.so.1 --std=c++11 -DDLLX= -I. -I./include -std=c++0x -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -DLEVELDB_ATOMIC_PRESENT -O2 -DNDEBUG -fPIC db/builder.cc db/c.cc db/dbformat.cc db/db_impl.cc db/db_iter.cc db/dumpfile.cc db/filename.cc db/log_reader.cc db/log_writer.cc db/memtable.cc db/repair.cc db/snappy_compressor.cc db/table_cache.cc db/version_edit.cc db/version_set.cc db/write_batch.cc db/zlib_compressor.cc table/block_builder.cc table/block.cc table/filter_block.cc table/format.cc table/iterator.cc table/merger.cc table/table_builder.cc table/table.cc table/two_level_iterator.cc util/arena.cc util/bloom.cc util/cache.cc util/coding.cc util/comparator.cc util/crc32c.cc util/env_boost.cc util/env.cc util/env_posix.cc util/env_win.cc util/filter_policy.cc util/hash.cc util/histogram.cc util/logging.cc util/options.cc util/status.cc util/win_logger.cc port/port_posix.cc -o libleveldb.so.1.18 / /: file not recognized: Is a directory collect2: error: ld returned 1 exit status make: [libleveldb.so.1.18] Error 1 Traceback (most recent call last): File "setup_leveldb.py", line 509, in main() File "setup_leveldb.py", line 497, in main os.rename("leveldb/libleveldb.so.1.18", "./libleveldb.so.1.18") OSError: [Errno 2] No such file or directory ` Is this means that the verison of Zlib is too old?

LaChal commented 7 years ago

Hmmm...

There's not 'line 497' in the script.

Grab again the whole repo. I guess something went wrong when you updated the script.

The Warning is quite normal. As said in the INSTALL_LEVELDB file, the stuff has only be tested with Zlib 1.2.8 and 1.2.10, but may work with other versions!

Edit: Just saw something else in the compiler command line. I'll check this later... Meanwhile, just grab the repo again :smile:

PuserZed commented 7 years ago

@LaChal Em... So what to do then? I can't understand well.

PuserZed commented 7 years ago

It always says this:

/: file not recognized: Is a directory collect2: error: ld returned 1 exit status make: *** [libleveldb.so.1.18] Error 1 Traceback (most recent call last): File "setup_leveldb.py", line 255, in main() File "setup_leveldb.py", line 249, in main os.rename("leveldb/libleveldb.so.1.18", "./libleveldb.so.1.18") OSError: [Errno 2] No such file or directory

OnlyBMan commented 7 years ago

@PuserZed you need to go to the MCEdit folder, right click inside the folder, and open in terminal, then, type git pull. It should update your MCEdit.

OnlyBMan commented 7 years ago

Then to compile the MCPE support again

LaChal commented 7 years ago

If you used git to get the repo, bman92102 is the easiest approach, indeed.

Anyway, I saw the error line changed for 249, which is a progress. It does not fix the compilator error (/: file not recognized: Is a directory), but it's better.

Just to clarify: you have to open a terminal into the pymclevel folder in the MCEdit-Unified, and then enter the command python setup_leveldb.py.

If it fails again, please, post the content of the Makefile you'll find in the leveldb sub-folder.

PuserZed commented 7 years ago

Well, it failed again.... Here is the content of MAKEFILE:

Copyright (c) 2011 The LevelDB Authors. All rights reserved.

Use of this source code is governed by a BSD-style license that can be

found in the LICENSE file. See the AUTHORS file for names of contributors.

-----------------------------------------------

Uncomment exactly one of the lines labelled (A), (B), and (C) below

to switch between compilation modes.

(A) Production use (optimized mode)

OPT ?= -O2 -DNDEBUG

(B) Debug mode, w/ full line-level debugging symbols

OPT ?= -g2

(C) Profiling mode: opt, but w/debugging symbols

OPT ?= -O2 -g2 -DNDEBUG

-----------------------------------------------

detect what platform we're building on

$(shell CC="$(CC)" CXX="$(CXX)" TARGET_OS="$(TARGET_OS)" \ ./build_detect_platform build_config.mk ./)

this file is generated by the previous line to set build flags and sources

include build_config.mk

CFLAGS += -I. -I./include $(PLATFORM_CCFLAGS) $(OPT) CXXFLAGS += --std=c++11 -DDLLX= -I. -I./include $(PLATFORM_CXXFLAGS) $(OPT)

LDFLAGS += $(PLATFORM_LDFLAGS) LIBS += $(PLATFORM_LIBS) /

LIBOBJECTS = $(SOURCES:.cc=.o) MEMENVOBJECTS = $(MEMENV_SOURCES:.cc=.o)

TESTUTIL = ./util/testutil.o TESTHARNESS = ./util/testharness.o $(TESTUTIL)

Note: iOS should probably be using libtool, not ar.

ifeq ($(PLATFORM), IOS) AR=xcrun ar endif

TESTS = \ arena_test \ autocompact_test \ bloom_test \ c_test \ cache_test \ coding_test \ corruption_test \ crc32c_test \ db_test \ dbformat_test \ env_test \ fault_injection_test \ filename_test \ filter_block_test \ hash_test \ issue178_test \ issue200_test \ log_test \ memenv_test \ skiplist_test \ table_test \ version_edit_test \ version_set_test \ write_batch_test

PROGRAMS = db_bench leveldbutil $(TESTS) BENCHMARKS = db_bench_sqlite3 db_bench_tree_db

LIBRARY = libleveldb.a MEMENVLIBRARY = libmemenv.a

default: all

Should we build shared libraries?

ifneq ($(PLATFORM_SHARED_EXT),)

ifneq ($(PLATFORM_SHARED_VERSIONED),true) SHARED1 = libleveldb.$(PLATFORM_SHARED_EXT) SHARED2 = $(SHARED1) SHARED3 = $(SHARED1) SHARED = $(SHARED1) else

Update db.h if you change these.

SHARED_MAJOR = 1 SHARED_MINOR = 18 SHARED1 = libleveldb.$(PLATFORM_SHARED_EXT) SHARED2 = $(SHARED1).$(SHARED_MAJOR) SHARED3 = $(SHARED1).$(SHARED_MAJOR).$(SHARED_MINOR) SHARED = $(SHARED1) $(SHARED2) $(SHARED3) $(SHARED1): $(SHARED3) ln -fs $(SHARED3) $(SHARED1) $(SHARED2): $(SHARED3) ln -fs $(SHARED3) $(SHARED2) endif

$(SHARED3): $(CXX) $(LDFLAGS) $(PLATFORM_SHARED_LDFLAGS)$(SHARED2) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) $(SOURCES) -o $(SHARED3) $(LIBS)

endif # PLATFORM_SHARED_EXT

all: $(SHARED) $(LIBRARY)

check: all $(PROGRAMS) $(TESTS) for t in $(TESTS); do echo "***** Running $$t"; ./$$t || exit 1; done

clean: -rm -f $(PROGRAMS) $(BENCHMARKS) $(LIBRARY) $(SHARED) $(MEMENVLIBRARY) /.o //.o ios-x86//.o ios-arm//.o build_config.mk -rm -rf ios-x86/ ios-arm/*

$(LIBRARY): $(LIBOBJECTS) rm -f $@ $(AR) -rs $@ $(LIBOBJECTS)

db_bench: db/db_bench.o $(LIBOBJECTS) $(TESTUTIL) $(CXX) $(LDFLAGS) db/db_bench.o $(LIBOBJECTS) $(TESTUTIL) -o $@ $(LIBS)

db_bench_sqlite3: doc/bench/db_bench_sqlite3.o $(LIBOBJECTS) $(TESTUTIL) $(CXX) $(LDFLAGS) doc/bench/db_bench_sqlite3.o $(LIBOBJECTS) $(TESTUTIL) -o $@ -lsqlite3 $(LIBS)

db_bench_tree_db: doc/bench/db_bench_tree_db.o $(LIBOBJECTS) $(TESTUTIL) $(CXX) $(LDFLAGS) doc/bench/db_bench_tree_db.o $(LIBOBJECTS) $(TESTUTIL) -o $@ -lkyotocabinet $(LIBS)

leveldbutil: db/leveldb_main.o $(LIBOBJECTS) $(CXX) $(LDFLAGS) db/leveldb_main.o $(LIBOBJECTS) -o $@ $(LIBS)

arena_test: util/arena_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) util/arena_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

autocompact_test: db/autocompact_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) db/autocompact_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

bloom_test: util/bloom_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) util/bloom_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

c_test: db/c_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) db/c_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

cache_test: util/cache_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) util/cache_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

coding_test: util/coding_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) util/coding_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

corruption_test: db/corruption_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) db/corruption_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

crc32c_test: util/crc32c_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) util/crc32c_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

db_test: db/db_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) db/db_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

dbformat_test: db/dbformat_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) db/dbformat_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

env_test: util/env_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) util/env_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

fault_injection_test: db/fault_injection_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) db/fault_injection_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

filename_test: db/filename_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) db/filename_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

filter_block_test: table/filter_block_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) table/filter_block_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

hash_test: util/hash_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) util/hash_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

issue178_test: issues/issue178_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) issues/issue178_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

issue200_test: issues/issue200_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) issues/issue200_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

log_test: db/log_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) db/log_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

table_test: table/table_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) table/table_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

skiplist_test: db/skiplist_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) db/skiplist_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

version_edit_test: db/version_edit_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) db/version_edit_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

version_set_test: db/version_set_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) db/version_set_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

write_batch_test: db/write_batch_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CXX) $(LDFLAGS) db/write_batch_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)

$(MEMENVLIBRARY) : $(MEMENVOBJECTS) rm -f $@ $(AR) -rs $@ $(MEMENVOBJECTS)

memenv_test : helpers/memenv/memenv_test.o $(MEMENVLIBRARY) $(LIBRARY) $(TESTHARNESS) $(CXX) $(LDFLAGS) helpers/memenv/memenv_test.o $(MEMENVLIBRARY) $(LIBRARY) $(TESTHARNESS) -o $@ $(LIBS)

ifeq ($(PLATFORM), IOS)

For iOS, create universal object files to be used on both the simulator and

a device.

PLATFORMSROOT=/Applications/Xcode.app/Contents/Developer/Platforms SIMULATORROOT=$(PLATFORMSROOT)/iPhoneSimulator.platform/Developer DEVICEROOT=$(PLATFORMSROOT)/iPhoneOS.platform/Developer IOSVERSION=$(shell defaults read $(PLATFORMSROOT)/iPhoneOS.platform/version CFBundleShortVersionString) IOSARCH=-arch armv6 -arch armv7 -arch armv7s -arch arm64

.cc.o: mkdir -p ios-x86/$(dir $@) xcrun -sdk iphonesimulator $(CXX) $(CXXFLAGS) -isysroot $(SIMULATORROOT)/SDKs/iPhoneSimulator$(IOSVERSION).sdk -arch i686 -arch x86_64 -c $< -o ios-x86/$@ mkdir -p ios-arm/$(dir $@) xcrun -sdk iphoneos $(CXX) $(CXXFLAGS) -isysroot $(DEVICEROOT)/SDKs/iPhoneOS$(IOSVERSION).sdk $(IOSARCH) -c $< -o ios-arm/$@ xcrun lipo ios-x86/$@ ios-arm/$@ -create -output $@

.c.o: mkdir -p ios-x86/$(dir $@) xcrun -sdk iphonesimulator $(CC) $(CFLAGS) -isysroot $(SIMULATORROOT)/SDKs/iPhoneSimulator$(IOSVERSION).sdk -arch i686 -arch x86_64 -c $< -o ios-x86/$@ mkdir -p ios-arm/$(dir $@) xcrun -sdk iphoneos $(CC) $(CFLAGS) -isysroot $(DEVICEROOT)/SDKs/iPhoneOS$(IOSVERSION).sdk $(IOSARCH) -c $< -o ios-arm/$@ xcrun lipo ios-x86/$@ ios-arm/$@ -create -output $@

else .cc.o: $(CXX) $(CXXFLAGS) -c $< -o $@

.c.o: $(CC) $(CFLAGS) -c $< -o $@ endif

PuserZed commented 7 years ago

Or I just want to turn a PE save into PC save, could you help me do this? I really don't know how to do it.

OnlyBMan commented 7 years ago

@PuserZed I can convert PE to PC for you, just send me the world :smile: I also recommend trying to set it up on Ubuntu instead of Cent OS, and try the same steps as before!

OnlyBMan commented 7 years ago

@LaChal I think the issue may be due to him running on Cent OS, which I don't know if it would work at all with it.

LaChal commented 7 years ago

It may be related to CentOS, indeed. But I did not have time to test today, badly :/

The / reported as being a directory an not a file shall be the full path to the Zlib DLL (something like /usr/lib/zlib.so.1.2.3, for instance: /lib64/libz.so.1.2.7). The script shall handle this... (I'm a bit confused for now about that.)

Converting a PE world to a PC one is not natively supported in MCEdit. But using an experimental filter and having a working MCEdit PE support, it may be possible.

(( @bman92102: I guess you could compile the DLL and you're using @neonerz experimental filter (I can't find the link anymore...) ))

@PuserZed: It is realy important to run the script in the directory it is, and don't run it as root but as the user you will use MCEdit. The root ( AKA 'Administrator' on Windows) installation and use of MCEdit is not yet supported! If this looks too much to obscure magical incantations, I may give you a bit of help :smile:

neonerz commented 7 years ago

@bman92102 and I found a few more issues with the filter I hope to hammer out tonight. I'll post it if we could iron out all the major bugs.

OnlyBMan commented 7 years ago

@LaChal Not using the Windows version, I will try though and see if it works!

OnlyBMan commented 7 years ago

@LaChal When I try to run the sh in cmd, I get a python2 not found

PuserZed commented 7 years ago

@bman92102 https://mega.nz/#!ojJWzSbC!qMFnWcCTDBAC5pwHuk4XoI2S0ZqJSpgaxy7SCis6dLo Thanks a lot!😊

PuserZed commented 7 years ago

I have tried it on Ubuntu, and it gave me the same error

OnlyBMan commented 7 years ago

@PuserZed Hmmmm, seems like I cannot port it :. I'm guessing it is a 0.9 / 1.0 world hybrid, It gives me this error when trying to save it as a schematic

*** MCEDIT DEBUG: current directory: /home/bman92102/Desktop/MCEdit-Unified

Traceback (most recent call last): File "/home/bman92102/Desktop/MCEdit-Unified/mceutils.py", line 53, in _alertException return func(*args, **kw) File "/home/bman92102/Desktop/MCEdit-Unified/editortools/select.py", line 1225, in exportSelection self.editor.exportSchematic(schematic) File "/home/bman92102/Desktop/MCEdit-Unified/leveleditor.py", line 843, in exportSchematic StructureNBT.fromSchematic(schematic).save(filename) File "/home/bman92102/Desktop/MCEdit-Unified/pymclevel/schematic.py", line 813, in fromSchematic structure = cls(size=(schematic.Width, schematic.Height, schematic.Length), mats=namedMaterials[getattr(schematic, "Materials", 'Alpha')]) File "/home/bman92102/Desktop/MCEdit-Unified/pymclevel/schematic.py", line 737, in init from materials import blockstateToID ImportError: cannot import name blockstateToID

@LaChal I tried using Windows for the newest source, but it doesn't save the PE world's seeds, it will just reset them to the seed 0 with no name and no date

PuserZed commented 7 years ago

hmm…yes, it is an 1.0 world😶

LaChal commented 7 years ago

Regarding the mixed world format, 1+ PE worlds can contain 0.9 chunks. This shall already be handled by MCEdit if you use the new support (the new feature file and CLI switch).

Regarding the error when exporting as a NBT structure schematic, it is not related to the world format, and shall be fixed now.

Please note that exporting as a NBT structure may hang you machine. The whole world data will be stored in the RAM, then written on the disk in the .nbt file. Please, use the schematic format. Depending on your MCEdit blocks cache setting, it will create a zipped multi-file schematic you can then re-import in MCEdit. Selecting schematic format is done when the dialog asking the file name pops up.

@PuserZed : having the same compilation error on Ubuntu is annoying :/ I'll test the script (again) on my side, and see...

@bman92102 : to use the new support on Windows, you have to use the new feature file and CLI too. For the 'python2 not found error', just ensure Python 2.7 is installed on your Linux. (I guess it is, or MCEdit can't start...) On Linux, there can be several Python version installed; usually Python 2.x and Python 3.x. The command python may point to any of these version. Two other command shall be also available to point these version specifically. python2 shall point to the Python version we need. Open a shell and enter python --version. If it is 2.7.x, just replace the python2 with python in the shell script, and you're good to go. Otherwise, replace python2 with the full path to your Python 2.7.x executable.

OnlyBMan commented 7 years ago

@LaChal How would I go about using CLI? Thanks!

OnlyBMan commented 7 years ago

Do you mean running from the command line?

LaChal commented 7 years ago

CLI = Command Line Interface (or so), by opposite to GUI: Graphical User Interface.

neonerz commented 7 years ago

@LaChal is running the CLI just running mcedit.py with some arguments? If so, is there somewhere that documents using mcedit without the GUI? That would be super ideal.

OnlyBMan commented 7 years ago

@LaChal I have been doing that, on Windows, it will read and write to the world just fine, but it won't save the seed, world name or the date last accessed in game

PuserZed commented 7 years ago

So…Emm…Is that means there's no way to convert PE to PC?😮

OnlyBMan commented 7 years ago

@PuserZed It is possible, but support for it isn't complete yet. I would wait until the next full release to see if it's possible then.

PuserZed commented 7 years ago

Alright, Thanks for your help!☺

LaChal commented 7 years ago

@neonerz : MCEdit-Unified has a CLI support, but only to manage 'new features' and some debugging level. Implementing CLI options to controll what MCEdit does is possible (nothing is impossible regarding informatics), but it takes time to do and test, and depends what functionalities shall be without a GUI...

@PuserZed : just pay attention to the folder in which you enter the python setup_leveldb.py command. It must be /the/folder/where/sources/are/pymclevel. It re-tested on a Ubuntu 14.04, and all was fine. I did not have time to make room on my machine to install a 16.04 yet, but it will come :smile:

@bman92102 : I'm not using Windows and can't test PE worlds in-game, but on my side, I can see the RandomSeed and LastPlayed tags correctly in MCEdit. I'll give a try on a VM later. (Same issue with disk space than for Ubuntu 16.04...)

neonerz commented 7 years ago

@LaChal I found a different (possibly known?) issue with PE worlds importing. Instead of opening a new issue (which I can), I thought I'd post it in here.

It's something @bman92102 and I noticed on 1.0 worlds, and I just noticed it also happens on 1.1 worlds after the latest commit. It seems random gravel entities (just the entity, not the block) are existing in worlds imported into mcedit. If you try and remove them, they appear to be gone, but next time you load the world in MCEdit, they are back again.

Below is a screen shot from MCEdit (running on linux using the latest commit supporting 1.1) and a world file. The was a fresh generation of a flatland world in Windows 10 1.1.

edit: If you look in the world, it looks like sand entities as well. edit2: it actually looks like entities in general that exist in MCPE are being converted to random entities in MCEdit. I looked in game, and the two entities in that screen shot are two sheep

If you rather me open a new issue, let me know.

2017-06-11_23-06-05

My World.zip

LaChal commented 7 years ago

I did not have time to look at this yet, but it looks like something's missing from the definition files. I'll update when I'll get the answer :smile:

neonerz commented 7 years ago

@LaChal - just got back from vacation and tried the latest commit. Everything seems to be running fine without using --new-features. Just so you know, the entities issue is still happening.

LaChal commented 7 years ago

@neonerz I tested you world in MCEdit. I could see three sheeps and two pigs. I modified the world, saved and reloaded it. Same result...

2017-06-25 03-26-21-

neonerz commented 7 years ago

@LaChal, I'm not sure what to say. When I load up the same world, I'm showing Gravel and Sand respectively. I know @bman92102 was/is having the same issue as me.

Is there anything else that needs to be done outside of what's in the README for PE support? I guess it could be something I'm doing wrong, but I'm not sure what it could be. I'm running the latest source, in Ubuntu, and I built _nbt.pyx as described in the README.

Here's the dump_pe.txt that shows the issue (lines 317, 326, and 397 for gravel, and lines 1038 and 1039 for sand) , as well as a screen shot: dump_pe.txt vmplayer_2017-06-25_14-05-06

LaChal commented 7 years ago

The detected chunk version is correct (1.1 one). The numeric IDs are the right ones (13 and 12). Nothing unusual in you dump_pe.txt, except the 'gravel' and 'sand' entities...

Please, check the mcedit.log file and see if you have:

[   DEBUG][           leveleditor.py:1196]:Loaded world is <pymclevel.leveldbpocket.PocketLeveldbWorld object at 0x6e52c10>
[   DEBUG][    pymclevel.materials.py:379]:Loading block definitions from versionned file
[    INFO][pymclevel.id_definitions.py:129]:Loading resources for MC PE
[    INFO][pymclevel.id_definitions.py:140]:Found blocks.json
[    INFO][pymclevel.id_definitions.py:149]:Loading...
[    INFO][pymclevel.id_definitions.py:196]:Done
[    INFO][pymclevel.id_definitions.py:140]:Found entities.json
[    INFO][pymclevel.id_definitions.py:149]:Loading...
[    INFO][pymclevel.id_definitions.py:196]:Done
[    INFO][pymclevel.id_definitions.py:202]:Loaded 255 defs and 730 ids
[    INFO][    pymclevel.materials.py:938]:Building Pocket materials.
[    INFO][           leveleditor.py:1240]:Loading world for version PE.

Also, check if the files in mcver/PE are the same as on the repo.

neonerz commented 7 years ago

I'm running a custom blocks.json that @bman92102 and I have been updating blocks.json.txt. I did also try it with the default blocks.json (to make sure something from that isn't messing things up), but I still had the issue.

I'm using the entities.json that is included with source.

After a bit more testing, it only seems to happen when I run mcedit from source in Linux. I don't seem to have the problem in Windows. It's also worth mentioning, it looks like mcedit.log shows it being loaded twice (not sure if this is intended or an issue)

[    INFO][pymclevel.leveldbpocket.py:735]:PE world verion found: 1.plus
[    INFO][pymclevel.id_definitions.py:129]:Loading resources for MC PE
[    INFO][pymclevel.id_definitions.py:140]:Found entities.json
[    INFO][pymclevel.id_definitions.py:149]:Loading...
[    INFO][pymclevel.id_definitions.py:196]:Done
[    INFO][pymclevel.id_definitions.py:140]:Found blocks.json
[    INFO][pymclevel.id_definitions.py:149]:Loading...
[    INFO][pymclevel.id_definitions.py:196]:Done
[    INFO][pymclevel.id_definitions.py:202]:Loaded 309 defs and 885 ids
[   DEBUG][           leveleditor.py:1196]:Loaded world is <pymclevel.leveldbpocket.PocketLeveldbWorld object at 0x7fdca288ff10>
[   DEBUG][    pymclevel.materials.py:379]:Loading block definitions from versionned file
[    INFO][pymclevel.id_definitions.py:129]:Loading resources for MC PE
[    INFO][pymclevel.id_definitions.py:140]:Found entities.json
[    INFO][pymclevel.id_definitions.py:149]:Loading...
[    INFO][pymclevel.id_definitions.py:196]:Done
[    INFO][pymclevel.id_definitions.py:140]:Found blocks.json
[    INFO][pymclevel.id_definitions.py:149]:Loading...
[    INFO][pymclevel.id_definitions.py:196]:Done
[    INFO][pymclevel.id_definitions.py:202]:Loaded 309 defs and 885 ids

Here's the full mcedit.log mcedit.log.txt

LaChal commented 7 years ago

The functions to load the definitions are called twice. Not nice, but not a bug :)

Even using you Json file, I can't reproduce that :/

neonerz commented 7 years ago

I'll rebuild my environment and see if I continue having the problem. If I do, since I'm running in VM, I could package up the VM HDD and send it to you to try, if you want.

OnlyBMan commented 7 years ago

@LaChal I also have the issue. Comes up with Sand and Gravel entities instead of Pigs and Sheep. If it helps, I am running Ubuntu 16.04 LTS on a VM

LaChal commented 7 years ago

Hmmm...

Restore the blocks.json file as it is in the repo, and see what happens.

@neonerz What is the type of the HDD, and what is its size?

neonerz commented 7 years ago

I just tried it again using the blocks.json that's in the repo (just to make sure I didn't backup that file improperly, I cloned it from git again). Still having the same issue.

I'm also using Ubuntu 16.04 (16.04.2 to be exact) LTS if that makes a difference.

The VM HDD is a VMDK, but for some reason I set it up as 120gigs. I know @bman92102 had to go AFK, but when he comes back, if his VM image isn't smaller than mine, I'll create a new one (which will be a lot smaller), re-setup the environment, confirm the issue is still happening, and link it.