diff --git a/src/main/java/com/mrcrayfish/device/MrCrayfishDeviceMod.java b/src/main/java/com/mrcrayfish/device/MrCrayfishDeviceMod.java
index 9c0ee3ecf..70f8939fa 100644
--- a/src/main/java/com/mrcrayfish/device/MrCrayfishDeviceMod.java
+++ b/src/main/java/com/mrcrayfish/device/MrCrayfishDeviceMod.java
@@ -1,6 +1,8 @@
package com.mrcrayfish.device;
import com.mrcrayfish.device.api.ApplicationManager;
+import com.mrcrayfish.device.api.registry.DeviceModRegistry;
+import com.mrcrayfish.device.api.registry.app.ApplicationRegistry;
import com.mrcrayfish.device.api.print.PrintingManager;
import com.mrcrayfish.device.api.task.TaskManager;
import com.mrcrayfish.device.core.io.task.*;
@@ -17,10 +19,8 @@
import com.mrcrayfish.device.init.RegistrationHandler;
import com.mrcrayfish.device.network.PacketHandler;
import com.mrcrayfish.device.programs.*;
-import com.mrcrayfish.device.programs.debug.ApplicationTextArea;
import com.mrcrayfish.device.programs.email.ApplicationEmail;
import com.mrcrayfish.device.programs.email.task.*;
-import com.mrcrayfish.device.programs.example.ApplicationExample;
import com.mrcrayfish.device.programs.example.task.TaskNotificationTest;
import com.mrcrayfish.device.programs.gitweb.ApplicationGitWeb;
import com.mrcrayfish.device.programs.system.ApplicationAppStore;
@@ -37,6 +37,7 @@
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy;
+import net.minecraftforge.fml.common.discovery.ASMDataTable;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
@@ -59,6 +60,8 @@ public class MrCrayfishDeviceMod
public static final boolean DEVELOPER_MODE = true;
+ public static ASMDataTable asmTable;
+
@EventHandler
public void preInit(FMLPreInitializationEvent event) throws LaunchException
{
@@ -72,7 +75,7 @@ public void preInit(FMLPreInitializationEvent event) throws LaunchException
MinecraftForge.EVENT_BUS.register(new DeviceConfig());
RegistrationHandler.init();
-
+ asmTable = event.getAsmData();
proxy.preInit();
}
@@ -106,46 +109,46 @@ public void postInit(FMLPostInitializationEvent event)
private void registerApplications()
{
// Applications (Both)
- ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "settings"), ApplicationSettings.class);
- ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "bank"), ApplicationBank.class);
- ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "file_browser"), ApplicationFileBrowser.class);
- ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "gitweb"), ApplicationGitWeb.class);
- ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "note_stash"), ApplicationNoteStash.class);
- ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "pixel_painter"), ApplicationPixelPainter.class);
- ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "ender_mail"), ApplicationEmail.class);
- ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "app_store"), ApplicationAppStore.class);
+// ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "settings"), ApplicationSettings.class);
+// ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "bank"), ApplicationBank.class);
+// ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "file_browser"), ApplicationFileBrowser.class);
+// ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "gitweb"), ApplicationGitWeb.class);
+// ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "note_stash"), ApplicationNoteStash.class);
+// ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "pixel_painter"), ApplicationPixelPainter.class);
+// ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "ender_mail"), ApplicationEmail.class);
+// ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "app_store"), ApplicationAppStore.class);
// Core
- TaskManager.registerTask(TaskInstallApp.class);
- TaskManager.registerTask(TaskUpdateApplicationData.class);
- TaskManager.registerTask(TaskPrint.class);
- TaskManager.registerTask(TaskUpdateSystemData.class);
- TaskManager.registerTask(TaskConnect.class);
- TaskManager.registerTask(TaskPing.class);
- TaskManager.registerTask(TaskGetDevices.class);
-
- //Bank
- TaskManager.registerTask(TaskDeposit.class);
- TaskManager.registerTask(TaskWithdraw.class);
- TaskManager.registerTask(TaskGetBalance.class);
- TaskManager.registerTask(TaskPay.class);
- TaskManager.registerTask(TaskAdd.class);
- TaskManager.registerTask(TaskRemove.class);
-
- //File browser
- TaskManager.registerTask(TaskSendAction.class);
- TaskManager.registerTask(TaskSetupFileBrowser.class);
- TaskManager.registerTask(TaskGetFiles.class);
- TaskManager.registerTask(TaskGetStructure.class);
- TaskManager.registerTask(TaskGetMainDrive.class);
-
- //Ender Mail
- TaskManager.registerTask(TaskUpdateInbox.class);
- TaskManager.registerTask(TaskSendEmail.class);
- TaskManager.registerTask(TaskCheckEmailAccount.class);
- TaskManager.registerTask(TaskRegisterEmailAccount.class);
- TaskManager.registerTask(TaskDeleteEmail.class);
- TaskManager.registerTask(TaskViewEmail.class);
+// TaskManager.registerTask(TaskInstallApp.class);
+// TaskManager.registerTask(TaskUpdateApplicationData.class);
+// TaskManager.registerTask(TaskPrint.class);
+// TaskManager.registerTask(TaskUpdateSystemData.class);
+// TaskManager.registerTask(TaskConnect.class);
+// TaskManager.registerTask(TaskPing.class);
+// TaskManager.registerTask(TaskGetDevices.class);
+//
+// Bank
+// TaskManager.registerTask(TaskDeposit.class);
+// TaskManager.registerTask(TaskWithdraw.class);
+// TaskManager.registerTask(TaskGetBalance.class);
+// TaskManager.registerTask(TaskPay.class);
+// TaskManager.registerTask(TaskAdd.class);
+// TaskManager.registerTask(TaskRemove.class);
+//
+// File browser
+// TaskManager.registerTask(TaskSendAction.class);
+// TaskManager.registerTask(TaskSetupFileBrowser.class);
+// TaskManager.registerTask(TaskGetFiles.class);
+// TaskManager.registerTask(TaskGetStructure.class);
+// TaskManager.registerTask(TaskGetMainDrive.class);
+//
+// Ender Mail
+// TaskManager.registerTask(TaskUpdateInbox.class);
+// TaskManager.registerTask(TaskSendEmail.class);
+// TaskManager.registerTask(TaskCheckEmailAccount.class);
+// TaskManager.registerTask(TaskRegisterEmailAccount.class);
+// TaskManager.registerTask(TaskDeleteEmail.class);
+// TaskManager.registerTask(TaskViewEmail.class);
if(!DEVELOPER_MODE)
{
@@ -161,12 +164,11 @@ private void registerApplications()
else
{
// Applications (Developers)
- ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "example"), ApplicationExample.class);
- ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "icons"), ApplicationIcons.class);
- ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "text_area"), ApplicationTextArea.class);
- ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "test"), ApplicationTest.class);
+// ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "icons"), ApplicationIcons.class);
+// ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "text_area"), ApplicationTextArea.class);
+// ApplicationManager.registerApplication(new ResourceLocation(Reference.MOD_ID, "test"), ApplicationTest.class);
- TaskManager.registerTask(TaskNotificationTest.class);
+// TaskManager.registerTask(TaskNotificationTest.class);
}
PrintingManager.registerPrint(new ResourceLocation(Reference.MOD_ID, "picture"), ApplicationPixelPainter.PicturePrint.class);
diff --git a/src/main/java/com/mrcrayfish/device/api/ApplicationManager.java b/src/main/java/com/mrcrayfish/device/api/ApplicationManager.java
index 62914f7e6..04065af0d 100644
--- a/src/main/java/com/mrcrayfish/device/api/ApplicationManager.java
+++ b/src/main/java/com/mrcrayfish/device/api/ApplicationManager.java
@@ -2,6 +2,7 @@
import com.mrcrayfish.device.MrCrayfishDeviceMod;
import com.mrcrayfish.device.api.app.Application;
+import com.mrcrayfish.device.api.registry.BasicContainer;
import com.mrcrayfish.device.object.AppInfo;
import net.minecraft.util.ResourceLocation;
@@ -23,13 +24,13 @@ private ApplicationManager() {}
*
* Example: {@code new ResourceLocation("modid:appid");}
*
- * @param identifier the
- * @param clazz
+ * @param identifier the ID of the application. A resource location
+ * @param clazz the application class being registered
*/
@Nullable
public static Application registerApplication(ResourceLocation identifier, Class extends Application> clazz)
{
- Application application = MrCrayfishDeviceMod.proxy.registerApplication(identifier, clazz);
+ Application application = MrCrayfishDeviceMod.proxy.registerApplication(new AppInfo(identifier, Application.class.isAssignableFrom(clazz)), clazz);
if(application != null)
{
APP_INFO.put(identifier, application.getInfo());
@@ -38,6 +39,17 @@ public static Application registerApplication(ResourceLocation identifier, Class
return null;
}
+
+ @Nullable
+ public static Application registerApplication(BasicContainer app){
+ Application application = MrCrayfishDeviceMod.proxy.registerApplication(app);
+ if(application != null){
+ APP_INFO.put(app.getId(), application.getInfo());
+ return application;
+ }
+ return null;
+ }
+
/**
* Get all applications that are registered. The returned collection does not include system
* applications, see {@link #getSystemApplications()} or {@link #getAllApplications()}. Please
diff --git a/src/main/java/com/mrcrayfish/device/api/registry/BasicContainer.java b/src/main/java/com/mrcrayfish/device/api/registry/BasicContainer.java
new file mode 100644
index 000000000..56b4bfaa3
--- /dev/null
+++ b/src/main/java/com/mrcrayfish/device/api/registry/BasicContainer.java
@@ -0,0 +1,10 @@
+package com.mrcrayfish.device.api.registry;
+
+import com.mrcrayfish.device.api.app.Application;
+import net.minecraft.util.ResourceLocation;
+
+public interface BasicContainer extends ICDMRegistryItem>{
+ Class extends T> getContainedClass();
+ ResourceLocation getId();
+ boolean isSystem();
+}
diff --git a/src/main/java/com/mrcrayfish/device/api/registry/CDMRegister.java b/src/main/java/com/mrcrayfish/device/api/registry/CDMRegister.java
new file mode 100644
index 000000000..1c86dd1bc
--- /dev/null
+++ b/src/main/java/com/mrcrayfish/device/api/registry/CDMRegister.java
@@ -0,0 +1,15 @@
+package com.mrcrayfish.device.api.registry;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface CDMRegister {
+ String modId();
+ String uid();
+ boolean isDebug() default false;
+ boolean isSystem() default false;
+}
\ No newline at end of file
diff --git a/src/main/java/com/mrcrayfish/device/api/registry/CDMRegistry.java b/src/main/java/com/mrcrayfish/device/api/registry/CDMRegistry.java
new file mode 100644
index 000000000..7694bb6c3
--- /dev/null
+++ b/src/main/java/com/mrcrayfish/device/api/registry/CDMRegistry.java
@@ -0,0 +1,39 @@
+package com.mrcrayfish.device.api.registry;
+
+import net.minecraft.util.ResourceLocation;
+import net.minecraftforge.fml.common.discovery.ASMDataTable;
+
+import java.lang.annotation.Annotation;
+import java.util.HashSet;
+import java.util.Set;
+
+public abstract class CDMRegistry, R> {
+ public Set registry = new HashSet<>();
+
+ public void populate(ASMDataTable dataTable){
+ Set anns = dataTable.getAll(CDMRegister.class.getCanonicalName());
+ for(ASMDataTable.ASMData data : anns){
+ try {
+ final String name = data.getClassName();
+ final Class> clazz = Class.forName(name);
+ for(Annotation a : clazz.getDeclaredAnnotations()){
+ final String n = a.annotationType().getCanonicalName();
+ if(n.equals(CDMRegister.class.getCanonicalName())){
+ final CDMRegister ann = (CDMRegister)a;
+ if(getRequiredSuperclass().isAssignableFrom(clazz)){
+ final Class extends R> cls = clazz.asSubclass(getRequiredSuperclass());
+ addItem(ann, cls);
+ }
+ }
+ }
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public abstract void addItem(CDMRegister annotation, Class extends R> annotatedClass);
+ public abstract void registerItems(Set extends ICDMRegistryItem> items);
+ public abstract Class getRequiredSuperclass();
+ public abstract ResourceLocation getRegistryId();
+}
diff --git a/src/main/java/com/mrcrayfish/device/api/registry/DeviceModRegistry.java b/src/main/java/com/mrcrayfish/device/api/registry/DeviceModRegistry.java
new file mode 100644
index 000000000..9cc576427
--- /dev/null
+++ b/src/main/java/com/mrcrayfish/device/api/registry/DeviceModRegistry.java
@@ -0,0 +1,38 @@
+package com.mrcrayfish.device.api.registry;
+
+import net.minecraft.util.ResourceLocation;
+import net.minecraftforge.fml.common.discovery.ASMDataTable;
+
+import javax.annotation.Nullable;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
+public class DeviceModRegistry {
+ private static final Map, ?>> REGISTRIES = new HashMap<>();
+
+ public static void addCDMRegistry(Class extends CDMRegistry extends ICDMRegistryItem>, ?>> cls){
+ try {
+ final CDMRegistry extends ICDMRegistryItem>, ?> instance = cls.newInstance();
+ REGISTRIES.put(instance.getRegistryId(), instance);
+ } catch (InstantiationException | IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static void startRegistries(ASMDataTable dataTable){
+ for(CDMRegistry extends ICDMRegistryItem, ?> reg : REGISTRIES.values()){
+ reg.populate(dataTable);
+ reg.registerItems(reg.registry);
+ }
+ }
+
+ @Nullable
+ public static CDMRegistry extends ICDMRegistryItem>, ?> getRegistry(String name){
+ final Optional optional = REGISTRIES.values().stream().filter(it -> it.getRegistryId().getResourcePath().equals(name)).findFirst();
+ if(optional.isPresent()){
+ return (CDMRegistry extends ICDMRegistryItem>, ?>) optional.get();
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/mrcrayfish/device/api/registry/ICDMRegistryItem.java b/src/main/java/com/mrcrayfish/device/api/registry/ICDMRegistryItem.java
new file mode 100644
index 000000000..e2b6a1e71
--- /dev/null
+++ b/src/main/java/com/mrcrayfish/device/api/registry/ICDMRegistryItem.java
@@ -0,0 +1,5 @@
+package com.mrcrayfish.device.api.registry;
+
+public interface ICDMRegistryItem {
+ T getType();
+}
diff --git a/src/main/java/com/mrcrayfish/device/api/registry/app/ApplicationRegistry.java b/src/main/java/com/mrcrayfish/device/api/registry/app/ApplicationRegistry.java
new file mode 100644
index 000000000..b255ea101
--- /dev/null
+++ b/src/main/java/com/mrcrayfish/device/api/registry/app/ApplicationRegistry.java
@@ -0,0 +1,69 @@
+package com.mrcrayfish.device.api.registry.app;
+
+import com.mrcrayfish.device.MrCrayfishDeviceMod;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.ApplicationManager;
+import com.mrcrayfish.device.api.app.Application;
+import com.mrcrayfish.device.api.registry.BasicContainer;
+import com.mrcrayfish.device.api.registry.CDMRegister;
+import com.mrcrayfish.device.api.registry.CDMRegistry;
+import com.mrcrayfish.device.api.registry.ICDMRegistryItem;
+import net.minecraft.util.ResourceLocation;
+import java.util.*;
+
+public class ApplicationRegistry extends CDMRegistry, Application> {
+
+ @Override
+ public void addItem(CDMRegister item, Class extends Application> annotatedClass) {
+ final BasicContainer app = newAppContainer(item, annotatedClass);
+ this.registry.add(app);
+ }
+
+ @Override
+ public Class getRequiredSuperclass() {
+ return Application.class;
+ }
+
+ @Override
+ public void registerItems(Set extends ICDMRegistryItem> items) {
+ for(ICDMRegistryItem item : items){
+ if(item.getType() instanceof BasicContainer){
+ BasicContainer app = (BasicContainer)item.getType();
+ ApplicationManager.registerApplication(app);
+ }
+ }
+ }
+
+ private static BasicContainer newAppContainer(CDMRegister app, Class extends Application> clazz){
+ MrCrayfishDeviceMod.getLogger().info("Constructing new app container...");
+ final BasicContainer ret = new BasicContainer(){
+
+ @Override
+ public BasicContainer getType() {
+ return this;
+ }
+
+ @Override
+ public Class extends Application> getContainedClass() {
+ return clazz;
+ }
+
+ @Override
+ public ResourceLocation getId() {
+ return new ResourceLocation(app.modId(), app.uid());
+ }
+
+ @Override
+ public boolean isSystem() {
+ return app.isSystem();
+ }
+ };
+ MrCrayfishDeviceMod.getLogger().info("\tDone!");
+ return ret;
+ }
+
+ @Override
+ public ResourceLocation getRegistryId() {
+ return new ResourceLocation(Reference.MOD_ID, "apps_registry");
+ }
+}
diff --git a/src/main/java/com/mrcrayfish/device/api/registry/task/TaskRegistry.java b/src/main/java/com/mrcrayfish/device/api/registry/task/TaskRegistry.java
new file mode 100644
index 000000000..694ccd970
--- /dev/null
+++ b/src/main/java/com/mrcrayfish/device/api/registry/task/TaskRegistry.java
@@ -0,0 +1,67 @@
+package com.mrcrayfish.device.api.registry.task;
+
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.app.Application;
+import com.mrcrayfish.device.api.registry.BasicContainer;
+import com.mrcrayfish.device.api.registry.CDMRegister;
+import com.mrcrayfish.device.api.registry.CDMRegistry;
+import com.mrcrayfish.device.api.registry.ICDMRegistryItem;
+import com.mrcrayfish.device.api.task.Task;
+import com.mrcrayfish.device.api.task.TaskManager;
+import net.minecraft.util.ResourceLocation;
+
+import java.util.Set;
+
+public class TaskRegistry extends CDMRegistry, Task> {
+
+ @Override
+ public void addItem(CDMRegister annotation, Class extends Task> annotatedClass) {
+ final BasicContainer task = newTaskContainer(annotation, annotatedClass);
+ this.registry.add(task);
+ }
+
+ private static BasicContainer newTaskContainer(CDMRegister app, Class extends Task> clazz){
+ return new BasicContainer() {
+
+ @Override
+ public BasicContainer getType() {
+ return this;
+ }
+
+ @Override
+ public Class extends Task> getContainedClass() {
+ return clazz;
+ }
+
+ @Override
+ public ResourceLocation getId() {
+ return new ResourceLocation(app.modId(), app.uid());
+ }
+
+ @Override
+ public boolean isSystem() {
+ return app.isSystem();
+ }
+ };
+ }
+
+ @Override
+ public void registerItems(Set extends ICDMRegistryItem> items) {
+ for(ICDMRegistryItem task : items){
+ if(task instanceof BasicContainer){
+ BasicContainer container = (BasicContainer)task;
+ TaskManager.registerTask(container);
+ }
+ }
+ }
+
+ @Override
+ public Class getRequiredSuperclass() {
+ return Task.class;
+ }
+
+ @Override
+ public ResourceLocation getRegistryId() {
+ return new ResourceLocation(Reference.MOD_ID, "task_registry");
+ }
+}
diff --git a/src/main/java/com/mrcrayfish/device/api/task/Task.java b/src/main/java/com/mrcrayfish/device/api/task/Task.java
index 08820c800..abe305473 100644
--- a/src/main/java/com/mrcrayfish/device/api/task/Task.java
+++ b/src/main/java/com/mrcrayfish/device/api/task/Task.java
@@ -1,5 +1,6 @@
package com.mrcrayfish.device.api.task;
+import com.mrcrayfish.device.api.registry.ICDMRegistryItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
@@ -19,7 +20,7 @@
*
* @author MrCrayfish
*/
-public abstract class Task
+public abstract class Task
{
private String name;
private Callback callback = null;
diff --git a/src/main/java/com/mrcrayfish/device/api/task/TaskManager.java b/src/main/java/com/mrcrayfish/device/api/task/TaskManager.java
index e6844ad8e..5ecf6cc0e 100644
--- a/src/main/java/com/mrcrayfish/device/api/task/TaskManager.java
+++ b/src/main/java/com/mrcrayfish/device/api/task/TaskManager.java
@@ -1,6 +1,7 @@
package com.mrcrayfish.device.api.task;
import com.mrcrayfish.device.MrCrayfishDeviceMod;
+import com.mrcrayfish.device.api.registry.BasicContainer;
import com.mrcrayfish.device.network.PacketHandler;
import com.mrcrayfish.device.network.task.MessageRequest;
@@ -26,6 +27,10 @@ private static TaskManager get()
}
return instance;
}
+
+ public static void registerTask(BasicContainer taskContainer){
+ registerTask(taskContainer.getContainedClass());
+ }
public static void registerTask(Class extends Task> clazz)
{
@@ -51,7 +56,7 @@ public static void sendTask(Task task)
{
TaskManager manager = get();
if(!manager.registeredRequests.containsKey(task.getName())) {
- throw new RuntimeException("Unregistered Task: " + task.getClass().getName() + ". Use TaskManager#requestRequest to register your task.");
+ throw new RuntimeException("Unregistered Task: " + task.getClass().getName() + ". Use TaskManager#registerRequest to register your task.");
}
int requestId = manager.currentId++;
diff --git a/src/main/java/com/mrcrayfish/device/core/io/task/TaskGetFiles.java b/src/main/java/com/mrcrayfish/device/core/io/task/TaskGetFiles.java
index 0fed30bad..6a0630cc6 100644
--- a/src/main/java/com/mrcrayfish/device/core/io/task/TaskGetFiles.java
+++ b/src/main/java/com/mrcrayfish/device/core/io/task/TaskGetFiles.java
@@ -1,6 +1,8 @@
package com.mrcrayfish.device.core.io.task;
+import com.mrcrayfish.device.Reference;
import com.mrcrayfish.device.api.io.Folder;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.core.io.FileSystem;
import com.mrcrayfish.device.core.io.ServerFile;
@@ -21,6 +23,7 @@
/**
* Author: MrCrayfish
*/
+@CDMRegister(modId = Reference.MOD_ID, uid = "io_get_files")
public class TaskGetFiles extends Task
{
private String uuid;
diff --git a/src/main/java/com/mrcrayfish/device/core/io/task/TaskGetMainDrive.java b/src/main/java/com/mrcrayfish/device/core/io/task/TaskGetMainDrive.java
index 7c33b161c..dd916d481 100644
--- a/src/main/java/com/mrcrayfish/device/core/io/task/TaskGetMainDrive.java
+++ b/src/main/java/com/mrcrayfish/device/core/io/task/TaskGetMainDrive.java
@@ -1,7 +1,9 @@
package com.mrcrayfish.device.core.io.task;
+import com.mrcrayfish.device.Reference;
import com.mrcrayfish.device.api.io.Drive;
import com.mrcrayfish.device.api.io.Folder;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.core.Laptop;
import com.mrcrayfish.device.core.io.FileSystem;
@@ -17,6 +19,7 @@
/**
* Author: MrCrayfish
*/
+@CDMRegister(modId = Reference.MOD_ID, uid = "io_get_main_drive")
public class TaskGetMainDrive extends Task
{
private BlockPos pos;
diff --git a/src/main/java/com/mrcrayfish/device/core/io/task/TaskGetStructure.java b/src/main/java/com/mrcrayfish/device/core/io/task/TaskGetStructure.java
index 1c3eab76e..de0d5c685 100644
--- a/src/main/java/com/mrcrayfish/device/core/io/task/TaskGetStructure.java
+++ b/src/main/java/com/mrcrayfish/device/core/io/task/TaskGetStructure.java
@@ -1,6 +1,8 @@
package com.mrcrayfish.device.core.io.task;
+import com.mrcrayfish.device.Reference;
import com.mrcrayfish.device.api.io.Drive;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.core.io.FileSystem;
import com.mrcrayfish.device.core.io.ServerFolder;
@@ -17,6 +19,7 @@
/**
* Author: MrCrayfish
*/
+@CDMRegister(modId = Reference.MOD_ID, uid = "io_get_structure")
public class TaskGetStructure extends Task
{
private String uuid;
diff --git a/src/main/java/com/mrcrayfish/device/core/io/task/TaskSendAction.java b/src/main/java/com/mrcrayfish/device/core/io/task/TaskSendAction.java
index 70bf4d0f3..52ff8e8ea 100644
--- a/src/main/java/com/mrcrayfish/device/core/io/task/TaskSendAction.java
+++ b/src/main/java/com/mrcrayfish/device/core/io/task/TaskSendAction.java
@@ -1,6 +1,8 @@
package com.mrcrayfish.device.core.io.task;
+import com.mrcrayfish.device.Reference;
import com.mrcrayfish.device.api.io.Drive;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.core.Laptop;
import com.mrcrayfish.device.core.io.FileSystem;
@@ -15,6 +17,7 @@
/**
* Author: MrCrayfish
*/
+@CDMRegister(modId = Reference.MOD_ID, uid = "io_send_action")
public class TaskSendAction extends Task
{
private String uuid;
diff --git a/src/main/java/com/mrcrayfish/device/core/io/task/TaskSetupFileBrowser.java b/src/main/java/com/mrcrayfish/device/core/io/task/TaskSetupFileBrowser.java
index f2ec2ee14..8d7d8858c 100644
--- a/src/main/java/com/mrcrayfish/device/core/io/task/TaskSetupFileBrowser.java
+++ b/src/main/java/com/mrcrayfish/device/core/io/task/TaskSetupFileBrowser.java
@@ -1,5 +1,7 @@
package com.mrcrayfish.device.core.io.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.core.io.FileSystem;
import com.mrcrayfish.device.core.io.drive.AbstractDrive;
@@ -17,6 +19,7 @@
/**
* Author: MrCrayfish
*/
+@CDMRegister(modId = Reference.MOD_ID, uid = "io_setup_file_browser")
public class TaskSetupFileBrowser extends Task
{
private BlockPos pos;
diff --git a/src/main/java/com/mrcrayfish/device/core/network/task/TaskConnect.java b/src/main/java/com/mrcrayfish/device/core/network/task/TaskConnect.java
index 5d79a0a7b..d668525df 100644
--- a/src/main/java/com/mrcrayfish/device/core/network/task/TaskConnect.java
+++ b/src/main/java/com/mrcrayfish/device/core/network/task/TaskConnect.java
@@ -1,5 +1,7 @@
package com.mrcrayfish.device.core.network.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.core.network.Router;
import com.mrcrayfish.device.tileentity.TileEntityNetworkDevice;
@@ -13,6 +15,7 @@
/**
* Author: MrCrayfish
*/
+@CDMRegister(modId = Reference.MOD_ID, uid = "network_connect")
public class TaskConnect extends Task
{
private BlockPos devicePos;
diff --git a/src/main/java/com/mrcrayfish/device/core/network/task/TaskGetDevices.java b/src/main/java/com/mrcrayfish/device/core/network/task/TaskGetDevices.java
index 55ba2b284..f393e0c12 100644
--- a/src/main/java/com/mrcrayfish/device/core/network/task/TaskGetDevices.java
+++ b/src/main/java/com/mrcrayfish/device/core/network/task/TaskGetDevices.java
@@ -1,5 +1,7 @@
package com.mrcrayfish.device.core.network.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.core.network.NetworkDevice;
import com.mrcrayfish.device.core.network.Router;
@@ -16,6 +18,7 @@
/**
* Author: MrCrayfish
*/
+@CDMRegister(modId = Reference.MOD_ID, uid = "network_get_devices")
public class TaskGetDevices extends Task
{
private BlockPos devicePos;
diff --git a/src/main/java/com/mrcrayfish/device/core/network/task/TaskPing.java b/src/main/java/com/mrcrayfish/device/core/network/task/TaskPing.java
index 374cd891c..c4e9de316 100644
--- a/src/main/java/com/mrcrayfish/device/core/network/task/TaskPing.java
+++ b/src/main/java/com/mrcrayfish/device/core/network/task/TaskPing.java
@@ -1,5 +1,7 @@
package com.mrcrayfish.device.core.network.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.tileentity.TileEntityNetworkDevice;
import net.minecraft.entity.player.EntityPlayer;
@@ -11,6 +13,7 @@
/**
* Author: MrCrayfish
*/
+@CDMRegister(modId = Reference.MOD_ID, uid = "network_ping")
public class TaskPing extends Task
{
private BlockPos sourceDevicePos;
diff --git a/src/main/java/com/mrcrayfish/device/core/print/task/TaskPrint.java b/src/main/java/com/mrcrayfish/device/core/print/task/TaskPrint.java
index d045df0e6..7d6e07b8f 100644
--- a/src/main/java/com/mrcrayfish/device/core/print/task/TaskPrint.java
+++ b/src/main/java/com/mrcrayfish/device/core/print/task/TaskPrint.java
@@ -1,6 +1,8 @@
package com.mrcrayfish.device.core.print.task;
+import com.mrcrayfish.device.Reference;
import com.mrcrayfish.device.api.print.IPrint;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.core.network.NetworkDevice;
import com.mrcrayfish.device.core.network.Router;
@@ -17,6 +19,7 @@
/**
* Author: MrCrayfish
*/
+@CDMRegister(modId = Reference.MOD_ID, uid = "printer_print")
public class TaskPrint extends Task
{
private BlockPos devicePos;
diff --git a/src/main/java/com/mrcrayfish/device/core/task/TaskInstallApp.java b/src/main/java/com/mrcrayfish/device/core/task/TaskInstallApp.java
index cad97a44d..01adf4a5a 100644
--- a/src/main/java/com/mrcrayfish/device/core/task/TaskInstallApp.java
+++ b/src/main/java/com/mrcrayfish/device/core/task/TaskInstallApp.java
@@ -1,6 +1,8 @@
package com.mrcrayfish.device.core.task;
+import com.mrcrayfish.device.Reference;
import com.mrcrayfish.device.api.ApplicationManager;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.object.AppInfo;
import com.mrcrayfish.device.tileentity.TileEntityLaptop;
@@ -16,6 +18,7 @@
/**
* Author: MrCrayfish
*/
+@CDMRegister(modId = Reference.MOD_ID, uid = "system_install_app")
public class TaskInstallApp extends Task
{
private String appId;
diff --git a/src/main/java/com/mrcrayfish/device/programs/ApplicationIcons.java b/src/main/java/com/mrcrayfish/device/programs/ApplicationIcons.java
index 714fffbd7..03ad0e65d 100644
--- a/src/main/java/com/mrcrayfish/device/programs/ApplicationIcons.java
+++ b/src/main/java/com/mrcrayfish/device/programs/ApplicationIcons.java
@@ -1,8 +1,11 @@
package com.mrcrayfish.device.programs;
+import com.mrcrayfish.device.Reference;
import com.mrcrayfish.device.api.app.*;
import com.mrcrayfish.device.api.app.component.Button;
import com.mrcrayfish.device.api.app.component.ComboBox;
+import com.mrcrayfish.device.api.registry.CDMRegister;
+import com.mrcrayfish.device.api.registry.DeviceModRegistry;
import com.mrcrayfish.device.programs.system.layout.StandardLayout;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.text.TextFormatting;
@@ -12,6 +15,7 @@
/**
* Author: MrCrayfish
*/
+@CDMRegister(modId = Reference.MOD_ID, uid = "icons", isDebug = true)
public class ApplicationIcons extends Application
{
private int offset;
diff --git a/src/main/java/com/mrcrayfish/device/programs/ApplicationNoteStash.java b/src/main/java/com/mrcrayfish/device/programs/ApplicationNoteStash.java
index e15858787..60d4edb50 100644
--- a/src/main/java/com/mrcrayfish/device/programs/ApplicationNoteStash.java
+++ b/src/main/java/com/mrcrayfish/device/programs/ApplicationNoteStash.java
@@ -1,9 +1,12 @@
package com.mrcrayfish.device.programs;
+import com.mrcrayfish.device.Reference;
import com.mrcrayfish.device.api.app.Application;
import com.mrcrayfish.device.api.app.Dialog;
import com.mrcrayfish.device.api.app.Layout;
import com.mrcrayfish.device.api.app.component.*;
+import com.mrcrayfish.device.api.registry.CDMRegister;
+import com.mrcrayfish.device.api.registry.DeviceModRegistry;
import com.mrcrayfish.device.api.io.File;
import com.mrcrayfish.device.core.io.FileSystem;
import net.minecraft.nbt.NBTTagCompound;
@@ -12,6 +15,7 @@
import javax.annotation.Nullable;
import java.util.function.Predicate;
+@CDMRegister(modId = Reference.MOD_ID, uid = "note_stash", isSystem = true)
public class ApplicationNoteStash extends Application
{
private static final Predicate PREDICATE_FILE_NOTE = file -> !file.isFolder()
diff --git a/src/main/java/com/mrcrayfish/device/programs/ApplicationPixelPainter.java b/src/main/java/com/mrcrayfish/device/programs/ApplicationPixelPainter.java
index 0ed8c0927..8e62043fb 100644
--- a/src/main/java/com/mrcrayfish/device/programs/ApplicationPixelPainter.java
+++ b/src/main/java/com/mrcrayfish/device/programs/ApplicationPixelPainter.java
@@ -9,6 +9,8 @@
import com.mrcrayfish.device.api.app.component.Label;
import com.mrcrayfish.device.api.app.component.TextField;
import com.mrcrayfish.device.api.app.listener.SlideListener;
+import com.mrcrayfish.device.api.registry.CDMRegister;
+import com.mrcrayfish.device.api.registry.DeviceModRegistry;
import com.mrcrayfish.device.api.app.renderer.ListItemRenderer;
import com.mrcrayfish.device.api.io.File;
import com.mrcrayfish.device.api.print.IPrint;
@@ -32,6 +34,7 @@
import javax.annotation.Nullable;
import java.awt.*;
+@CDMRegister(modId = Reference.MOD_ID, uid = "pixel_painter", isSystem = true)
public class ApplicationPixelPainter extends Application
{
private static final ResourceLocation PIXEL_PAINTER_ICONS = new ResourceLocation("cdm:textures/gui/pixel_painter.png");
diff --git a/src/main/java/com/mrcrayfish/device/programs/ApplicationTest.java b/src/main/java/com/mrcrayfish/device/programs/ApplicationTest.java
index 85cca798e..cb6fa0a8c 100644
--- a/src/main/java/com/mrcrayfish/device/programs/ApplicationTest.java
+++ b/src/main/java/com/mrcrayfish/device/programs/ApplicationTest.java
@@ -1,9 +1,12 @@
package com.mrcrayfish.device.programs;
+import com.mrcrayfish.device.Reference;
import com.mrcrayfish.device.api.app.Application;
import com.mrcrayfish.device.api.app.Dialog;
import com.mrcrayfish.device.api.app.Icons;
import com.mrcrayfish.device.api.app.component.Button;
+import com.mrcrayfish.device.api.registry.CDMRegister;
+import com.mrcrayfish.device.api.registry.DeviceModRegistry;
import net.minecraft.nbt.NBTTagCompound;
import javax.annotation.Nullable;
@@ -11,6 +14,7 @@
/**
* Author: MrCrayfish
*/
+@CDMRegister(modId = Reference.MOD_ID, uid = "test", isSystem = true)
public class ApplicationTest extends Application
{
@Override
diff --git a/src/main/java/com/mrcrayfish/device/programs/debug/ApplicationTextArea.java b/src/main/java/com/mrcrayfish/device/programs/debug/ApplicationTextArea.java
index 9f6743505..36de4b85a 100644
--- a/src/main/java/com/mrcrayfish/device/programs/debug/ApplicationTextArea.java
+++ b/src/main/java/com/mrcrayfish/device/programs/debug/ApplicationTextArea.java
@@ -1,11 +1,14 @@
package com.mrcrayfish.device.programs.debug;
+import com.mrcrayfish.device.Reference;
import com.mrcrayfish.device.api.app.Application;
import com.mrcrayfish.device.api.app.Icons;
import com.mrcrayfish.device.api.app.Layout;
import com.mrcrayfish.device.api.app.component.ButtonToggle;
import com.mrcrayfish.device.api.app.component.TextArea;
import com.mrcrayfish.device.api.app.interfaces.IHighlight;
+import com.mrcrayfish.device.api.registry.CDMRegister;
+import com.mrcrayfish.device.api.registry.DeviceModRegistry;
import com.mrcrayfish.device.core.Laptop;
import com.mrcrayfish.device.core.client.LaptopFontRenderer;
import net.minecraft.nbt.NBTTagCompound;
@@ -16,6 +19,7 @@
/**
* Author: MrCrayfish
*/
+@CDMRegister(modId = Reference.MOD_ID, uid="text_area", isDebug = true)
public class ApplicationTextArea extends Application
{
public static final IHighlight JAVA_HIGHLIGHT = text ->
diff --git a/src/main/java/com/mrcrayfish/device/programs/email/ApplicationEmail.java b/src/main/java/com/mrcrayfish/device/programs/email/ApplicationEmail.java
index 13c3e382b..11bd75535 100644
--- a/src/main/java/com/mrcrayfish/device/programs/email/ApplicationEmail.java
+++ b/src/main/java/com/mrcrayfish/device/programs/email/ApplicationEmail.java
@@ -1,5 +1,6 @@
package com.mrcrayfish.device.programs.email;
+import com.mrcrayfish.device.Reference;
import com.mrcrayfish.device.api.ApplicationManager;
import com.mrcrayfish.device.api.app.*;
import com.mrcrayfish.device.api.app.Component;
@@ -11,6 +12,8 @@
import com.mrcrayfish.device.api.app.component.TextArea;
import com.mrcrayfish.device.api.app.component.TextField;
import com.mrcrayfish.device.api.app.listener.InitListener;
+import com.mrcrayfish.device.api.registry.CDMRegister;
+import com.mrcrayfish.device.api.registry.DeviceModRegistry;
import com.mrcrayfish.device.api.app.renderer.ListItemRenderer;
import com.mrcrayfish.device.api.io.File;
import com.mrcrayfish.device.api.task.TaskManager;
@@ -33,6 +36,7 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+@CDMRegister(modId = Reference.MOD_ID, uid = "ender_mail", isSystem = true)
public class ApplicationEmail extends Application
{
private static final ResourceLocation ENDER_MAIL_ICONS = new ResourceLocation("cdm:textures/gui/ender_mail.png");
diff --git a/src/main/java/com/mrcrayfish/device/programs/email/task/TaskCheckEmailAccount.java b/src/main/java/com/mrcrayfish/device/programs/email/task/TaskCheckEmailAccount.java
index 1c49094dc..50d68e610 100644
--- a/src/main/java/com/mrcrayfish/device/programs/email/task/TaskCheckEmailAccount.java
+++ b/src/main/java/com/mrcrayfish/device/programs/email/task/TaskCheckEmailAccount.java
@@ -1,11 +1,14 @@
package com.mrcrayfish.device.programs.email.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.programs.email.EmailManager;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
+@CDMRegister(modId = Reference.MOD_ID, uid = "email_check_account")
public class TaskCheckEmailAccount extends Task
{
private boolean hasAccount = false;
diff --git a/src/main/java/com/mrcrayfish/device/programs/email/task/TaskDeleteEmail.java b/src/main/java/com/mrcrayfish/device/programs/email/task/TaskDeleteEmail.java
index 43db57020..a8ba9aba5 100644
--- a/src/main/java/com/mrcrayfish/device/programs/email/task/TaskDeleteEmail.java
+++ b/src/main/java/com/mrcrayfish/device/programs/email/task/TaskDeleteEmail.java
@@ -1,5 +1,7 @@
package com.mrcrayfish.device.programs.email.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.programs.email.object.Email;
import com.mrcrayfish.device.programs.email.EmailManager;
@@ -9,6 +11,7 @@
import java.util.List;
+@CDMRegister(modId = Reference.MOD_ID, uid = "email_delete")
public class TaskDeleteEmail extends Task {
private int index;
diff --git a/src/main/java/com/mrcrayfish/device/programs/email/task/TaskRegisterEmailAccount.java b/src/main/java/com/mrcrayfish/device/programs/email/task/TaskRegisterEmailAccount.java
index a90ce4ec3..5bfebc80b 100644
--- a/src/main/java/com/mrcrayfish/device/programs/email/task/TaskRegisterEmailAccount.java
+++ b/src/main/java/com/mrcrayfish/device/programs/email/task/TaskRegisterEmailAccount.java
@@ -1,11 +1,14 @@
package com.mrcrayfish.device.programs.email.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.programs.email.EmailManager;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
+@CDMRegister(modId = Reference.MOD_ID, uid = "email_register_account")
public class TaskRegisterEmailAccount extends Task
{
private String name;
diff --git a/src/main/java/com/mrcrayfish/device/programs/email/task/TaskSendEmail.java b/src/main/java/com/mrcrayfish/device/programs/email/task/TaskSendEmail.java
index 05ed8839b..9053a79f0 100644
--- a/src/main/java/com/mrcrayfish/device/programs/email/task/TaskSendEmail.java
+++ b/src/main/java/com/mrcrayfish/device/programs/email/task/TaskSendEmail.java
@@ -1,5 +1,7 @@
package com.mrcrayfish.device.programs.email.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.programs.email.object.Email;
import com.mrcrayfish.device.programs.email.EmailManager;
@@ -7,6 +9,7 @@
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
+@CDMRegister(modId = Reference.MOD_ID, uid = "email_send")
public class TaskSendEmail extends Task
{
private Email email;
diff --git a/src/main/java/com/mrcrayfish/device/programs/email/task/TaskUpdateInbox.java b/src/main/java/com/mrcrayfish/device/programs/email/task/TaskUpdateInbox.java
index 8d07524e5..e3067cd56 100644
--- a/src/main/java/com/mrcrayfish/device/programs/email/task/TaskUpdateInbox.java
+++ b/src/main/java/com/mrcrayfish/device/programs/email/task/TaskUpdateInbox.java
@@ -1,5 +1,7 @@
package com.mrcrayfish.device.programs.email.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.programs.email.object.Email;
import com.mrcrayfish.device.programs.email.EmailManager;
@@ -10,6 +12,7 @@
import java.util.List;
+@CDMRegister(modId = Reference.MOD_ID, uid = "email_update_inbox")
public class TaskUpdateInbox extends Task
{
private List emails;
diff --git a/src/main/java/com/mrcrayfish/device/programs/email/task/TaskViewEmail.java b/src/main/java/com/mrcrayfish/device/programs/email/task/TaskViewEmail.java
index 2b482be8f..ec3e9cc6f 100644
--- a/src/main/java/com/mrcrayfish/device/programs/email/task/TaskViewEmail.java
+++ b/src/main/java/com/mrcrayfish/device/programs/email/task/TaskViewEmail.java
@@ -1,5 +1,7 @@
package com.mrcrayfish.device.programs.email.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.programs.email.object.Email;
import com.mrcrayfish.device.programs.email.EmailManager;
@@ -9,6 +11,7 @@
import java.util.List;
+@CDMRegister(modId = Reference.MOD_ID, uid = "email_view")
public class TaskViewEmail extends Task
{
private int index;
diff --git a/src/main/java/com/mrcrayfish/device/programs/example/ApplicationExample.java b/src/main/java/com/mrcrayfish/device/programs/example/ApplicationExample.java
index 5494bd488..7eaa0945b 100644
--- a/src/main/java/com/mrcrayfish/device/programs/example/ApplicationExample.java
+++ b/src/main/java/com/mrcrayfish/device/programs/example/ApplicationExample.java
@@ -1,16 +1,17 @@
package com.mrcrayfish.device.programs.example;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.TaskManager;
import com.mrcrayfish.device.api.app.Application;
import com.mrcrayfish.device.api.app.Icons;
import com.mrcrayfish.device.api.app.component.*;
-import com.mrcrayfish.device.api.app.listener.ClickListener;
-import com.mrcrayfish.device.api.app.listener.SlideListener;
import com.mrcrayfish.device.programs.example.task.TaskNotificationTest;
import net.minecraft.nbt.NBTTagCompound;
import javax.annotation.Nullable;
+@CDMRegister(modId = Reference.MOD_ID, uid = "example", isSystem = true)
public class ApplicationExample extends Application
{
private Label label;
@@ -45,18 +46,12 @@ public void init(@Nullable NBTTagCompound intent)
button = new Button(5, 18, "Button");
button.setSize(63, 20);
- button.setClickListener((mouseX, mouseY, mouseButton) ->
- {
- itemList.addItem("Henlo");
- });
+ button.setClickListener((mouseX, mouseY, mouseButton) -> itemList.addItem("Henlo"));
super.addComponent(button);
leftButton = new Button(5, 43, Icons.CHEVRON_LEFT);
leftButton.setPadding(1);
- leftButton.setClickListener((mouseX, mouseY, mouseButton) ->
- {
- itemList.removeItem(itemList.getSelectedIndex());
- });
+ leftButton.setClickListener((mouseX, mouseY, mouseButton) -> itemList.removeItem(itemList.getSelectedIndex()));
super.addComponent(leftButton);
upButton = new Button(22, 43, Icons.CHEVRON_UP);
@@ -69,13 +64,10 @@ public void init(@Nullable NBTTagCompound intent)
downButton = new Button(56, 43, Icons.CHEVRON_DOWN);
downButton.setPadding(1);
- downButton.setClickListener((mouseX, mouseY, mouseButton) ->
- {
- TaskManager.sendTask(new TaskNotificationTest());
- });
+ downButton.setClickListener((mouseX, mouseY, mouseButton) -> TaskManager.sendTask(new TaskNotificationTest()));
super.addComponent(downButton);
- itemList = new ItemList(5, 60, 63, 4);
+ itemList = new ItemList<>(5, 60, 63, 4);
itemList.addItem("Item #1");
itemList.addItem("Item #2");
itemList.addItem("Item #3");
@@ -105,14 +97,7 @@ public void init(@Nullable NBTTagCompound intent)
super.addComponent(progressBar);
slider = new Slider(88, 111, 80);
- slider.setSlideListener(new SlideListener()
- {
- @Override
- public void onSlide(float percentage)
- {
- progressBar.setProgress((int) (100 * percentage));
- }
- });
+ slider.setSlideListener(percentage -> progressBar.setProgress((int) (100 * percentage)));
super.addComponent(slider);
spinner = new Spinner(56, 3);
diff --git a/src/main/java/com/mrcrayfish/device/programs/gitweb/ApplicationGitWeb.java b/src/main/java/com/mrcrayfish/device/programs/gitweb/ApplicationGitWeb.java
index b35e101ec..7af1d25e9 100644
--- a/src/main/java/com/mrcrayfish/device/programs/gitweb/ApplicationGitWeb.java
+++ b/src/main/java/com/mrcrayfish/device/programs/gitweb/ApplicationGitWeb.java
@@ -1,11 +1,14 @@
package com.mrcrayfish.device.programs.gitweb;
+import com.mrcrayfish.device.Reference;
import com.mrcrayfish.device.api.app.Application;
import com.mrcrayfish.device.api.app.Icons;
import com.mrcrayfish.device.api.app.Layout;
import com.mrcrayfish.device.api.app.component.Button;
import com.mrcrayfish.device.api.app.component.Spinner;
import com.mrcrayfish.device.api.app.component.TextField;
+import com.mrcrayfish.device.api.registry.CDMRegister;
+import com.mrcrayfish.device.api.registry.DeviceModRegistry;
import com.mrcrayfish.device.core.Laptop;
import com.mrcrayfish.device.programs.gitweb.component.GitWebFrame;
import com.mrcrayfish.device.programs.gitweb.layout.TextLayout;
@@ -20,6 +23,7 @@
* The Device Mod implementations of an internet browser. Originally created by MinecraftDoodler.
* Licensed under GPL 3.0
*/
+@CDMRegister(modId = Reference.MOD_ID, uid="text_area")
public class ApplicationGitWeb extends Application
{
private Layout layoutBrowser;
diff --git a/src/main/java/com/mrcrayfish/device/programs/system/ApplicationAppStore.java b/src/main/java/com/mrcrayfish/device/programs/system/ApplicationAppStore.java
index dc12d6d23..5242d04df 100644
--- a/src/main/java/com/mrcrayfish/device/programs/system/ApplicationAppStore.java
+++ b/src/main/java/com/mrcrayfish/device/programs/system/ApplicationAppStore.java
@@ -14,6 +14,8 @@
import com.mrcrayfish.device.api.app.component.Image;
import com.mrcrayfish.device.api.app.component.Label;
import com.mrcrayfish.device.api.app.component.Spinner;
+import com.mrcrayfish.device.api.registry.CDMRegister;
+import com.mrcrayfish.device.api.registry.DeviceModRegistry;
import com.mrcrayfish.device.api.utils.OnlineRequest;
import com.mrcrayfish.device.core.Laptop;
import com.mrcrayfish.device.object.AppInfo;
@@ -35,6 +37,7 @@
import java.util.Collections;
import java.util.List;
+@CDMRegister(modId = Reference.MOD_ID, uid = "app_store", isSystem = true)
public class ApplicationAppStore extends SystemApplication
{
public static final String CERTIFIED_APPS_URL = "https://raw.githubusercontent.com/MrCrayfish/DeviceMod-CertifiedApps/master";
diff --git a/src/main/java/com/mrcrayfish/device/programs/system/ApplicationBank.java b/src/main/java/com/mrcrayfish/device/programs/system/ApplicationBank.java
index a69634e90..812d8c15b 100644
--- a/src/main/java/com/mrcrayfish/device/programs/system/ApplicationBank.java
+++ b/src/main/java/com/mrcrayfish/device/programs/system/ApplicationBank.java
@@ -1,10 +1,13 @@
package com.mrcrayfish.device.programs.system;
+import com.mrcrayfish.device.Reference;
import com.mrcrayfish.device.api.app.*;
import com.mrcrayfish.device.api.app.component.Button;
import com.mrcrayfish.device.api.app.component.Label;
import com.mrcrayfish.device.api.app.component.Text;
import com.mrcrayfish.device.api.app.component.TextField;
+import com.mrcrayfish.device.api.registry.CDMRegister;
+import com.mrcrayfish.device.api.registry.DeviceModRegistry;
import com.mrcrayfish.device.api.task.Callback;
import com.mrcrayfish.device.api.task.TaskManager;
import com.mrcrayfish.device.api.utils.BankUtil;
@@ -25,6 +28,7 @@
import javax.annotation.Nullable;
import java.awt.Color;
+@CDMRegister(modId = Reference.MOD_ID, uid = "bank", isSystem = true)
public class ApplicationBank extends SystemApplication
{
private static final ItemStack EMERALD = new ItemStack(Items.EMERALD);
diff --git a/src/main/java/com/mrcrayfish/device/programs/system/ApplicationFileBrowser.java b/src/main/java/com/mrcrayfish/device/programs/system/ApplicationFileBrowser.java
index fa21c1b5a..a1e2fccbc 100644
--- a/src/main/java/com/mrcrayfish/device/programs/system/ApplicationFileBrowser.java
+++ b/src/main/java/com/mrcrayfish/device/programs/system/ApplicationFileBrowser.java
@@ -1,8 +1,11 @@
package com.mrcrayfish.device.programs.system;
+import com.mrcrayfish.device.Reference;
import com.mrcrayfish.device.api.ApplicationManager;
import com.mrcrayfish.device.api.app.Icons;
+import com.mrcrayfish.device.api.registry.CDMRegister;
+import com.mrcrayfish.device.api.registry.DeviceModRegistry;
import com.mrcrayfish.device.core.Laptop;
import com.mrcrayfish.device.core.io.FileSystem;
import com.mrcrayfish.device.object.AppInfo;
@@ -12,6 +15,7 @@
import javax.annotation.Nullable;
+@CDMRegister(modId = Reference.MOD_ID, uid = "file_browser", isSystem = true)
public class ApplicationFileBrowser extends SystemApplication
{
private FileBrowser browser;
diff --git a/src/main/java/com/mrcrayfish/device/programs/system/ApplicationSettings.java b/src/main/java/com/mrcrayfish/device/programs/system/ApplicationSettings.java
index 325c8d677..4ea9149cb 100644
--- a/src/main/java/com/mrcrayfish/device/programs/system/ApplicationSettings.java
+++ b/src/main/java/com/mrcrayfish/device/programs/system/ApplicationSettings.java
@@ -1,5 +1,6 @@
package com.mrcrayfish.device.programs.system;
+import com.mrcrayfish.device.Reference;
import com.mrcrayfish.device.api.ApplicationManager;
import com.mrcrayfish.device.api.app.Dialog;
import com.mrcrayfish.device.api.app.Icons;
@@ -7,6 +8,8 @@
import com.mrcrayfish.device.api.app.component.Button;
import com.mrcrayfish.device.api.app.component.CheckBox;
import com.mrcrayfish.device.api.app.component.ComboBox;
+import com.mrcrayfish.device.api.registry.CDMRegister;
+import com.mrcrayfish.device.api.registry.DeviceModRegistry;
import com.mrcrayfish.device.api.app.renderer.ItemRenderer;
import com.mrcrayfish.device.api.utils.RenderUtil;
import com.mrcrayfish.device.core.Laptop;
@@ -26,6 +29,7 @@
import java.util.List;
import java.util.Stack;
+@CDMRegister(modId = Reference.MOD_ID, uid = "settings", isSystem = true)
public class ApplicationSettings extends SystemApplication
{
private Button buttonPrevious;
diff --git a/src/main/java/com/mrcrayfish/device/programs/system/task/TaskAdd.java b/src/main/java/com/mrcrayfish/device/programs/system/task/TaskAdd.java
index 4860f96c9..f4f54fd0c 100644
--- a/src/main/java/com/mrcrayfish/device/programs/system/task/TaskAdd.java
+++ b/src/main/java/com/mrcrayfish/device/programs/system/task/TaskAdd.java
@@ -1,5 +1,7 @@
package com.mrcrayfish.device.programs.system.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.api.utils.BankUtil;
import com.mrcrayfish.device.programs.system.object.Account;
@@ -7,6 +9,7 @@
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
+@CDMRegister(modId = Reference.MOD_ID, uid = "bank_add")
public class TaskAdd extends Task
{
private int amount;
diff --git a/src/main/java/com/mrcrayfish/device/programs/system/task/TaskDeposit.java b/src/main/java/com/mrcrayfish/device/programs/system/task/TaskDeposit.java
index a5f598d51..c9b18f7b5 100644
--- a/src/main/java/com/mrcrayfish/device/programs/system/task/TaskDeposit.java
+++ b/src/main/java/com/mrcrayfish/device/programs/system/task/TaskDeposit.java
@@ -1,5 +1,7 @@
package com.mrcrayfish.device.programs.system.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.api.utils.BankUtil;
import com.mrcrayfish.device.programs.system.object.Account;
@@ -12,6 +14,7 @@
/**
* Author: MrCrayfish
*/
+@CDMRegister(modId = Reference.MOD_ID, uid = "bank_deposit")
public class TaskDeposit extends Task
{
private int amount;
diff --git a/src/main/java/com/mrcrayfish/device/programs/system/task/TaskGetBalance.java b/src/main/java/com/mrcrayfish/device/programs/system/task/TaskGetBalance.java
index ff00d759e..074059a61 100644
--- a/src/main/java/com/mrcrayfish/device/programs/system/task/TaskGetBalance.java
+++ b/src/main/java/com/mrcrayfish/device/programs/system/task/TaskGetBalance.java
@@ -1,5 +1,7 @@
package com.mrcrayfish.device.programs.system.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.api.utils.BankUtil;
import com.mrcrayfish.device.programs.system.object.Account;
@@ -7,6 +9,7 @@
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
+@CDMRegister(modId = Reference.MOD_ID, uid = "bank_get_balance")
public class TaskGetBalance extends Task
{
private int balance;
diff --git a/src/main/java/com/mrcrayfish/device/programs/system/task/TaskPay.java b/src/main/java/com/mrcrayfish/device/programs/system/task/TaskPay.java
index 24ccfb68e..381dca439 100644
--- a/src/main/java/com/mrcrayfish/device/programs/system/task/TaskPay.java
+++ b/src/main/java/com/mrcrayfish/device/programs/system/task/TaskPay.java
@@ -1,5 +1,7 @@
package com.mrcrayfish.device.programs.system.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.api.utils.BankUtil;
import com.mrcrayfish.device.programs.system.object.Account;
@@ -9,6 +11,7 @@
import java.util.UUID;
+@CDMRegister(modId = Reference.MOD_ID, uid = "bank_pay")
public class TaskPay extends Task
{
private String uuid;
diff --git a/src/main/java/com/mrcrayfish/device/programs/system/task/TaskRemove.java b/src/main/java/com/mrcrayfish/device/programs/system/task/TaskRemove.java
index 8decd6f0a..f802a6b59 100644
--- a/src/main/java/com/mrcrayfish/device/programs/system/task/TaskRemove.java
+++ b/src/main/java/com/mrcrayfish/device/programs/system/task/TaskRemove.java
@@ -1,5 +1,7 @@
package com.mrcrayfish.device.programs.system.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.api.utils.BankUtil;
import com.mrcrayfish.device.programs.system.object.Account;
@@ -7,6 +9,7 @@
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
+@CDMRegister(modId = Reference.MOD_ID, uid = "bank_remove")
public class TaskRemove extends Task
{
private int amount;
diff --git a/src/main/java/com/mrcrayfish/device/programs/system/task/TaskUpdateApplicationData.java b/src/main/java/com/mrcrayfish/device/programs/system/task/TaskUpdateApplicationData.java
index 53e676920..102a37dc3 100644
--- a/src/main/java/com/mrcrayfish/device/programs/system/task/TaskUpdateApplicationData.java
+++ b/src/main/java/com/mrcrayfish/device/programs/system/task/TaskUpdateApplicationData.java
@@ -1,5 +1,7 @@
package com.mrcrayfish.device.programs.system.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.tileentity.TileEntityLaptop;
import net.minecraft.entity.player.EntityPlayer;
@@ -10,6 +12,7 @@
import javax.annotation.Nonnull;
+@CDMRegister(modId = Reference.MOD_ID, uid = "update_app_data")
public class TaskUpdateApplicationData extends Task
{
private int x, y, z;
diff --git a/src/main/java/com/mrcrayfish/device/programs/system/task/TaskUpdateSystemData.java b/src/main/java/com/mrcrayfish/device/programs/system/task/TaskUpdateSystemData.java
index adc54dfdc..6f071286e 100644
--- a/src/main/java/com/mrcrayfish/device/programs/system/task/TaskUpdateSystemData.java
+++ b/src/main/java/com/mrcrayfish/device/programs/system/task/TaskUpdateSystemData.java
@@ -1,5 +1,7 @@
package com.mrcrayfish.device.programs.system.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.tileentity.TileEntityLaptop;
import net.minecraft.entity.player.EntityPlayer;
@@ -8,6 +10,7 @@
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
+@CDMRegister(modId = Reference.MOD_ID, uid = "update_system_data")
public class TaskUpdateSystemData extends Task
{
private BlockPos pos;
diff --git a/src/main/java/com/mrcrayfish/device/programs/system/task/TaskWithdraw.java b/src/main/java/com/mrcrayfish/device/programs/system/task/TaskWithdraw.java
index 73dd6db14..258e468dd 100644
--- a/src/main/java/com/mrcrayfish/device/programs/system/task/TaskWithdraw.java
+++ b/src/main/java/com/mrcrayfish/device/programs/system/task/TaskWithdraw.java
@@ -1,5 +1,7 @@
package com.mrcrayfish.device.programs.system.task;
+import com.mrcrayfish.device.Reference;
+import com.mrcrayfish.device.api.registry.CDMRegister;
import com.mrcrayfish.device.api.task.Task;
import com.mrcrayfish.device.api.utils.BankUtil;
import com.mrcrayfish.device.programs.system.object.Account;
@@ -13,6 +15,7 @@
/**
* Author: MrCrayfish
*/
+@CDMRegister(modId = Reference.MOD_ID, uid = "bank_withdraw")
public class TaskWithdraw extends Task
{
private int amount;
diff --git a/src/main/java/com/mrcrayfish/device/proxy/ClientProxy.java b/src/main/java/com/mrcrayfish/device/proxy/ClientProxy.java
index f775b3786..95c3c50cb 100644
--- a/src/main/java/com/mrcrayfish/device/proxy/ClientProxy.java
+++ b/src/main/java/com/mrcrayfish/device/proxy/ClientProxy.java
@@ -7,6 +7,7 @@
import com.mrcrayfish.device.api.app.Application;
import com.mrcrayfish.device.api.print.IPrint;
import com.mrcrayfish.device.api.print.PrintingManager;
+import com.mrcrayfish.device.api.registry.BasicContainer;
import com.mrcrayfish.device.core.Laptop;
import com.mrcrayfish.device.core.client.ClientNotification;
import com.mrcrayfish.device.object.AppInfo;
@@ -48,6 +49,7 @@ public void preInit()
@Override
public void init()
{
+ super.init();
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLaptop.class, new LaptopRenderer());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPrinter.class, new PrinterRenderer());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPaper.class, new PaperRenderer());
@@ -142,11 +144,16 @@ private void updateIcon(AppInfo info, int iconU, int iconV)
ReflectionHelper.setPrivateValue(AppInfo.class, info, iconV, "iconV");
}
+ @Override
+ public Application registerApplication(BasicContainer app){
+ return registerApplication(new AppInfo(app.getId(), app.isSystem()), app.getContainedClass());
+ }
+
@Nullable
@Override
- public Application registerApplication(ResourceLocation identifier, Class extends Application> clazz)
+ public Application registerApplication(AppInfo info, Class extends Application> clazz)
{
- if("minecraft".equals(identifier.getResourceDomain()))
+ if("minecraft".equals(info.getId().getResourceDomain()))
{
throw new IllegalArgumentException("Invalid identifier domain");
}
@@ -164,7 +171,8 @@ public Application registerApplication(ResourceLocation identifier, Class exte
modifiers.setAccessible(true);
modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL);
- field.set(application, generateAppInfo(identifier, clazz));
+ info.reload();
+ field.set(application, info);
return application;
}
diff --git a/src/main/java/com/mrcrayfish/device/proxy/CommonProxy.java b/src/main/java/com/mrcrayfish/device/proxy/CommonProxy.java
index 521ad2638..2801d1ba4 100644
--- a/src/main/java/com/mrcrayfish/device/proxy/CommonProxy.java
+++ b/src/main/java/com/mrcrayfish/device/proxy/CommonProxy.java
@@ -1,13 +1,16 @@
package com.mrcrayfish.device.proxy;
import com.mrcrayfish.device.api.app.Application;
+import com.mrcrayfish.device.api.registry.BasicContainer;
+import com.mrcrayfish.device.api.registry.DeviceModRegistry;
+import com.mrcrayfish.device.api.registry.app.ApplicationRegistry;
import com.mrcrayfish.device.api.print.IPrint;
+import com.mrcrayfish.device.api.registry.task.TaskRegistry;
import com.mrcrayfish.device.init.DeviceBlocks;
import com.mrcrayfish.device.network.PacketHandler;
import com.mrcrayfish.device.network.task.MessageSyncApplications;
import com.mrcrayfish.device.network.task.MessageSyncConfig;
import com.mrcrayfish.device.object.AppInfo;
-import com.mrcrayfish.device.programs.system.SystemApplication;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.Items;
import net.minecraft.nbt.NBTTagCompound;
@@ -24,6 +27,8 @@
import java.util.Collections;
import java.util.List;
+import static com.mrcrayfish.device.MrCrayfishDeviceMod.asmTable;
+
public class CommonProxy
{
List allowedApps;
@@ -32,27 +37,36 @@ public class CommonProxy
public void preInit()
{
MinecraftForge.EVENT_BUS.register(this);
+ registerRegistryPlugins();
+ }
+
+ private void registerRegistryPlugins(){
+ DeviceModRegistry.addCDMRegistry(ApplicationRegistry.class);
+ DeviceModRegistry.addCDMRegistry(TaskRegistry.class);
}
- public void init() {}
+ public void init() {
+ DeviceModRegistry.startRegistries(asmTable);
+ }
public void postInit() {}
+ public Application registerApplication(BasicContainer app){
+ if(allowedApps == null){
+ allowedApps = new ArrayList<>();
+ }
+ allowedApps.add(new AppInfo(app.getId(), app.isSystem()));
+ return null;
+ }
+
@Nullable
- public Application registerApplication(ResourceLocation identifier, Class extends Application> clazz)
+ public Application registerApplication(AppInfo info, Class extends Application> clazz)
{
if(allowedApps == null)
{
allowedApps = new ArrayList<>();
}
- if(SystemApplication.class.isAssignableFrom(clazz))
- {
- allowedApps.add(new AppInfo(identifier, true));
- }
- else
- {
- allowedApps.add(new AppInfo(identifier, false));
- }
+ allowedApps.add(info);
return null;
}