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 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 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 cls = clazz.asSubclass(getRequiredSuperclass()); + addItem(ann, cls); + } + } + } + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } + } + + public abstract void addItem(CDMRegister annotation, Class annotatedClass); + public abstract void registerItems(Set 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, ?>> cls){ + try { + final CDMRegistry, ?> instance = cls.newInstance(); + REGISTRIES.put(instance.getRegistryId(), instance); + } catch (InstantiationException | IllegalAccessException e) { + e.printStackTrace(); + } + } + + public static void startRegistries(ASMDataTable dataTable){ + for(CDMRegistry reg : REGISTRIES.values()){ + reg.populate(dataTable); + reg.registerItems(reg.registry); + } + } + + @Nullable + public static CDMRegistry, ?> getRegistry(String name){ + final Optional optional = REGISTRIES.values().stream().filter(it -> it.getRegistryId().getResourcePath().equals(name)).findFirst(); + if(optional.isPresent()){ + return (CDMRegistry, ?>) 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 annotatedClass) { + final BasicContainer app = newAppContainer(item, annotatedClass); + this.registry.add(app); + } + + @Override + public Class getRequiredSuperclass() { + return Application.class; + } + + @Override + public void registerItems(Set 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 clazz){ + MrCrayfishDeviceMod.getLogger().info("Constructing new app container..."); + final BasicContainer ret = new BasicContainer(){ + + @Override + public BasicContainer getType() { + return this; + } + + @Override + public Class 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 annotatedClass) { + final BasicContainer task = newTaskContainer(annotation, annotatedClass); + this.registry.add(task); + } + + private static BasicContainer newTaskContainer(CDMRegister app, Class clazz){ + return new BasicContainer() { + + @Override + public BasicContainer getType() { + return this; + } + + @Override + public Class 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 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 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 clazz) + public Application registerApplication(AppInfo info, Class 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 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 clazz) + public Application registerApplication(AppInfo info, Class 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; }