BTE Mover is a java application that moves/copies 2d/3d regions from a Minecraft Terra++ World (Default BTE preset) to another Minecraft Terra++ World. The regions to be moved get selected based on the ESRI Shapefile, that the user imports. It's meant to be used on a world save which files can be accessed though ftp or through the local storage system. In addition to ftp, the application also works with sftp, ftps and ftpes.
- Preview to be transferred/shared regions
- View map of built regions on server
- Transfer regions
- Delete regions
- Export map to image
- Support for ftp/file protocol
- Support for OpenSSH key-files (private key)
You can either download the jar file from the latest release, or you can build the project yourself. You can read more about that here.
To open the application you must have Java JRE installed.
It's recommend to run the application with the command java -jar bte-mover-1.3-20.jar
inside a terminal (ex. command line), from the folder
where the .jar file is located. This way, if any exceptions occur, they will be printed out to the terminal.
As the application need's an input shapefile to work, you must either acquire one or create one inside a gis tool, such as QGIS.
It's recommended that the shapefile uses the WGS84 projection, but it can use other projections defined in the EPSG database. For example, you can search online for <country name> shapefile
and you will find a suitable shapefile to use.
Once you've acquired such a shapefile, you can import it with the Import
button.
To transfer region you must set up the source and target region, which you can do that by using the Source FTP
and Target FTP
buttons respectively.
If you wish to only view a map of built regions on the source server only set the Source FTP options.
To add a ftp/fpts/ftpes
server you must specify the server text field. Make sure It's in the following format:
(ftp|ftps|ftpes)://hostname:port(/path)
The first round brackets group specify the chosen protocol to use (one of the three). The hostname is the IP address or the domain of the server. The port is the port of the server (ex. 21 for FTP). The second round brackets is optional, and represents the path to the world save on the server. It's extremely important that the url doesn't end with a /
.
Ex. ftp://192.168.0.26:2121/saves/BTECelje
The username and password text fields are self-explanatory.
To add a sftp
server you must specify the server text field. Make sure It's in the following format:
sftp://hostname:port(/path)
The hostname is the IP address or the domain of the server. The port is the port of the server (ex. 22 for SFTP). The second round brackets is optional, and represents the path to the world save on the server. It's extremely important that the url doesn't end with a /
.
Ex. sftp://192.168.0.26:22/saves/BTECelje
The username and password text fields are self-explanatory.
You can also add a key-file with a private key, but It's important that It's in the OpenSHH format.
In case you are using a private key in another format, like Putty Private Key File (.ppt file) you can use PuTTYgen to convert it to the OpenSSH format.
To enable the function to add the key-file you must first input a fully correct url syntax in the server text field.
If you want to add a local source (a world saved on the local storage system) use the following syntax:
file://path-to-world-save
Example of such url would be file://C:\Users\david\AppData\Roaming\.minecraft\saves\BTE Celje
or file://C:/Users/david/AppData/Roaming/.minecraft/saves/BTE Celje
)
It's important that the url doesn't end with /
or a with a backslash.
If the entered information is correct you can test the connection by pressing on the Test
button. If the dialog icon changes to a check mark, the source is a valid one, but if the changes to an X
, the entered information isn't correct, or the client can't establish a connection.
Pressing the OK
button performs the same connection test and closes the dialog if the connection was a success.
If an error occurs during adding a sftp server, make sure to check if your sftp server supports the KEY, Cipher, or MAC algorithms, and host key types that the JSch library supports. BTE Mover uses the mwiede Fork of JSch-0.1.55 of the original JSch, so make sure to take a look at the list of supported algorithms of JSch, which you can find here, and the supported algorithms of your sftp server. If you've opened BTE Mover through the terminal you can find the list of supported algorithms that your server uses there. Ex. :
INFO: kex: server: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1
INFO: kex: server: ssh-ed25519
INFO: kex: server: aes128-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr
INFO: kex: server: aes128-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr
INFO: kex: server: hmac-sha2-256-etm@openssh.com,hmac-sha2-256,hmac-sha1,hmac-sha1-96
INFO: kex: server: hmac-sha2-256-etm@openssh.com,hmac-sha2-256,hmac-sha1,hmac-sha1-96
The first line is the Key
algorithms, the second line the Host
key type of the server, the third line is the Cipher
algorithms the server supports,
and the fifth line is the MAC
algorithms the server supports. Make sure to compare them to the list of the algorithms that JSch supports, which you can find here.
The application uses the LIST command via the FTP protocol to get the list of regions, ex. the region name and size. If your FTP server doesn't properly support this command (it uses an unknown list format that can't be parsed), the application switches to the LEGACY mode. In this mode, the application only gets a list of region names from the FTP server. This means that 3d regions that are less than 16384 bytes big get will also get included in the preview process, and only get skipped in the transfer process. This means, that the application first has to download the 3d region, and if It's size is less than 16384 bytes big, it gets skipped. This greatly increases the transfer process time, so It's advisable to first check if your FTP Server support's the LIST response formats listed here.
If your FTP Server doesn't support any of the LIST response formats listed here, the application will still work, but like mentioned it will switch to LEGACY mode, greatly increasing the transfer time.
Next, to preview the regions to be transferred, the source/target regions, and the shared regions (regions that are on both the source and target server), we press the Preview
button.
As spinner shows to indicate that the process is running
If any error occurs during this process a message dialog gets displayed with the cause of the error, and an option to view the log (By pressing the Show log
button).
Once the process finishes, and the spinner hides, that map displays the aforementioned region and automatically zoom's to the to be transferred regions, if it found any.
The map enables you to zoom and pan around with a mouse. You can also right-click to copy the geographic coordinates. On the right side of the map is also a toolbar that enables you to export the current view to an image (the Save icon
, this also creates an auxiliary file, so the exported image becomes geo-referenced and can be open in a GIS Software), display the OSM
layer, automatically zoom back to the regions, and toggle the shapefile's layer visibility.
Under the map we can also find the legend, that indicates each region type, with the count of regions in that type. Hovering over the label of each type shows the total amount of 3D regions for that type. Clicking on the count toggle's the layer's visibility.
On the right side we can also see the query list, that show's which regions will get transferred. The first number shows the number 3d regions in the region, following with the name of the region itself.
To transfer the marked regions, press the Transfer
button. During this process the region 2d files content, and it's region 3d files content get downloaded to the memory and immediately the content of each file gets uploaded to the target server remote 2d/3d region file.
If the 3d region contains only air (16384 bytes large or less) it gets skipped.
While this is happening in the two background threads, the aforementioned query list gets constantly updated. The icon on the right side indicates the status of the region (download/upload/done), while the number of 3d region is count down to 0 for each processed region 3d file.
After each region's gets processed the map, and the legend also get updated.
The application also displays an estimated time remain on the number of 2d/3d region processed on the bottom right. If for any reason, the transfer fails for a region, it's status in the query list gets changed to an X.
If for any reason an error occurs during the transfers, the whole process stops, and a message notify the user to check the logs, displays.
Once the transfer process finishes, the application display's on the bottom how long it took to transfer the files.
To delete regions, only import the shapefile, set the source server and press Preview
. If any regions intersect with the shapefile, they will be added to the queue, and the delete button will be enabled.
Afterwards, press the Delete
button to delete the regions from the source server
- To avoid problems, it's recommended to use a shapefile with a single feature and not multiple ones
- If you zoom out a lot have the OSM layer toggled on and specify a big resolution for the exported image, ex 8192, the OSM layer won't get rendered, due to the 128 tiles limit.
The application is 99% finished, therefore the only thing that I intend to improve a bit is the look of the UI, like the scroller, more detailed notifying of errors back to the user and small improvements.
You can contact me on Discord, under davixdevelop
Hi, I'm David, a computer technician based in Celje, Slovenia. Duo to various reason, like depression and mental health problems for the last 4 years of my life, I had to drop out of university, and I'm yet to find a job at 25. If you found my projects or help usefully, I would appreciate any amount donation.