diff --git a/README.md b/README.md
index de81fa2e..1212ab7d 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
## Table of Contents
- [Background](#Background)
- [Change Log](#Change-Log)
-- [Install](#Install)
+- [Build](#Build)
- [Usage](#Usage)
- [Preview](#Preview)
- [Known Issues](#Known-Issues)
@@ -19,8 +19,36 @@
## Change Log
+### v0.1.2
+- Fix reediting keys caused a crash while repairing virtual keyboard configurations
+- Fix some control behavior exceptions in Boat-3 mode
+- Add a new downloader to provide visual download progress feedback
+- Add the Minecraft Json Parsing Tool Library
+- Add multilingual support (preliminary)
+- Add Forge and LiteLoader support (see documentation)
+### v0.1.1
+- Fix crashes caused by asynchronous message manager refresh when memory is empty
+- Fix crashes caused by null values when adding custom keys
+- Fix downloader to duplicate download of existing files
+- Fix invalid custom keys with primary key value of mouse in boat-3 mode
+- Fix Gallery crash caused by Android media scanning minecraft folder
+- Change custom key dialog action button set top
+- Add drag to change position when adding custom keys
+- Add a status indicator to increase the limit on memory size settings
+- Remove temporary removal of integration package import function entry
+- Remove more options for temporarily removing Toolbar
### v0.1.0
- First Release Version.
+
+Chinese Translation:
+
+### v0.1.2
+- 修复 虚拟键盘配置时重新编辑键导致的崩溃
+- 修正 Boat-3模式中的一些控制行为异常
+- 添加 新的下载程序以提供可视化的下载进度反馈
+- 添加 Minecraft Json解析工具库
+- 添加 多语言支持(初步)
+- 添加 Forge和LiteLoader支持(请参阅文档)
### v0.1.1
- 修复 内存为空时因异步消息管理器刷新而引发的崩溃
- 修复 添加自定义按键时一些值为空引发的崩溃
@@ -32,8 +60,10 @@
- 添加 状态指示器增加对内存大小设置的限制
- 移除 暂时移除整合包导入功能入口
- 移除 暂时移除Toolbar 更多选项
+### v0.1.0
+-第一个发行版本
-## Install
+## Build
### Environment
- Android Studio
@@ -52,8 +82,41 @@
#### You can also get released apk from [here]().
## Usage
+
+### Install
+1. Download the lastest APK and runtime pack to your Android phone.
+2. Install APK and start it at least one time.
+3. Copy the runtime to ```/sdcard/Android/data/com.aof.mcinabox/files/MCinaBox/runtimepack/```
+4. Then start APK and find ```Launcher Set``` to import the runtime pack.
+### Play
+1. Before you start the game, you need to configure the starter according to the instructions in the software. Until the indicator changes from red to blue.
+2. What you need to do includes creating users, modifying the maximum memory, downloading game versions, and creating your own virtual keyboard templates.
+### Forge
+In theory, forge is supported, but we need to make some changes to start it.
+1. Copy an installed version of forge from your computer to ```/sdcard/mcinabox/.minecraft/```, including ```libraries``` and ```versions```
+2. Launch it in MCinaBox at least one time. (As a result, it can't be started)
+3. Edit ```/sdcard/MCinaBox/.minecraft/config/splash.properties``` to change ```enabled=true``` to ```enabled=false``` to close forge loading animation.
+4. Try to launch forge again.It's going to be black for a while, but it's usually useful
+### Matters needing attention
+1. Mipmap will cause rendering problems. Please turn it off in Minecraft ```settings - video settings - mipmap=0```
+
## Preview
+
## Known Issues
+
+### Launcher
+1. Asynchronous message manager at risk of crashing
+2. Language options can not be reloaded well
+3. Unable to request more memory from the system, the upper limit is determined by the system
+4. Sometimes the downloader gets stuck at 99%. It can be solved by canceling and retrying
+
+### Launch Minecraft
+1. Forge's loading animation will cause a crash
+2. It seems that there will be an X11 error when starting the Minecraft version below 1.6
+3. Unable to initialize Minecraft 1.13.x
+4. Minecraft 1.14.X ~ 1.15.X has rendering problems
+5. Too fast key input may cause lwjgl to crash
+
## Maintainers
[@longjunyu2](https://github.com/longjunyu2)
@@ -71,6 +134,10 @@ Chinese Translation:
## Contribution
This project exists thanks to all the people who contribute.
+### List of contributors:
+- wjyue2001 provides Japanese translation
+- MCredbear provides new English translation.(will be used)
+
If you want to submit a pull request, there're some requirements:
* IDE: Android Studio
* TargetSDK: 28
diff --git a/boat/src/main/java/cosine/boat/LauncherActivity.java b/boat/src/main/java/cosine/boat/LauncherActivity.java
index bacda14a..664d9f9b 100644
--- a/boat/src/main/java/cosine/boat/LauncherActivity.java
+++ b/boat/src/main/java/cosine/boat/LauncherActivity.java
@@ -24,8 +24,8 @@ public void onCreate(Bundle savedInstance) {
//初始化日志
//【release版暂时不开启】
- final String logPath = BOAT_HOME + "/log.txt";
- Logcat.initializeOutOfProcess(this, logPath, LogcatService.class);
+ //final String logPath = BOAT_HOME + "/log.txt";
+ //Logcat.initializeOutOfProcess(this, logPath, LogcatService.class);
final String reportPath = BOAT_HOME + "/crash.txt";
diff --git a/mcinabox/build.gradle b/mcinabox/build.gradle
index 6869abea..b7903699 100644
--- a/mcinabox/build.gradle
+++ b/mcinabox/build.gradle
@@ -12,7 +12,7 @@ android {
applicationId "com.aof.mcinabox"
minSdkVersion 21
targetSdkVersion 21
- versionCode 1
+ versionCode 3
versionName '0.1.2'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
diff --git a/mcinabox/src/main/java/com/aof/mcinabox/launcher/user/UserListAdapter.java b/mcinabox/src/main/java/com/aof/mcinabox/launcher/user/UserListAdapter.java
index 197339ac..736aa8b2 100644
--- a/mcinabox/src/main/java/com/aof/mcinabox/launcher/user/UserListAdapter.java
+++ b/mcinabox/src/main/java/com/aof/mcinabox/launcher/user/UserListAdapter.java
@@ -76,11 +76,11 @@ public View getView(final int position, View convertView, ViewGroup parent) {
}
viewHolder.username.setText(userlist.get(position).getUser_name());
if(userlist.get(position).getUser_model().equals("offline")){
- viewHolder.userstate.setText("离线模式");
+ viewHolder.userstate.setText(viewHolder.context.getString(R.string.title_offline));
}else if(userlist.get(position).getUser_model().equals("online")){
- viewHolder.userstate.setText("在线模式");
+ viewHolder.userstate.setText(viewHolder.context.getString(R.string.title_online));
}else{
- viewHolder.userstate.setText("无法解析");
+ viewHolder.userstate.setText(viewHolder.context.getString(R.string.title_unknown));
}
viewHolder.removeuser.setOnClickListener(new View.OnClickListener() {
@Override
@@ -92,11 +92,11 @@ public void onClick(View v) {
// 设置Title的图标
//builder.setIcon(R.drawable.ic_launcher);
// 设置Title的内容
- builder.setTitle("警告");
+ builder.setTitle(viewHolder.context.getString(R.string.title_warn));
// 设置Content来显示一个信息
- builder.setMessage("您确定要删除这个用户吗?");
+ builder.setMessage(viewHolder.context.getString(R.string.tips_user_remove_warning));
// 设置一个PositiveButton
- builder.setPositiveButton("确定", new DialogInterface.OnClickListener()
+ builder.setPositiveButton(viewHolder.context.getString(R.string.tips_ok), new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
@@ -106,7 +106,7 @@ public void onClick(DialogInterface dialog, int which)
}
});
// 设置一个NegativeButton
- builder.setNegativeButton("取消", new DialogInterface.OnClickListener()
+ builder.setNegativeButton(viewHolder.context.getString(R.string.tips_no), new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
diff --git a/mcinabox/src/main/res/drawable/bookshelf.png b/mcinabox/src/main/res/drawable/bookshelf.png
index 326c7b80..a2a6c688 100644
Binary files a/mcinabox/src/main/res/drawable/bookshelf.png and b/mcinabox/src/main/res/drawable/bookshelf.png differ
diff --git a/mcinabox/src/main/res/drawable/command.png b/mcinabox/src/main/res/drawable/command.png
index e94db403..27ad5e41 100644
Binary files a/mcinabox/src/main/res/drawable/command.png and b/mcinabox/src/main/res/drawable/command.png differ
diff --git a/mcinabox/src/main/res/drawable/craft_table.png b/mcinabox/src/main/res/drawable/craft_table.png
index 8d0e5633..8638adf7 100644
Binary files a/mcinabox/src/main/res/drawable/craft_table.png and b/mcinabox/src/main/res/drawable/craft_table.png differ
diff --git a/mcinabox/src/main/res/drawable/furnace.png b/mcinabox/src/main/res/drawable/furnace.png
index 73a55322..d0c346f3 100644
Binary files a/mcinabox/src/main/res/drawable/furnace.png and b/mcinabox/src/main/res/drawable/furnace.png differ
diff --git a/mcinabox/src/main/res/drawable/grass.png b/mcinabox/src/main/res/drawable/grass.png
index b4dce874..08709454 100644
Binary files a/mcinabox/src/main/res/drawable/grass.png and b/mcinabox/src/main/res/drawable/grass.png differ
diff --git a/mcinabox/src/main/res/drawable/steve_pic.bmp b/mcinabox/src/main/res/drawable/steve_pic.bmp
index 4cb522a9..600a435f 100644
Binary files a/mcinabox/src/main/res/drawable/steve_pic.bmp and b/mcinabox/src/main/res/drawable/steve_pic.bmp differ
diff --git a/mcinabox/src/main/res/layout/activity_main.xml b/mcinabox/src/main/res/layout/activity_main.xml
index 9b6cee57..af55fb50 100644
--- a/mcinabox/src/main/res/layout/activity_main.xml
+++ b/mcinabox/src/main/res/layout/activity_main.xml
@@ -83,8 +83,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="40dp"
- android:paddingLeft="30dp"
- android:paddingRight="20dp"
+ android:paddingLeft="20dp"
+ android:paddingRight="0dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:background="@drawable/background_layout_startgame"
@@ -93,7 +93,7 @@
app:layout_constraintEnd_toEndOf="parent">
@@ -174,9 +174,9 @@
android:layout_height="wrap_content"
android:background="@drawable/layout_button_background"
android:drawableStart="@drawable/steve_pic_2"
- android:drawablePadding="6dp"
+ android:drawablePadding="5dp"
android:gravity="center_vertical"
- android:paddingStart="15dp"
+ android:paddingStart="10dp"
android:paddingEnd="0dp"
android:text="@string/title_user" />
diff --git a/mcinabox/src/main/res/layout/dialog_configkey.xml b/mcinabox/src/main/res/layout/dialog_configkey.xml
index 77078776..3d879844 100644
--- a/mcinabox/src/main/res/layout/dialog_configkey.xml
+++ b/mcinabox/src/main/res/layout/dialog_configkey.xml
@@ -359,7 +359,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
- android:layout_marginBottom="2dp"
+ android:layout_marginBottom="5dp"
android:orientation="horizontal">