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">