Skip to content

Commit 4ed2b72

Browse files
committed
Refactor: Minecraft Module
The minecraft module is now showing icons on recent project screen CC Solution can get image ModulesManager is now static
1 parent 55dbf11 commit 4ed2b72

File tree

4 files changed

+83
-97
lines changed

4 files changed

+83
-97
lines changed

lib/cc_project_structure.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@ import 'modules_manager.dart';
1111
/* Class for storing project information */
1212
class CCSolution {
1313
final String name, desc, author, identifier, slnPath, slnFolderPath;
14-
late Image image;
14+
Image? get image{
15+
var module = ModulesManager.getModuleByIdentifier(identifier);
16+
if(module != null) {
17+
return module.icon;
18+
}
19+
}
1520
Map<String, String> folders = {};
1621
List<CCProject> projects = [];
1722

lib/main.dart

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,10 @@ void main() {
1919
runApp(MyApp());
2020
}
2121

22-
void loadSolution(CCSolution solution, BuildContext context, ModulesManager modulesManager) {
22+
void loadSolution(
23+
CCSolution solution, BuildContext context, ModulesManager modulesManager) {
2324
/// Load the project
24-
var template = modulesManager.getTemplateByIdentifier(solution.identifier);
25-
if (template != null) {
26-
solution.image = template.icon;
27-
}
25+
// var template = modulesManager.getTemplateByIdentifier(solution.identifier);
2826
Navigator.pushNamed(context, EditorPage.routeName, arguments: solution);
2927
}
3028

@@ -45,9 +43,10 @@ class RecentProjectsManager {
4543
/// Add a solution file to the list
4644
Future<CCSolution?> addSolution(String slnPath) async {
4745
var sln = await CCSolution.loadFromFile(slnPath);
48-
if(sln != null) {
46+
if (sln != null) {
4947
projects.add(sln);
5048
}
49+
return sln;
5150
}
5251
}
5352

@@ -107,7 +106,7 @@ class _HomePageState extends State<HomePage> {
107106
context: context,
108107
builder: (BuildContext context) {
109108
List<Widget> options = List.empty(growable: true);
110-
for (Module m in mm.modules) {
109+
for (Module m in ModulesManager.modules) {
111110
options.add(Text(
112111
m.name,
113112
style: TextStyle(fontSize: 21),
@@ -155,7 +154,8 @@ class _HomePageState extends State<HomePage> {
155154
child: Text("Create"),
156155
onPressed: () async {
157156
/// Go Ahead and create project asynchronously
158-
var slnPath = await t.onCreated(values); //TODO: This is prone to error (not checking if the file existed first)
157+
var slnPath = await t.onCreated(
158+
values); //TODO: This is prone to error (not checking if the file existed first)
159159

160160
/// Add it to recent projects
161161
CCSolution? project =
@@ -270,16 +270,21 @@ class _HomePageState extends State<HomePage> {
270270
setState(() {
271271
projectsWidgets.clear();
272272
for (CCSolution p in rpm.projects) {
273+
if(p.name == "") continue; // TODO: add better way to check if project is corrupt
273274
debugPrint(p.name);
274275
projectsWidgets.add(Container(
275276
constraints:
276277
const BoxConstraints(minWidth: 128.0, minHeight: 128.0),
277278
padding: const EdgeInsets.all(4.0),
278279
child: ElevatedButton(
279280
onPressed: () {
280-
loadSolution(p,context, mm);
281+
loadSolution(p, context, mm);
281282
},
282-
child: Text(p.name))));
283+
child: Column(children: [
284+
if(p.image != null)
285+
Image(image: ResizeImage.resizeIfNeeded(48, 48, p.image!.image)),
286+
Text(p.name)
287+
]))));
283288
}
284289
});
285290
}
@@ -288,7 +293,7 @@ class _HomePageState extends State<HomePage> {
288293
Widget build(BuildContext context) {
289294
final page = Center(
290295
child: Container(
291-
padding: const EdgeInsets.all(16.0),
296+
padding: const EdgeInsets.all(16.0),
292297
constraints: BoxConstraints(
293298
minHeight: MediaQuery.of(context).size.height,
294299
minWidth: double.infinity),

lib/module_minecraft.dart

Lines changed: 51 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import 'dart:convert';
2-
import 'dart:io' show Directory, File, FileMode, Platform;
2+
import 'dart:io' show Directory, File, Platform;
33
import 'package:corecoder_develop/modules_manager.dart';
44
import 'package:flutter/material.dart';
55
import 'package:uuid/uuid.dart';
@@ -19,7 +19,44 @@ class MinecraftModule extends Module {
1919
"Minecraft 1.16.0+",
2020
Image.memory(base64Decode(
2121
"iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABHNCSVQICAgIfAhkiAAAFRhJREFUeJzt3WuQnYdZ2PHnnD27q13J1sUES4nTkeUSMBdLQfVMgpuJKTC4zHQYKKYJfNE4hjCd6QU6dDqlacuHThk6UwNJybghRGGakHqICXVaZIhjJY6ISSJbii+Ka3RJJVuSY62UlbTXc963H9ZKHFsX40T7HPn5/WbskbS78zzn7OX9n3fPvhsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl9bJXuA74ff+zz8bf/rUobcsLs7d0kZ/azTxxui0b2wjrulEZ/Rib7vh9RuWa83zOvrs0dT5ExMTqfNnZ2dT51d//7v9ubf/1MlTqfOzrVm7JnX+pT7+2mgXOxEnou0cjm4c7kRv9+joil3fs2bjw//8p947v0xrXja97AVerTs+eMvrR3pj7+i28bOPP/fY1k50VnzjhZ2l/70m6gaAFC88gFwfnVgfbdzcRv9nFxbOxOPPPTb37u0/urvpxL2D/sLH/vBdu57N3vXVuOICYNuH3nrzaPR+rdsd+blol/Z3qAdgubzwgPOWbhu3dLqj/+Vdf/D3/2Ix5v/zH935xc9m7/a3ccUEwO2//0PfOzG28q6xzvg/7EQnos3eCIDqOp1Ot9cbvW0kerfd8cG3Pjg7P/8v//ifPvLl7L1eiaEPgF++e+vomWj/0+T4yl8did7Q7wtAPZ3oxOjIih/tTvZ2/8LdP3zXquj8xn9/9+7F7L0uppu9wMXc/t6brp/pdHetGr/61x38ARh2I9HrrRq/+tfPdrq7bn/vTddn73MxQxsA/+S//cCNK8bHd60cW3Wz7/EDcKXoRCdWja26ecXY+MPv/P0fvCl7nwsZygB4x/tvfPPY2ORDk2Orcn9GBwBepcnxVd89Ojrx6Xe8/8Y3Z+9yPkN3Wv1n3n/Td4+MjH5ycnTVNa/0bZq2iX6zEP2mH00ziKYdRNO20bbNJd925dz4t7Xvt+vkzNdS58/HZOr8mZmZ1PnV3/9uf+7tPzU7lTo/W3fi0l+jL6dX8vHX6XSj2+lEtzMS3e5I9Lq96HXHott5ZY+fJ0ZXXTNomz//mbu/781/+u6v5F744iWG6gzA7ffcPjLRdj6ycuyq11/qdZu2ibn+bEzPnYyvz56Is/OnY35xNhYHCzFoBq/o4A8AF9O2TQyaQSwOFmJ+cTbOzp+Or8+eiOm5kzHXn43mlTzQHLvq2hWD8T9++394+1A96B6qAGhPPPmvJieu/vGLfc+/aQcxs3gmpmenYnbhTAya/jJuCAARg6YfswtLx6KZxTPRtIMLvm4nOrFy4uq3v27987+2jCte0tAEwDvvftN3TYys/I2RzoUDaa4/G9OzJ2N+cTZaFwIAIFkbbcwvLh2b5hZnLnhsGun0YqK78j3v/MAPXrvMK17Q0ARAtCv+48TY5NXne9Gg7cf03NIjfgd+AIZNG23MLp6N03MnY9Ce/8z0xPjkqhh037PMq13QUATAL/7e3716dGTyjvOd+l8YzMXp2VMxaC58egUAhsGgGcTp2VOxMHj57wrqRCdGRyfvuP3urasTVnuZoQiAZnzy51eMrnjZr6Wb6y894cKjfgCuFG20cXZ+Oub6L/9tpytGVkyMdpufS1jrZYYiAMZGJre99NH/fH82ZhfOJG0EAN+e2YUzL4uATnSi1xnblrPRt0oPgJ++a/OakW7vR178bwuDuZhx8AfgCje7cOZl3w7odUdv+em7Nq9JWukb0gPgqlW9m0e7o994+D9o+zEz7+APwGvDzPzpb3li4Gh3tLN65ejfS1wpIoYgAMa6K95y7s/nvm/ie/4AvFac79g22ht/y0XeZFmkB0C309167s/zi7Oe7Q/Aa86gGcT84jefD9CJrjMAbbf7hoilK/zNLeZeFx4ALpe5xZlvXDGw0+lc8pL3l1t6APTa7uqIpR/5c+ofgNeqNtpv/lRAt5t+LYD0AGiiWdO0TSwszmWvAgCX1cLiXDRtE90IPwUQnc7qhcG8R/8AvOa10cbCYD6aVgBENzpjC32P/gGoYaE/F93ojGXvkR4ATdv4lb4AlDFo+tG0TfYa+QHQbxayVwCAZTUMx74hCACP/gGoZRiOfekB0LjwDwDFDMOxLz0AfP8fgGrOXRAoU3oA+OE/AKpp2vyjX3oAxBDcCQCwrIbg2NfLXuAN170hdf6RI0dS509OTqbOX7duXer8bNnv/+uuuy51fvbtz/74z5b9+Tc1NZU6P/vjL/vzL+Kx1On5ZwAAgGUnAACgIAEAAAUJAAAoSAAAQEECAAAKEgAAUJAAAICCBAAAFCQAAKAgAQAABQkAAChIAABAQQIAAAoSAABQkAAAgIIEAAAUJAAAoCABAAAFCQAAKEgAAEBBAgAAChIAAFCQAACAggQAABQkAACgIAEAAAUJAAAoSAAAQEECAAAKEgAAUFAve4GpqanU+ZOTk6nz161blzo/+/7P1v1oP3X+jf/1htT5N9zfSZ2//yfb1PnZjhw5kjr/uuuuS50/9wfTqfPjX+eOz+YMAAAUJAAAoCABAAAFCQAAKEgAAEBBAgAAChIAAFCQAACAggQAABQkAACgIAEAAAUJAAAoSAAAQEECAAAKEgAAUJAAAICCBAAAFCQAAKAgAQAABQkAAChIAABAQQIAAAoSAABQkAAAgIIEAAAUJAAAoCABAAAFCQAAKEgAAEBBAgAAChIAAFBQL3uBdevWpc5/9rcPpc4/8gszqfO7H+2nzs+2cf3a1PkLHz6QOv/J2JQ6f8v61PHxl1/6TOr8O6Y2p87/w9ibOn9T8uffgSNHUudncwYAAAoSAABQkAAAgIIEAAAUJAAAoCABAAAFCQAAKEgAAEBBAgAAChIAAFCQAACAggQAABQkAACgIAEAAAUJAAAoSAAAQEECAAAKEgAAUJAAAICCBAAAFCQAAKAgAQAABQkAAChIAABAQQIAAAoSAABQkAAAgIIEAAAUJAAAoCABAAAFCQAAKKiXvcCzv30odf7G9WtT5x/66MnU+dmy7/9sN2xYlzs/TqXO3//hqdT5m45flTp//7W5t/+O2Jw6f/ux3anz75jamjr/nng8db4zAABQkAAAgIIEAAAUJAAAoCABAAAFCQAAKEgAAEBBAgAAChIAAFCQAACAggQAABQkAACgIAEAAAUJAAAoSAAAQEECAAAKEgAAUJAAAICCBAAAFCQAAKAgAQAABQkAAChIAABAQQIAAAoSAABQkAAAgIIEAAAUJAAAoCABAAAFCQAAKEgAAEBBvewF3rb5+tT5h4+fSp1f/fZnu3XLptT5O/ccSJ2fffsf2nswdf7G9WtT52ff/hs2rEudn33/Z3/+ZXMGAAAKEgAAUJAAAICCBAAAFCQAAKAgAQAABQkAAChIAABAQQIAAAoSAABQkAAAgIIEAAAUJAAAoCABAAAFCQAAKEgAAEBBAgAAChIAAFCQAACAggQAABQkAACgIAEAAAUJAAAoSAAAQEECAAAKEgAAUJAAAICCBAAAFCQAAKAgAQAABQkAACiol71Atlu3bEqdv3PPgdT5p6/94dT5J/Y+kDr/vqNrUuefOHYydX72xx+59h+dSp1/KPnjf9ttW1Pn/9affD51vjMAAFCQAACAggQAABQkAACgIAEAAAUJAAAoSAAAQEECAAAKEgAAUJAAAICCBAAAFCQAAKAgAQAABQkAAChIAABAQQIAAAoSAABQkAAAgIIEAAAUJAAAoCABAAAFCQAAKEgAAEBBAgAAChIAAFCQAACAggQAABQkAACgIAEAAAUJAAAoSAAAQEG97AVu2LAudf7+o1Op8w8dO5k6f9uWU6nz98f1qfMPH38kdf73b86+/bnv/43r16bOv3XLptT5O/ccSJ2f/fU3++PvvqNrUudncwYAAAoSAABQkAAAgIIEAAAUJAAAoCABAAAFCQAAKEgAAEBBAgAAChIAAFCQAACAggQAABQkAACgIAEAAAUJAAAoSAAAQEECAAAKEgAAUJAAAICCBAAAFCQAAKAgAQAABQkAAChIAABAQQIAAAoSAABQkAAAgIIEAAAUJAAAoCABAAAFCQAAKKiXvcD2HbtT51+z+cdS50ccTJ2+c8+B1PmHjp1Mnb9x/drU+Q/tzX3/Z8u+/7O98do1qfOzv/5uu21r6vztOx5InZ/NGQAAKEgAAEBBAgAAChIAAFCQAACAggQAABQkAACgIAEAAAUJAAAoSAAAQEECAAAKEgAAUJAAAICCBAAAFCQAAKAgAQAABQkAAChIAABAQQIAAAoSAABQkAAAgIIEAAAUJAAAoCABAAAFCQAAKEgAAEBBAgAAChIAAFCQAACAggQAABQkAACgoF72Am/bfH3q/MPHH0md//3pt/9U6vyN69emzr91y6bU+Tv3HEidn337t+/YnTo/W/bn37bbtqbOz37/Zx9/Pva5r6TOdwYAAAoSAABQkAAAgIIEAAAUJAAAoCABAAAFCQAAKEgAAEBBAgAAChIAAFCQAACAggQAABQkAACgIAEAAAUJAAAoSAAAQEECAAAKEgAAUJAAAICCBAAAFCQAAKAgAQAABQkAAChIAABAQQIAAAoSAABQkAAAgIIEAAAUJAAAoCABAAAFCQAAKKiXvcBDew+mzt+4fm3q/Bs2rEudn33/X7P5x1Lnb9/xQOr8bbdtTZ2//+hU6vxs23fsTp3v/Z8r++tvNmcAAKAgAQAABQkAAChIAABAQQIAAAoSAABQkAAAgIIEAAAUJAAAoCABAAAFCQAAKEgAAEBBAgAAChIAAFCQAACAggQAABQkAACgIAEAAAUJAAAoSAAAQEECAAAKEgAAUJAAAICCBAAAFCQAAKAgAQAABQkAAChIAABAQQIAAAoSAABQkAAAgIJ62Qu8bfP1qfMPHz+VOn//0anU+RvXr02dH8cfSR3/j27bmjo/+/3/0N6DqfO3Jd//O/ccSJ2/fcfu1PnZ93/219/7jq5JnZ/NGQAAKEgAAEBBAgAAChIAAFCQAACAggQAABQkAACgIAEAAAUJAAAoSAAAQEECAAAKEgAAUJAAAICCBAAAFCQAAKAgAQAABQkAAChIAABAQQIAAAoSAABQkAAAgIIEAAAUJAAAoCABAAAFCQAAKEgAAEBBAgAAChIAAFCQAACAggQAABQkAACgoF72AjdsWJc6/6G9B1Pnv/HaNanzs926ZVPq/P1Hp1LnV7dzz4HU+dkff9t37E6dn33/Z7vq+CPZK6RyBgAAChIAAFCQAACAggQAABQkAACgIAEAAAUJAAAoSAAAQEECAAAKEgAAUJAAAICCBAAAFCQAAKAgAQAABQkAAChIAABAQQIAAAoSAABQkAAAgIIEAAAUJAAAoCABAAAFCQAAKEgAAEBBAgAAChIAAFCQAACAggQAABQkAACgIAEAAAUJAAAoqJe9wP6jU6nzN65fmzr/ob0HU+dn3/5sT8am1Pkn9j6QOj/7/X/o2MnU+dmq3//Zt//WLbmf/7/1J59Pne8MAAAUJAAAoCABAAAFCQAAKEgAAEBBAgAAChIAAFBQegA0bbuQvQMALKembeazd0gPgLZtTmfvAADLaTCI9GNfegA0g3Y6ewcAWE5tm3/syw+AJr+CAGA5LfT7Z7J3SA+Ahab/tewdAGA5LTZt+rEvPQCmT889mb0DACynE9OzT2TvkB4Az5w8uy97BwBYTv/v2NfTj33pAfC5fc/si7Zts/cAgOXRtvd/6W++kr1FegDsf+bE9Nzi4qPZewDAcjg7039071eP+ymAiBg887Uz/zt7CQBYDge/dvKTETHI3mMoAuBPH37iU23TzGUvAgCXU9M289v/8tFPhwCIiIj5g8fOnD1xeu7PshcBgMvp2MmZTzx+6PkzEeFSwBExFxFxz4OP3z1o8q+MBACXQ79tTr//k1/8wAt/TT/rPQwBcDYi4olnTkw/e2J6e/IuAHBZHDr29Q998f8+e+qFv7oSYMQ3LwX8u/d+4X/MzC78deYyAPCddmZ2/kv/9u6/+MiL/in9MvjDEACLETETETHb7zcfefCx9wwGg+eSdwKA74jFfvP8++770r+b7vfPPfHvbET0M3eKGI4AiIg4ce4Pew4+N7Xzsa/+ar8dnLrYGwDAsBsMmlOf+Py+f7Hzy4eef9E/T6Ut9CLDEgBTEdGc+8u9u556asdfP/1LgyH4ZQkA8Gr0+4Op//nZJ3/lg/fveepF/9yEAPgW/Yh4cR3Fn+8+ePDju5541+xC//GknQDgVZlZWHz8Azse3fZHD+z9m5e86PkYgtP/EcMTABERx+NFZwEiIj7z5cPP/uaHHrzzuZNnt0eTf9EEALiYJtrBkeent9951713/tnDTz37shdHHMvY63yGKQAW4jx3zOl+v/+bH/3s+/7Xw0/9/PTMwqcS9gKAS5qeXfjCxx584hfv/J373jd1un++R/lHY+mJ70Ohl73ASxyLiLURMfHSF9z/6IGv3v/ogX/zj3/kxhu3vmn9O1dPrPjJ6MbI8q8IAC9oo5memdu1a9/hD//uJ76w5yKvORtLZ7qHxrAFQBsRByLi+yLOf3D/+F/t2/fxv9r377d8z4bf+YnNG3/8datX/oOJ8d4PdTud8WXdFICSmraZn5lbfOyZE2c+fe/nnvjUZx4/fKkn9TWxdGxrl2G9V2zYAiBi6fKIX42ITRd7pT1PH53a8/TReyLinqt6vd5PvfVNN16/YfVNqydW/EBvtLt+fHR0Q6cba7vRGcbbCMCQa5umP4j25Nx8/+hcvz128vTME/sOP//lj+18dN8FTvFfyKEYgkv/vlQne4GLeF1E/J3sJQDg23A4Ioby4nbD/D30mVj6UYnV2YsAwKtwJIb04B8x3AEQsRQBc7EUAcN8tgIAzmki4mC85Po2w2bYAyBiKQBORcRVETGavAsAXMxsRDwdQ/Db/i7lSnpU3Yml5wW8IYbr+gUA0MTSj/kdjSF7tv+FXEkBcM5YRFwbEd8VQgCAXE0sneo/FkN0kZ9X4koMgHN6EbHuhf9WJu8CQC1nY+mX+kzFkFzb/2/rSg6AFxuNpecIrIyIFbF0lmA0ls4QvFZuIwDLq42IQSwd4Bdi6TlpZyLidFyhB30AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALhS/H/lOMGHLM3TqwAAAABJRU5ErkJggg==")),
22-
"com.corecoder.mcbedrock");
22+
"com.hanprogramer.ccminecraft");
23+
24+
Future<void> createSolution(String filepath, Map<String, dynamic> args, {String? bpPath, String? rpPath}) async {
25+
/// ---------------------------
26+
/// Create .ccsln.json file
27+
/// ---------------------------
28+
var obj = {
29+
"cc_version": "0.0.1",
30+
"name": args["Name"],
31+
"author": args["Author"],
32+
"description": args["Desc"],
33+
"identifier": identifier,
34+
// must be unique to every module
35+
"folders": {
36+
},
37+
"run_config": [
38+
{
39+
"type": "launch",
40+
"android": "com.mojang.minecraftpe",
41+
"windows": "undefined", //TODO: add windows 10 launch
42+
"args": []
43+
}
44+
]
45+
};
46+
// Add folders conditionally
47+
if(bpPath != null) {
48+
obj["folders"]["Behavior Pack"] ??= bpPath.replaceAll(comMojang, "");
49+
}
50+
if(rpPath != null) {
51+
obj["folders"]["Resource Pack"] ??= rpPath.replaceAll(comMojang, "");
52+
}
53+
54+
55+
// Write the file asynchronously
56+
var slnFile = File(filepath);
57+
await slnFile.create(recursive: true);
58+
await slnFile.writeAsString(encoder.convert(obj));
59+
}
2360

2461
@override
2562
void onInitialized(ModulesManager tm) {
@@ -43,7 +80,7 @@ class MinecraftModule extends Module {
4380
// OnCreated
4481

4582
// Create the BP first
46-
Uuid uuid = Uuid();
83+
Uuid uuid = const Uuid();
4784
var bpUuid = uuid.v4();
4885
var bpPath = comMojang +
4986
"development_behavior_packs" +
@@ -133,34 +170,10 @@ class MinecraftModule extends Module {
133170
}
134171

135172
// -- Create RP END
136-
/// ---------------------------
137173
/// Create .ccsln.json file
138-
/// ---------------------------
139-
var obj = encoder.convert({
140-
"cc_version": "0.0.1",
141-
"name": args["Name"],
142-
"author": args["Author"],
143-
"description": args["Desc"],
144-
"identifier": "com.hanprogramer.ccminecraft.addon",
145-
// must be unique to every module
146-
"folders": {
147-
"Behavior Pack": bpPath.replaceAll(comMojang, ""),
148-
"Resource Pack": rpPath.replaceAll(comMojang, ""),
149-
},
150-
"run_config": [
151-
{
152-
"type": "launch",
153-
"android": "com.mojang.minecraftpe",
154-
"windows": "undefined", //TODO: add windows 10 launch
155-
"args": []
156-
}
157-
]
158-
});
159-
var slnFile = File(
160-
comMojang + Platform.pathSeparator + args["Name"] + ".ccsln.json");
161-
await slnFile.create(recursive: true);
162-
await slnFile.writeAsString(obj);
163-
return slnFile.path;
174+
var slnFilePath = comMojang + Platform.pathSeparator + args["Name"] + ".ccsln.json";
175+
await createSolution(slnFilePath, args, bpPath: bpPath, rpPath: rpPath);
176+
return slnFilePath;
164177
}, icon, "com.hanprogramer.ccminecraft.addon");
165178

166179
/// -------------------------
@@ -176,7 +189,7 @@ class MinecraftModule extends Module {
176189
// OnCreated
177190

178191
// Create the BP first
179-
Uuid uuid = Uuid();
192+
Uuid uuid = const Uuid();
180193
var bpUuid = uuid.v4();
181194
var bpPath = comMojang +
182195
"development_behavior_packs" +
@@ -221,33 +234,10 @@ class MinecraftModule extends Module {
221234
}
222235
// -- Create BP END
223236

224-
/// ---------------------------
225237
/// Create .ccsln.json file
226-
/// ---------------------------
227-
var obj = encoder.convert({
228-
"cc_version": "0.0.1",
229-
"name": args["Name"],
230-
"author": args["Author"],
231-
"description": args["Desc"],
232-
"identifier": "com.hanprogramer.ccminecraft.bp",
233-
// must be unique to every module
234-
"folders": {
235-
"Behavior Pack": bpPath.replaceAll(comMojang, ""),
236-
},
237-
"run_config": [
238-
{
239-
"type": "launch",
240-
"android": "com.mojang.minecraftpe",
241-
"windows": "undefined", //TODO: add windows 10 launch
242-
"args": []
243-
}
244-
]
245-
});
246-
var slnFile = File(
247-
comMojang + Platform.pathSeparator + args["Name"] + ".ccsln.json");
248-
await slnFile.create(recursive: true);
249-
await slnFile.writeAsString(obj);
250-
return slnFile.path;
238+
var slnFilePath = comMojang + Platform.pathSeparator + args["Name"] + ".ccsln.json";
239+
await createSolution(slnFilePath, args, bpPath: bpPath);
240+
return slnFilePath;
251241
}, icon, "com.hanprogramer.ccminecraft.bp");
252242

253243
/// -------------------------
@@ -261,7 +251,7 @@ class MinecraftModule extends Module {
261251
"Author": "String"
262252
}, (Map<String, dynamic> args) async {
263253
// OnCreated
264-
Uuid uuid = Uuid();
254+
Uuid uuid = const Uuid();
265255
// Create the RP first
266256
var rpUuid = uuid.v4();
267257
var rpPath = comMojang +
@@ -307,33 +297,10 @@ class MinecraftModule extends Module {
307297
}
308298

309299
// -- Create RP END
310-
/// ---------------------------
311300
/// Create .ccsln.json file
312-
/// ---------------------------
313-
var obj = encoder.convert({
314-
"cc_version": "0.0.1",
315-
"name": args["Name"],
316-
"author": args["Author"],
317-
"description": args["Desc"],
318-
"identifier": "com.hanprogramer.ccminecraft.rp",
319-
// must be unique to every
320-
"folders": {
321-
"Resource Pack": rpPath.replaceAll(comMojang, ""),
322-
},
323-
"run_config": [
324-
{
325-
"type": "launch",
326-
"android": "com.mojang.minecraftpe",
327-
"windows": "undefined", //TODO: add windows 10 launch
328-
"args": []
329-
}
330-
]
331-
});
332-
var slnFile = File(
333-
comMojang + Platform.pathSeparator + args["Name"] + ".ccsln.json");
334-
await slnFile.create(recursive: true);
335-
await slnFile.writeAsString(obj);
336-
return slnFile.path;
301+
var slnFilePath = comMojang + Platform.pathSeparator + args["Name"] + ".ccsln.json";
302+
await createSolution(slnFilePath, args, rpPath: rpPath);
303+
return slnFilePath;
337304
}, icon, "com.hanprogramer.ccminecraft.rp");
338305
templates.add(addonTemplate);
339306
templates.add(bpTemplate);

lib/modules_manager.dart

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:corecoder_develop/module_minecraft.dart';
22
import 'package:flutter/material.dart';
33
class ModulesManager{
4-
List<Module> modules = List.empty(growable: true);
4+
static List<Module> modules = List.empty(growable: true);
55

66
void initialize() {
77
for (Module m in modules) {
@@ -14,6 +14,15 @@ class ModulesManager{
1414
initialize();
1515
}
1616

17+
static Module? getModuleByIdentifier(String id){
18+
for(var m in modules){
19+
if(m.identifier == id){
20+
return m;
21+
}
22+
}
23+
return null;
24+
}
25+
1726
Template? getTemplateByIdentifier(String templateID) {
1827
for (var module in modules) {
1928
for (var template in module.templates) {

0 commit comments

Comments
 (0)