From c5a0b9f5a06a20dc00e02a8f93723900bb5c3166 Mon Sep 17 00:00:00 2001 From: mjarduk Date: Sat, 27 Sep 2025 11:51:05 +0300 Subject: [PATCH 01/10] Let's start with getting rid of forge. --- Forge/build.gradle | 58 ------------------- Forge/gradle.properties | 1 - .../forge/client/OCReloadedClient.java | 21 ------- .../forge/common/ForgeEventBus.java | 18 ------ .../ocreloaded/forge/common/OCReloaded.java | 25 -------- Forge/src/main/resources/META-INF/mods.toml | 35 ----------- Forge/src/main/resources/pack.mcmeta | 6 -- build.gradle | 2 +- gradle.properties | 2 - settings.gradle | 2 +- 10 files changed, 2 insertions(+), 168 deletions(-) delete mode 100644 Forge/build.gradle delete mode 100644 Forge/gradle.properties delete mode 100644 Forge/src/main/java/li/cil/ocreloaded/forge/client/OCReloadedClient.java delete mode 100644 Forge/src/main/java/li/cil/ocreloaded/forge/common/ForgeEventBus.java delete mode 100644 Forge/src/main/java/li/cil/ocreloaded/forge/common/OCReloaded.java delete mode 100644 Forge/src/main/resources/META-INF/mods.toml delete mode 100644 Forge/src/main/resources/pack.mcmeta diff --git a/Forge/build.gradle b/Forge/build.gradle deleted file mode 100644 index a917b70..0000000 --- a/Forge/build.gradle +++ /dev/null @@ -1,58 +0,0 @@ -plugins { - id 'com.github.johnrengelman.shadow' -} - -loom { - forge { - mixinConfig "ocreloaded.mixins.json" - } -} - -architectury { - platformSetupLoomIde() - forge() -} - -configurations { - common { - canBeResolved = true - canBeConsumed = false - } - compileClasspath.extendsFrom common - runtimeClasspath.extendsFrom common - developmentForge.extendsFrom common - - // Files in this configuration will be bundled into your mod using the Shadow plugin. - // Don't use the `shadow` configuration from the plugin itself as it's meant for excluding files. - shadowBundle { - canBeResolved = true - canBeConsumed = false - } -} - -dependencies { - forge "net.minecraftforge:forge:$rootProject.forge_version" - - // Architectury API. This is optional, and you can comment it out if you don't need it. - modImplementation "dev.architectury:architectury-forge:$rootProject.architectury_api_version" - - common(project(path: ':Minecraft', configuration: 'namedElements')) { transitive false } - shadowBundle project(path: ':Minecraft', configuration: 'transformProductionForge') -} - -processResources { - inputs.property 'version', project.version - - filesMatching('META-INF/mods.toml') { - expand version: project.version - } -} - -shadowJar { - configurations = [project.configurations.shadowBundle] - archiveClassifier = 'dev-shadow' -} - -remapJar { - input.set shadowJar.archiveFile -} diff --git a/Forge/gradle.properties b/Forge/gradle.properties deleted file mode 100644 index 37f3cc5..0000000 --- a/Forge/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -loom.platform = forge \ No newline at end of file diff --git a/Forge/src/main/java/li/cil/ocreloaded/forge/client/OCReloadedClient.java b/Forge/src/main/java/li/cil/ocreloaded/forge/client/OCReloadedClient.java deleted file mode 100644 index 33079d1..0000000 --- a/Forge/src/main/java/li/cil/ocreloaded/forge/client/OCReloadedClient.java +++ /dev/null @@ -1,21 +0,0 @@ -package li.cil.ocreloaded.forge.client; - -import li.cil.ocreloaded.minecraft.client.CommonClientHooks; -import li.cil.ocreloaded.minecraft.client.registry.ClientRegistered; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; - -public class OCReloadedClient { - - public OCReloadedClient() { - FMLJavaModLoadingContext.get().getModEventBus().register(this); - ClientRegistered.setup(); - } - - @SubscribeEvent - public void clientSetup(FMLClientSetupEvent event) { - CommonClientHooks.setup(); - } - -} diff --git a/Forge/src/main/java/li/cil/ocreloaded/forge/common/ForgeEventBus.java b/Forge/src/main/java/li/cil/ocreloaded/forge/common/ForgeEventBus.java deleted file mode 100644 index 902b7a4..0000000 --- a/Forge/src/main/java/li/cil/ocreloaded/forge/common/ForgeEventBus.java +++ /dev/null @@ -1,18 +0,0 @@ -package li.cil.ocreloaded.forge.common; - -import li.cil.ocreloaded.minecraft.common.OCReloadedCommon; -import li.cil.ocreloaded.minecraft.server.CommonServerHooks; -import net.minecraftforge.event.server.ServerStartedEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; - -@Mod.EventBusSubscriber(modid = OCReloadedCommon.MOD_ID, bus = Bus.FORGE) -public class ForgeEventBus { - - @SubscribeEvent - public void onServerStart(ServerStartedEvent event) { - CommonServerHooks.setup(event.getServer()); - } - -} diff --git a/Forge/src/main/java/li/cil/ocreloaded/forge/common/OCReloaded.java b/Forge/src/main/java/li/cil/ocreloaded/forge/common/OCReloaded.java deleted file mode 100644 index 8324572..0000000 --- a/Forge/src/main/java/li/cil/ocreloaded/forge/common/OCReloaded.java +++ /dev/null @@ -1,25 +0,0 @@ -package li.cil.ocreloaded.forge.common; - - -import dev.architectury.platform.forge.EventBuses; -import li.cil.ocreloaded.forge.client.OCReloadedClient; -import li.cil.ocreloaded.minecraft.common.OCReloadedCommon; -import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; - -@Mod(OCReloadedCommon.MOD_ID) -public class OCReloaded { - - public OCReloaded() { - MinecraftForge.EVENT_BUS.register(new ForgeEventBus()); - EventBuses.registerModEventBus(OCReloadedCommon.MOD_ID, FMLJavaModLoadingContext.get().getModEventBus()); - DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> OCReloadedClient::new); - - CommonRegistered.initialize(); - } - -} \ No newline at end of file diff --git a/Forge/src/main/resources/META-INF/mods.toml b/Forge/src/main/resources/META-INF/mods.toml deleted file mode 100644 index eba9442..0000000 --- a/Forge/src/main/resources/META-INF/mods.toml +++ /dev/null @@ -1,35 +0,0 @@ -modLoader="javafml" -loaderVersion="[46,)" - -license="See the LICENSE file included in the source code of this mod" - -[[mods]] -modId="ocreloaded" -version="${version}" -displayName="OpenComputers Reloaded" -displayURL="https://oc.cil.li/" -logoFile="assets/ocreloaded/textures/gui/logo.png" -credits="Based on the original OpenComputers mod, which was inspired by a few mods, most notably ComputerCraft." -authors="EveryOS, 6TELOIV, Walkanator, timuzkas. Resources are from authors of original OpenComputers (Sangar, payonel, Vexatos and others)" -description="Bring programmable computers to Minecraft! This mod is a complete rewrite of OpenComputers, but with extra goodies." - -[[dependencies.ocreloaded]] -modId="forge" -mandatory=true -versionRange="[46,)" -ordering="NONE" -side="BOTH" - -[[dependencies.ocreloaded]] -modId="minecraft" -mandatory=true -versionRange="[1.20,]" -ordering="NONE" -side="BOTH" - -[[dependencies.ocreloaded]] -modId = "architectury" -mandatory = true -versionRange = "[11.1.17,)" -ordering = "AFTER" -side = "BOTH" \ No newline at end of file diff --git a/Forge/src/main/resources/pack.mcmeta b/Forge/src/main/resources/pack.mcmeta deleted file mode 100644 index 8248de5..0000000 --- a/Forge/src/main/resources/pack.mcmeta +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pack": { - "pack_format": 22, - "description": "OpenComputers Reloaded Resource Pack" - } -} \ No newline at end of file diff --git a/build.gradle b/build.gradle index fdb4eef..701a37f 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ allprojects { } } } -["Fabric", "Forge", "NeoForge"].each { projectName -> +["Fabric", "NeoForge"].each { projectName -> configure(project(projectName)) { apply plugin: 'com.github.johnrengelman.shadow' apply plugin: 'dev.architectury.loom' diff --git a/gradle.properties b/gradle.properties index 6b7027c..9d11d6c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,8 +11,6 @@ minecraft_version = 1.20.4 mappings_channel = official mappings_version = 1.20.4 -forge_version = 1.20.4-49.0.49 - neoforge_version = 20.4.232 fabric_loader_version=0.15.0 diff --git a/settings.gradle b/settings.gradle index e5c1dd5..4ecff16 100644 --- a/settings.gradle +++ b/settings.gradle @@ -19,4 +19,4 @@ pluginManagement { rootProject.name = 'OpenComputersReloaded' -include ":Core", ":Minecraft", ":Forge", ":Fabric", ":NeoForge" \ No newline at end of file +include ":Core", ":Minecraft", ":Fabric", ":NeoForge" \ No newline at end of file From 474a65b0b783894a654fc2c1e57dbec795560158 Mon Sep 17 00:00:00 2001 From: mjarduk Date: Sun, 28 Sep 2025 17:35:37 +0300 Subject: [PATCH 02/10] I tamed the elephant. --- .github/workflows/check-crlf.yml | 2 +- .gitignore | 6 +- Core/build.gradle | 3 - Fabric/build.gradle | 72 --- Fabric/src/main/resources/fabric.mod.json | 25 - Minecraft/build.gradle | 38 -- NeoForge/build.gradle | 59 --- .../neoforge/common/OCReloaded.java | 33 -- build.gradle | 111 ---- buildSrc/build.gradle.kts | 12 + buildSrc/settings.gradle.kts | 7 + buildSrc/src/main/kotlin/oc-common.gradle.kts | 16 + buildSrc/src/main/kotlin/oc-loader.gradle.kts | 32 ++ .../src/main/kotlin/oc-neo-based.gradle.kts | 27 + gradle.properties | 21 +- gradle/libs.versions.toml | 39 +- gradle/wrapper/gradle-wrapper.properties | 2 +- projects/Core/build.gradle.kts | 24 + .../core/component/ComputerComponent.java | 0 .../core/component/DataCardComponent.java | 0 .../core/component/EepromComponent.java | 0 .../core/component/FileSystemComponent.java | 0 .../component/GraphicsBindableComponent.java | 0 .../core/component/GraphicsCardComponent.java | 0 .../core/component/InternetComponent.java | 0 .../core/component/KeyboardComponent.java | 13 +- .../core/component/ScreenComponentBase.java | 0 .../core/filesystem/ArchiveFileSystem.java | 0 .../core/filesystem/DirectoryFileSystem.java | 0 .../filesystem/FSStreamHandleTracker.java | 0 .../core/filesystem/InMemoryFileSystem.java | 0 .../filesystem/InputStreamFileHandle.java | 0 .../filesystem/OutputStreamFileHandle.java | 0 .../filesystem/memory/InMemoryDirectory.java | 0 .../core/filesystem/memory/InMemoryFile.java | 0 .../core/filesystem/memory/InMemoryNode.java | 0 .../core/graphics/TextModeBuffer.java | 0 .../core/graphics/color/ColorMode.java | 0 .../graphics/color/EightBitColorMode.java | 0 .../core/graphics/color/FourBitColorMode.java | 0 .../color/MutablePaletteColorMode.java | 0 .../core/graphics/color/OneBitColorMode.java | 0 .../core/graphics/imp/TextModeBufferImp.java | 0 .../core/machine/AbstractValue.java | 0 .../cil/ocreloaded/core/machine/Machine.java | 0 .../core/machine/MachineActions.java | 0 .../core/machine/MachineCodeRegistry.java | 0 .../core/machine/MachineParameters.java | 0 .../core/machine/MachineProcessor.java | 0 .../core/machine/MachineRegistry.java | 0 .../core/machine/MachineRegistryEntry.java | 0 .../core/machine/MachineResult.java | 0 .../cil/ocreloaded/core/machine/PathUtil.java | 0 .../ocreloaded/core/machine/Persistable.java | 0 .../core/machine/PersistenceHolder.java | 0 .../li/cil/ocreloaded/core/machine/Value.java | 0 .../machine/architecture/Architecture.java | 0 .../architecture/ArchitectureMachine.java | 0 .../architecture/luac/LuaCArchitecture.java | 0 .../luac/LuaCComponentCallArguments.java | 0 .../architecture/luac/LuaCStateFactory.java | 0 .../luac/api/APIRegistrationUtil.java | 0 .../architecture/luac/api/ComponentAPI.java | 0 .../architecture/luac/api/ComputerAPI.java | 0 .../machine/architecture/luac/api/OSAPI.java | 0 .../architecture/luac/api/SystemAPI.java | 0 .../architecture/luac/api/UnicodeAPI.java | 0 .../machine/component/AnnotatedComponent.java | 0 .../core/machine/component/Component.java | 0 .../core/machine/component/ComponentCall.java | 0 .../component/ComponentCallArguments.java | 0 .../component/ComponentCallContext.java | 0 .../machine/component/ComponentMethod.java | 0 .../core/machine/filesystem/FileHandle.java | 0 .../core/machine/filesystem/FileSystem.java | 0 .../core/machine/imp/MachineProcessorImp.java | 0 .../li/cil/ocreloaded/core/misc/Label.java | 0 .../ocreloaded/core/misc/imp/LabelImp.java | 0 .../cil/ocreloaded/core/network/Network.java | 0 .../core/network/NetworkMessage.java | 0 .../ocreloaded/core/network/NetworkNode.java | 0 .../core/network/NetworkNodeHolder.java | 0 .../core/network/imp/NetworkImp.java | 0 .../core/util/ExtendedUnicodeUtil.java | 0 .../li/cil/ocreloaded/core/util/FileUtil.java | 0 .../li/cil/ocreloaded/core/util/TextUtil.java | 0 .../core/util/TimeFormatterUtil.java | 0 projects/Fabric/build.gradle.kts | 22 + .../fabric/client/OCReloadedClient.java | 3 - .../ocreloaded/fabric/common/OCReloaded.java | 2 - .../Fabric/src/main/resources/fabric.mod.json | 25 + projects/Minecraft/build.gradle.kts | 53 ++ .../minecraft/client/ColorHandlers.java | 0 .../minecraft/client/CommonClientHooks.java | 0 .../client/assets/ClientTextures.java | 0 .../client/registry/ClientRegistered.java | 2 +- .../entity/AmbientOcclusionCalculator.java | 0 .../client/renderer/entity/CaseRenderer.java | 0 .../client/renderer/entity/RenderUtil.java | 0 .../entity/screen/DrawingContext.java | 0 .../screen/GuiGraphicsDrawingContext.java | 0 .../MultiBufferSourceDrawingContext.java | 0 .../entity/screen/ScreenDisplayRenderer.java | 0 .../entity/screen/ScreenRenderer.java | 0 .../minecraft/client/screen/CaseScreen.java | 0 .../minecraft/client/screen/ScreenScreen.java | 0 .../client/screen/widget/ButtonWidget.java | 0 .../minecraft/client/sound/BeepSound.java | 0 .../minecraft/client/sound/SoundPlayer.java | 0 .../minecraft/common/OCReloadedCommon.java | 0 .../minecraft/common/SettingsConstants.java | 0 .../minecraft/common/WorldConstants.java | 0 .../minecraft/common/WorldUtil.java | 0 .../common/assets/SharedTextures.java | 0 .../minecraft/common/block/CaseBlock.java | 0 .../minecraft/common/block/KeyboardBlock.java | 0 .../minecraft/common/block/ScreenBlock.java | 500 +++++++++--------- .../minecraft/common/block/TieredBlock.java | 0 .../component/ComponentNetworkNode.java | 0 .../component/ComponentNetworkUtil.java | 0 .../common/container/BasicContainer.java | 0 .../common/entity/BlockEntityTicker.java | 0 .../common/entity/CaseBlockEntity.java | 0 .../common/entity/ComponentTileEntity.java | 0 .../common/entity/KeyboardBlockEntity.java | 0 .../common/entity/ScreenBlockEntity.java | 310 +++++------ .../common/entity/TickableEntity.java | 0 .../integration/vanilla/VanillaRecipes.java | 0 .../minecraft/common/item/CPUItem.java | 0 .../minecraft/common/item/ComponentItem.java | 0 .../minecraft/common/item/DataCardItem.java | 0 .../minecraft/common/item/EepromItem.java | 0 .../minecraft/common/item/FloppyDiskItem.java | 0 .../common/item/GraphicsCardItem.java | 0 .../minecraft/common/item/HardDiskItem.java | 0 .../minecraft/common/item/LuaEepromItem.java | 0 .../minecraft/common/item/ManualItem.java | 0 .../minecraft/common/item/MemoryItem.java | 0 .../minecraft/common/item/TieredItem.java | 0 .../minecraft/common/menu/CaseMenu.java | 0 .../common/menu/ComponentHighlightHint.java | 56 +- .../common/menu/ComponentQuickMove.java | 0 .../minecraft/common/menu/ComponentSlot.java | 0 .../minecraft/common/menu/ScreenMenu.java | 0 .../menu/provider/ScreenMenuProvider.java | 0 .../network/ClientNetworkMessageContext.java | 0 .../common/network/NetworkHandler.java | 0 .../common/network/NetworkInterface.java | 0 .../common/network/NetworkMessage.java | 0 .../minecraft/common/network/NetworkUtil.java | 0 .../network/ServerNetworkMessageContext.java | 0 .../network/power/PowerNetworkHandler.java | 0 .../network/power/PowerNetworkMessage.java | 0 .../screen/NetworkedTextModeBufferProxy.java | 0 .../network/screen/ScreenNetworkHandler.java | 0 .../screen/ScreenNetworkInputMessages.java | 0 .../network/screen/ScreenNetworkMessage.java | 0 .../network/sound/SoundNetworkHandler.java | 0 .../network/sound/SoundNetworkMessage.java | 0 .../persistence/NBTPersistenceHolder.java | 0 .../common/recipe/RecipeException.java | 0 .../common/recipe/RecipeProcessor.java | 0 .../recipe/RecipeRegistrationDelegate.java | 0 .../minecraft/common/recipe/Recipes.java | 0 .../common/registry/ClientBridge.java | 0 .../common/registry/CommonRegistered.java | 0 .../common/sound/SoundPlayerProvider.java | 0 .../minecraft/common/util/Colors.java | 0 .../minecraft/common/util/ItemList.java | 0 .../minecraft/common/util/KeyMappings.java | 0 .../minecraft/common/util/RotationHelper.java | 130 ++--- .../minecraft/server/CommonServerHooks.java | 0 .../server/machine/MachineSetup.java | 0 .../fssup/FileSystemSupplierRegistry.java | 0 .../fssup/LocalFileSystemSupplier.java | 0 .../machine/fssup/LootFileSystemSupplier.java | 0 .../server/machine/lua/LuaCFactory.java | 0 .../machine/lua/LuaMachineRegistryEntry.java | 0 .../src/main/resources/LICENSE-jnlua.txt | 0 .../src/main/resources/LICENSE-luaj.txt | 0 .../Minecraft}/src/main/resources/LICENSE.txt | 0 .../assets/ocreloaded/blockstates/case1.json | 0 .../assets/ocreloaded/blockstates/case2.json | 0 .../assets/ocreloaded/blockstates/case3.json | 0 .../ocreloaded/blockstates/casecreative.json | 0 .../ocreloaded/blockstates/keyboard.json | 0 .../ocreloaded/blockstates/screen1.json | 0 .../ocreloaded/blockstates/screen2.json | 0 .../ocreloaded/blockstates/screen3.json | 0 .../assets/ocreloaded/lang/en_us.json | 0 .../assets/ocreloaded/models/block/case.json | 0 .../ocreloaded/models/block/case_running.json | 0 .../ocreloaded/models/block/keyboard.json | 0 .../ocreloaded/models/block/screen.json | 0 .../models/block/screen/screen_ceiling.json | 0 .../block/screen/screen_ceiling_down.json | 0 .../screen/screen_ceiling_down_left.json | 0 .../screen_ceiling_down_left_right.json | 0 .../screen/screen_ceiling_down_right.json | 0 .../block/screen/screen_ceiling_left.json | 0 .../screen/screen_ceiling_left_right.json | 0 .../block/screen/screen_ceiling_right.json | 0 .../block/screen/screen_ceiling_up.json | 0 .../block/screen/screen_ceiling_up_down.json | 0 .../screen/screen_ceiling_up_down_left.json | 0 .../screen_ceiling_up_down_left_right.json | 0 .../screen/screen_ceiling_up_down_right.json | 0 .../block/screen/screen_ceiling_up_left.json | 0 .../screen/screen_ceiling_up_left_right.json | 0 .../block/screen/screen_ceiling_up_right.json | 0 .../models/block/screen/screen_floor.json | 0 .../block/screen/screen_floor_down.json | 0 .../block/screen/screen_floor_down_left.json | 0 .../screen/screen_floor_down_left_right.json | 0 .../block/screen/screen_floor_down_right.json | 0 .../block/screen/screen_floor_left.json | 0 .../block/screen/screen_floor_left_right.json | 0 .../block/screen/screen_floor_right.json | 0 .../models/block/screen/screen_floor_up.json | 0 .../block/screen/screen_floor_up_down.json | 0 .../screen/screen_floor_up_down_left.json | 0 .../screen_floor_up_down_left_right.json | 0 .../screen/screen_floor_up_down_right.json | 0 .../block/screen/screen_floor_up_left.json | 0 .../screen/screen_floor_up_left_right.json | 0 .../block/screen/screen_floor_up_right.json | 0 .../models/block/screen/screen_wall.json | 0 .../models/block/screen/screen_wall_down.json | 0 .../block/screen/screen_wall_down_left.json | 0 .../screen/screen_wall_down_left_right.json | 0 .../block/screen/screen_wall_down_right.json | 0 .../models/block/screen/screen_wall_left.json | 0 .../block/screen/screen_wall_left_right.json | 0 .../block/screen/screen_wall_right.json | 0 .../models/block/screen/screen_wall_up.json | 0 .../block/screen/screen_wall_up_down.json | 0 .../screen/screen_wall_up_down_left.json | 0 .../screen_wall_up_down_left_right.json | 0 .../screen/screen_wall_up_down_right.json | 0 .../block/screen/screen_wall_up_left.json | 0 .../screen/screen_wall_up_left_right.json | 0 .../block/screen/screen_wall_up_right.json | 0 .../assets/ocreloaded/models/item/alu.json | 0 .../ocreloaded/models/item/arrow_keys.json | 0 .../ocreloaded/models/item/button_group.json | 0 .../assets/ocreloaded/models/item/card.json | 0 .../assets/ocreloaded/models/item/case1.json | 0 .../assets/ocreloaded/models/item/case2.json | 0 .../assets/ocreloaded/models/item/case3.json | 0 .../ocreloaded/models/item/casecreative.json | 0 .../assets/ocreloaded/models/item/chip1.json | 0 .../assets/ocreloaded/models/item/chip2.json | 0 .../assets/ocreloaded/models/item/chip3.json | 0 .../ocreloaded/models/item/chip_diamond.json | 0 .../assets/ocreloaded/models/item/cpu1.json | 0 .../assets/ocreloaded/models/item/cpu2.json | 0 .../assets/ocreloaded/models/item/cpu3.json | 0 .../assets/ocreloaded/models/item/cu.json | 0 .../ocreloaded/models/item/cutting_wire.json | 0 .../ocreloaded/models/item/datacard1.json | 0 .../ocreloaded/models/item/datacard2.json | 0 .../ocreloaded/models/item/datacard3.json | 0 .../assets/ocreloaded/models/item/disk.json | 0 .../assets/ocreloaded/models/item/eeprom.json | 0 .../ocreloaded/models/item/eeprom_lua.json | 0 .../assets/ocreloaded/models/item/flat.json | 0 .../assets/ocreloaded/models/item/floppy.json | 0 .../models/item/floppy_dyeblack.json | 0 .../models/item/floppy_dyeblue.json | 0 .../models/item/floppy_dyebrown.json | 0 .../models/item/floppy_dyecyan.json | 0 .../models/item/floppy_dyegray.json | 0 .../models/item/floppy_dyegreen.json | 0 .../models/item/floppy_dyelightblue.json | 0 .../models/item/floppy_dyelightgray.json | 0 .../models/item/floppy_dyelime.json | 0 .../models/item/floppy_dyemagenta.json | 0 .../models/item/floppy_dyeorange.json | 0 .../models/item/floppy_dyepink.json | 0 .../models/item/floppy_dyepurple.json | 0 .../ocreloaded/models/item/floppy_dyered.json | 0 .../models/item/floppy_dyewhite.json | 0 .../models/item/floppy_dyeyellow.json | 0 .../ocreloaded/models/item/floppy_openos.json | 0 .../ocreloaded/models/item/floppy_plan9k.json | 0 .../ocreloaded/models/item/graphicscard1.json | 0 .../ocreloaded/models/item/graphicscard2.json | 0 .../ocreloaded/models/item/graphicscard3.json | 0 .../models/item/harddiskdrive1.json | 0 .../models/item/harddiskdrive2.json | 0 .../models/item/harddiskdrive3.json | 0 .../ocreloaded/models/item/keyboard.json | 0 .../assets/ocreloaded/models/item/manual.json | 0 .../ocreloaded/models/item/memory1.json | 0 .../ocreloaded/models/item/memory1_5.json | 0 .../ocreloaded/models/item/memory2.json | 0 .../ocreloaded/models/item/memory2_5.json | 0 .../ocreloaded/models/item/memory3.json | 0 .../ocreloaded/models/item/memory3_5.json | 0 .../assets/ocreloaded/models/item/numpad.json | 0 .../models/item/printed_circuit_board.json | 0 .../models/item/raw_circuit_board.json | 0 .../ocreloaded/models/item/screen1.json | 0 .../ocreloaded/models/item/screen2.json | 0 .../ocreloaded/models/item/screen3.json | 0 .../ocreloaded/models/item/transistor.json | 0 .../ocreloaded/textures/block/case_back.png | Bin .../textures/block/case_back_running.png | Bin .../ocreloaded/textures/block/case_front.png | Bin .../ocreloaded/textures/block/case_side.png | Bin .../textures/block/case_side_running.png | Bin .../ocreloaded/textures/block/case_top.png | Bin .../ocreloaded/textures/block/generic_top.png | Bin .../ocreloaded/textures/block/keyboard.png | Bin .../block/overlay/case_front_running.png | Bin .../textures/block/overlay/term_blank.png | Bin .../textures/block/overlay/term_font.png | Bin .../block/screen/back_bottom_left.png | Bin .../block/screen/back_bottom_left_side.png | Bin .../block/screen/back_bottom_middle.png | Bin .../block/screen/back_bottom_middle_side.png | Bin .../block/screen/back_bottom_right.png | Bin .../block/screen/back_bottom_right_side.png | Bin .../block/screen/back_bottom_single.png | Bin .../block/screen/back_bottom_single_side.png | Bin .../block/screen/back_middle_left.png | Bin .../block/screen/back_middle_middle.png | Bin .../block/screen/back_middle_right.png | Bin .../block/screen/back_middle_single.png | Bin .../block/screen/back_single_left.png | Bin .../block/screen/back_single_left_side.png | Bin .../block/screen/back_single_middle.png | Bin .../block/screen/back_single_middle_side.png | Bin .../block/screen/back_single_right.png | Bin .../block/screen/back_single_right_side.png | Bin .../block/screen/back_single_single.png | Bin .../block/screen/back_single_single_side.png | Bin .../textures/block/screen/back_top_left.png | Bin .../textures/block/screen/back_top_middle.png | Bin .../textures/block/screen/back_top_right.png | Bin .../textures/block/screen/back_top_single.png | Bin .../block/screen/front_bottom_left.png | Bin .../block/screen/front_bottom_left_side.png | Bin .../block/screen/front_bottom_middle.png | Bin .../block/screen/front_bottom_middle_side.png | Bin .../block/screen/front_bottom_right.png | Bin .../block/screen/front_bottom_right_side.png | Bin .../block/screen/front_bottom_single.png | Bin .../block/screen/front_bottom_single_side.png | Bin .../block/screen/front_middle_left.png | Bin .../block/screen/front_middle_middle.png | Bin .../block/screen/front_middle_right.png | Bin .../block/screen/front_middle_single.png | Bin .../block/screen/front_single_left.png | Bin .../block/screen/front_single_left_side.png | Bin .../block/screen/front_single_middle.png | Bin .../block/screen/front_single_middle_side.png | Bin .../block/screen/front_single_right.png | Bin .../block/screen/front_single_right_side.png | Bin .../block/screen/front_single_single.png | Bin .../block/screen/front_single_single_side.png | Bin .../textures/block/screen/front_top_left.png | Bin .../block/screen/front_top_middle.png | Bin .../textures/block/screen/front_top_right.png | Bin .../block/screen/front_top_single.png | Bin .../textures/block/screen_front.png | Bin .../ocreloaded/textures/block/screen_side.png | Bin .../ocreloaded/textures/block/screen_top.png | Bin .../ocreloaded/textures/gui/background.png | Bin .../ocreloaded/textures/gui/borders.png | Bin .../ocreloaded/textures/gui/button_power.png | Bin .../ocreloaded/textures/gui/computer.png | Bin .../assets/ocreloaded/textures/gui/logo.png | Bin .../assets/ocreloaded/textures/gui/slot.png | Bin .../assets/ocreloaded/textures/item/alu.png | Bin .../ocreloaded/textures/item/arrow_keys.png | Bin .../ocreloaded/textures/item/button_group.png | Bin .../assets/ocreloaded/textures/item/card.png | Bin .../assets/ocreloaded/textures/item/chip1.png | Bin .../assets/ocreloaded/textures/item/chip2.png | Bin .../assets/ocreloaded/textures/item/chip3.png | Bin .../ocreloaded/textures/item/chip_diamond.png | Bin .../textures/item/circuit_board.png | Bin .../assets/ocreloaded/textures/item/cpu1.png | Bin .../assets/ocreloaded/textures/item/cpu2.png | Bin .../assets/ocreloaded/textures/item/cpu3.png | Bin .../assets/ocreloaded/textures/item/cu.png | Bin .../ocreloaded/textures/item/cutting_wire.png | Bin .../ocreloaded/textures/item/datacard1.png | Bin .../textures/item/datacard1.png.mcmeta | 0 .../ocreloaded/textures/item/datacard2.png | Bin .../textures/item/datacard2.png.mcmeta | 0 .../ocreloaded/textures/item/datacard3.png | Bin .../textures/item/datacard3.png.mcmeta | 0 .../assets/ocreloaded/textures/item/disk.png | Bin .../ocreloaded/textures/item/eeprom.png | Bin .../textures/item/floppy_dyeblack.png | Bin .../textures/item/floppy_dyeblue.png | Bin .../textures/item/floppy_dyebrown.png | Bin .../textures/item/floppy_dyecyan.png | Bin .../textures/item/floppy_dyegray.png | Bin .../textures/item/floppy_dyegreen.png | Bin .../textures/item/floppy_dyelightblue.png | Bin .../textures/item/floppy_dyelightgray.png | Bin .../textures/item/floppy_dyelime.png | Bin .../textures/item/floppy_dyemagenta.png | Bin .../textures/item/floppy_dyeorange.png | Bin .../textures/item/floppy_dyepink.png | Bin .../textures/item/floppy_dyepurple.png | Bin .../textures/item/floppy_dyered.png | Bin .../textures/item/floppy_dyewhite.png | Bin .../textures/item/floppy_dyeyellow.png | Bin .../textures/item/graphicscard1.png | Bin .../textures/item/graphicscard2.png | Bin .../textures/item/graphicscard3.png | Bin .../textures/item/harddiskdrive1.png | Bin .../textures/item/harddiskdrive2.png | Bin .../textures/item/harddiskdrive3.png | Bin .../ocreloaded/textures/item/icon/card.png | Bin .../ocreloaded/textures/item/icon/cpu.png | Bin .../ocreloaded/textures/item/icon/eeprom.png | Bin .../ocreloaded/textures/item/icon/floppy.png | Bin .../ocreloaded/textures/item/icon/hdd.png | Bin .../ocreloaded/textures/item/icon/memory.png | Bin .../ocreloaded/textures/item/icon/tier0.png | Bin .../ocreloaded/textures/item/icon/tier1.png | Bin .../ocreloaded/textures/item/icon/tier2.png | Bin .../ocreloaded/textures/item/manual.png | Bin .../ocreloaded/textures/item/memory1.png | Bin .../ocreloaded/textures/item/memory1_5.png | Bin .../ocreloaded/textures/item/memory2.png | Bin .../ocreloaded/textures/item/memory2_5.png | Bin .../ocreloaded/textures/item/memory3.png | Bin .../ocreloaded/textures/item/memory3_5.png | Bin .../ocreloaded/textures/item/numpad.png | Bin .../textures/item/printed_circuit_board.png | Bin .../textures/item/raw_circuit_board.png | Bin .../ocreloaded/textures/item/transistor.png | Bin .../ocreloaded/custom_recipes/default.recipes | 0 .../custom_recipes/hardmode.recipes | 0 .../custom_recipes/legacy_ore_dict.json | 0 .../custom_recipes/peaceful.recipes | 0 .../ocreloaded/custom_recipes/user.recipes | 0 .../data/ocreloaded/loot/openos.remap | 0 .../data/ocreloaded/loot/openos/.prop | 0 .../ocreloaded/loot/openos/bin/address.lua | 0 .../data/ocreloaded/loot/openos/bin/alias.lua | 0 .../data/ocreloaded/loot/openos/bin/cat.lua | 0 .../data/ocreloaded/loot/openos/bin/cd.lua | 0 .../data/ocreloaded/loot/openos/bin/clear.lua | 0 .../ocreloaded/loot/openos/bin/components.lua | 0 .../data/ocreloaded/loot/openos/bin/cp.lua | 0 .../data/ocreloaded/loot/openos/bin/date.lua | 0 .../data/ocreloaded/loot/openos/bin/df.lua | 0 .../data/ocreloaded/loot/openos/bin/dmesg.lua | 0 .../data/ocreloaded/loot/openos/bin/du.lua | 0 .../data/ocreloaded/loot/openos/bin/echo.lua | 0 .../data/ocreloaded/loot/openos/bin/edit.lua | 0 .../data/ocreloaded/loot/openos/bin/find.lua | 0 .../data/ocreloaded/loot/openos/bin/flash.lua | 0 .../data/ocreloaded/loot/openos/bin/free.lua | 0 .../data/ocreloaded/loot/openos/bin/grep.lua | 0 .../data/ocreloaded/loot/openos/bin/head.lua | 0 .../ocreloaded/loot/openos/bin/hostname.lua | 0 .../ocreloaded/loot/openos/bin/install.lua | 0 .../data/ocreloaded/loot/openos/bin/label.lua | 0 .../data/ocreloaded/loot/openos/bin/less.lua | 0 .../data/ocreloaded/loot/openos/bin/list.lua | 0 .../data/ocreloaded/loot/openos/bin/ln.lua | 0 .../data/ocreloaded/loot/openos/bin/ls.lua | 0 .../data/ocreloaded/loot/openos/bin/lshw.lua | 0 .../data/ocreloaded/loot/openos/bin/lua.lua | 0 .../data/ocreloaded/loot/openos/bin/man.lua | 0 .../data/ocreloaded/loot/openos/bin/mkdir.lua | 0 .../data/ocreloaded/loot/openos/bin/mktmp.lua | 0 .../data/ocreloaded/loot/openos/bin/mount.lua | 0 .../data/ocreloaded/loot/openos/bin/mv.lua | 0 .../ocreloaded/loot/openos/bin/pastebin.lua | 0 .../ocreloaded/loot/openos/bin/primary.lua | 0 .../data/ocreloaded/loot/openos/bin/ps.lua | 0 .../data/ocreloaded/loot/openos/bin/pwd.lua | 0 .../data/ocreloaded/loot/openos/bin/rc.lua | 0 .../ocreloaded/loot/openos/bin/reboot.lua | 0 .../ocreloaded/loot/openos/bin/redstone.lua | 0 .../ocreloaded/loot/openos/bin/resolution.lua | 0 .../data/ocreloaded/loot/openos/bin/rm.lua | 0 .../data/ocreloaded/loot/openos/bin/rmdir.lua | 0 .../data/ocreloaded/loot/openos/bin/set.lua | 0 .../data/ocreloaded/loot/openos/bin/sh.lua | 0 .../ocreloaded/loot/openos/bin/shutdown.lua | 0 .../data/ocreloaded/loot/openos/bin/sleep.lua | 0 .../ocreloaded/loot/openos/bin/source.lua | 0 .../data/ocreloaded/loot/openos/bin/time.lua | 0 .../data/ocreloaded/loot/openos/bin/touch.lua | 0 .../data/ocreloaded/loot/openos/bin/tree.lua | 0 .../ocreloaded/loot/openos/bin/umount.lua | 0 .../ocreloaded/loot/openos/bin/unalias.lua | 0 .../data/ocreloaded/loot/openos/bin/unset.lua | 0 .../ocreloaded/loot/openos/bin/uptime.lua | 0 .../ocreloaded/loot/openos/bin/useradd.lua | 0 .../ocreloaded/loot/openos/bin/userdel.lua | 0 .../data/ocreloaded/loot/openos/bin/wget.lua | 0 .../data/ocreloaded/loot/openos/bin/which.lua | 0 .../data/ocreloaded/loot/openos/bin/yes.lua | 0 .../ocreloaded/loot/openos/boot/00_base.lua | 0 .../loot/openos/boot/01_process.lua | 0 .../ocreloaded/loot/openos/boot/02_os.lua | 0 .../ocreloaded/loot/openos/boot/03_io.lua | 0 .../loot/openos/boot/04_component.lua | 0 .../ocreloaded/loot/openos/boot/10_devfs.lua | 0 .../ocreloaded/loot/openos/boot/89_rc.lua | 0 .../loot/openos/boot/90_filesystem.lua | 0 .../ocreloaded/loot/openos/boot/91_gpu.lua | 0 .../loot/openos/boot/92_keyboard.lua | 0 .../ocreloaded/loot/openos/boot/93_term.lua | 0 .../ocreloaded/loot/openos/boot/94_shell.lua | 0 .../data/ocreloaded/loot/openos/etc/motd | 0 .../ocreloaded/loot/openos/etc/profile.lua | 0 .../data/ocreloaded/loot/openos/etc/rc.cfg | 0 .../loot/openos/etc/rc.d/example.lua | 0 .../data/ocreloaded/loot/openos/home/.shrc | 0 .../data/ocreloaded/loot/openos/init.lua | 0 .../data/ocreloaded/loot/openos/lib/bit32.lua | 0 .../ocreloaded/loot/openos/lib/buffer.lua | 0 .../ocreloaded/loot/openos/lib/colors.lua | 0 .../ocreloaded/loot/openos/lib/core/boot.lua | 0 .../loot/openos/lib/core/cursor.lua | 0 .../loot/openos/lib/core/devfs/01_hw.lua | 0 .../loot/openos/lib/core/devfs/02_utils.lua | 0 .../lib/core/devfs/adapters/computer.lua | 0 .../openos/lib/core/devfs/adapters/eeprom.lua | 0 .../lib/core/devfs/adapters/filesystem.lua | 0 .../openos/lib/core/devfs/adapters/gpu.lua | 0 .../lib/core/devfs/adapters/internet.lua | 0 .../openos/lib/core/devfs/adapters/modem.lua | 0 .../openos/lib/core/devfs/adapters/screen.lua | 0 .../loot/openos/lib/core/device_labeling.lua | 0 .../loot/openos/lib/core/full_buffer.lua | 0 .../loot/openos/lib/core/full_cursor.lua | 0 .../loot/openos/lib/core/full_event.lua | 0 .../loot/openos/lib/core/full_filesystem.lua | 0 .../loot/openos/lib/core/full_keyboard.lua | 0 .../loot/openos/lib/core/full_ls.lua | 0 .../loot/openos/lib/core/full_sh.lua | 0 .../loot/openos/lib/core/full_shell.lua | 0 .../loot/openos/lib/core/full_text.lua | 0 .../loot/openos/lib/core/full_transforms.lua | 0 .../loot/openos/lib/core/full_vt.lua | 0 .../loot/openos/lib/core/install_basics.lua | 0 .../loot/openos/lib/core/install_utils.lua | 0 .../loot/openos/lib/core/lua_shell.lua | 0 .../data/ocreloaded/loot/openos/lib/devfs.lua | 0 .../data/ocreloaded/loot/openos/lib/event.lua | 0 .../ocreloaded/loot/openos/lib/filesystem.lua | 0 .../ocreloaded/loot/openos/lib/internet.lua | 0 .../data/ocreloaded/loot/openos/lib/io.lua | 0 .../ocreloaded/loot/openos/lib/keyboard.lua | 0 .../data/ocreloaded/loot/openos/lib/note.lua | 0 .../ocreloaded/loot/openos/lib/package.lua | 0 .../data/ocreloaded/loot/openos/lib/pipe.lua | 0 .../ocreloaded/loot/openos/lib/process.lua | 0 .../data/ocreloaded/loot/openos/lib/rc.lua | 0 .../loot/openos/lib/serialization.lua | 0 .../data/ocreloaded/loot/openos/lib/sh.lua | 0 .../data/ocreloaded/loot/openos/lib/shell.lua | 0 .../data/ocreloaded/loot/openos/lib/sides.lua | 0 .../data/ocreloaded/loot/openos/lib/term.lua | 0 .../data/ocreloaded/loot/openos/lib/text.lua | 0 .../ocreloaded/loot/openos/lib/thread.lua | 0 .../openos/lib/tools/programlocations.lua | 0 .../loot/openos/lib/tools/transfer.lua | 0 .../ocreloaded/loot/openos/lib/transforms.lua | 0 .../data/ocreloaded/loot/openos/lib/tty.lua | 0 .../data/ocreloaded/loot/openos/lib/uuid.lua | 0 .../data/ocreloaded/loot/openos/lib/vt100.lua | 0 .../ocreloaded/loot/openos/usr/man/address | 0 .../data/ocreloaded/loot/openos/usr/man/alias | 0 .../data/ocreloaded/loot/openos/usr/man/cat | 0 .../data/ocreloaded/loot/openos/usr/man/cd | 0 .../data/ocreloaded/loot/openos/usr/man/clear | 0 .../data/ocreloaded/loot/openos/usr/man/cp | 0 .../data/ocreloaded/loot/openos/usr/man/date | 0 .../data/ocreloaded/loot/openos/usr/man/df | 0 .../data/ocreloaded/loot/openos/usr/man/dmesg | 0 .../data/ocreloaded/loot/openos/usr/man/echo | 0 .../data/ocreloaded/loot/openos/usr/man/edit | 0 .../data/ocreloaded/loot/openos/usr/man/grep | 0 .../data/ocreloaded/loot/openos/usr/man/head | 0 .../ocreloaded/loot/openos/usr/man/hostname | 0 .../ocreloaded/loot/openos/usr/man/install | 0 .../data/ocreloaded/loot/openos/usr/man/label | 0 .../data/ocreloaded/loot/openos/usr/man/less | 0 .../data/ocreloaded/loot/openos/usr/man/ln | 0 .../data/ocreloaded/loot/openos/usr/man/ls | 0 .../data/ocreloaded/loot/openos/usr/man/lshw | 0 .../data/ocreloaded/loot/openos/usr/man/lua | 0 .../data/ocreloaded/loot/openos/usr/man/man | 0 .../data/ocreloaded/loot/openos/usr/man/mkdir | 0 .../data/ocreloaded/loot/openos/usr/man/more | 0 .../data/ocreloaded/loot/openos/usr/man/mount | 0 .../data/ocreloaded/loot/openos/usr/man/mv | 0 .../ocreloaded/loot/openos/usr/man/pastebin | 0 .../ocreloaded/loot/openos/usr/man/primary | 0 .../data/ocreloaded/loot/openos/usr/man/pwd | 0 .../data/ocreloaded/loot/openos/usr/man/rc | 0 .../ocreloaded/loot/openos/usr/man/reboot | 0 .../ocreloaded/loot/openos/usr/man/redstone | 0 .../ocreloaded/loot/openos/usr/man/resolution | 0 .../data/ocreloaded/loot/openos/usr/man/rm | 0 .../data/ocreloaded/loot/openos/usr/man/rmdir | 0 .../data/ocreloaded/loot/openos/usr/man/set | 0 .../data/ocreloaded/loot/openos/usr/man/sh | 0 .../ocreloaded/loot/openos/usr/man/shutdown | 0 .../ocreloaded/loot/openos/usr/man/umount | 0 .../ocreloaded/loot/openos/usr/man/unalias | 0 .../data/ocreloaded/loot/openos/usr/man/unset | 0 .../ocreloaded/loot/openos/usr/man/uptime | 0 .../ocreloaded/loot/openos/usr/man/useradd | 0 .../ocreloaded/loot/openos/usr/man/userdel | 0 .../data/ocreloaded/loot/openos/usr/man/wget | 0 .../data/ocreloaded/loot/openos/usr/man/which | 0 .../data/ocreloaded/loot/openos/usr/man/yes | 0 .../loot/openos/usr/misc/greetings.txt | 0 .../data/ocreloaded/loot/plan9k.remap | 0 .../data/ocreloaded/loot/plan9k/.prop | 0 .../data/ocreloaded/loot/plan9k/bin/cat.lua | 0 .../data/ocreloaded/loot/plan9k/bin/clear.lua | 0 .../ocreloaded/loot/plan9k/bin/components.lua | 0 .../data/ocreloaded/loot/plan9k/bin/cp.lua | 0 .../data/ocreloaded/loot/plan9k/bin/dd.lua | 0 .../data/ocreloaded/loot/plan9k/bin/df.lua | 0 .../data/ocreloaded/loot/plan9k/bin/dmesg.lua | 0 .../data/ocreloaded/loot/plan9k/bin/du.lua | 0 .../data/ocreloaded/loot/plan9k/bin/echo.lua | 0 .../data/ocreloaded/loot/plan9k/bin/edit.lua | 0 .../data/ocreloaded/loot/plan9k/bin/find.lua | 0 .../data/ocreloaded/loot/plan9k/bin/getty.lua | 0 .../ocreloaded/loot/plan9k/bin/hostname.lua | 0 .../data/ocreloaded/loot/plan9k/bin/init.lua | 0 .../ocreloaded/loot/plan9k/bin/install.lua | 0 .../data/ocreloaded/loot/plan9k/bin/kill.lua | 0 .../data/ocreloaded/loot/plan9k/bin/label.lua | 0 .../data/ocreloaded/loot/plan9k/bin/ln.lua | 0 .../data/ocreloaded/loot/plan9k/bin/ls.lua | 0 .../data/ocreloaded/loot/plan9k/bin/lua.lua | 0 .../data/ocreloaded/loot/plan9k/bin/mkdir.lua | 0 .../data/ocreloaded/loot/plan9k/bin/more.lua | 0 .../ocreloaded/loot/plan9k/bin/mount.cow.lua | 0 .../data/ocreloaded/loot/plan9k/bin/mount.lua | 0 .../loot/plan9k/bin/mount.msdos.lua | 0 .../data/ocreloaded/loot/plan9k/bin/mv.lua | 0 .../ocreloaded/loot/plan9k/bin/passwd.lua | 0 .../ocreloaded/loot/plan9k/bin/pastebin.lua | 0 .../data/ocreloaded/loot/plan9k/bin/ps.lua | 0 .../data/ocreloaded/loot/plan9k/bin/pwd.lua | 0 .../data/ocreloaded/loot/plan9k/bin/rc.lua | 0 .../ocreloaded/loot/plan9k/bin/readkey.lua | 0 .../ocreloaded/loot/plan9k/bin/reboot.lua | 0 .../ocreloaded/loot/plan9k/bin/resolution.lua | 0 .../data/ocreloaded/loot/plan9k/bin/rm.lua | 0 .../ocreloaded/loot/plan9k/bin/sandbox.lua | 0 .../data/ocreloaded/loot/plan9k/bin/sh.lua | 0 .../ocreloaded/loot/plan9k/bin/shutdown.lua | 0 .../data/ocreloaded/loot/plan9k/bin/sleep.lua | 0 .../data/ocreloaded/loot/plan9k/bin/sshd.lua | 0 .../data/ocreloaded/loot/plan9k/bin/tee.lua | 0 .../data/ocreloaded/loot/plan9k/bin/touch.lua | 0 .../ocreloaded/loot/plan9k/bin/uptime.lua | 0 .../data/ocreloaded/loot/plan9k/bin/watch.lua | 0 .../data/ocreloaded/loot/plan9k/bin/wc.lua | 0 .../data/ocreloaded/loot/plan9k/bin/wget.lua | 0 .../ocreloaded/loot/plan9k/boot/kernel/pipes | 0 .../loot/plan9k/etc/rc.d/autoupdate.lua | 0 .../ocreloaded/loot/plan9k/etc/rc.d/sshd.lua | 0 .../data/ocreloaded/loot/plan9k/init.lua | 0 .../ocreloaded/loot/plan9k/lib/colors.lua | 0 .../data/ocreloaded/loot/plan9k/lib/event.lua | 0 .../ocreloaded/loot/plan9k/lib/internet.lua | 0 .../loot/plan9k/lib/modules/base/01_gc.lua | 0 .../loot/plan9k/lib/modules/base/01_util.lua | 0 .../loot/plan9k/lib/modules/base/02_cmd.lua | 0 .../loot/plan9k/lib/modules/base/05_vfs.lua | 0 .../loot/plan9k/lib/modules/base/06_cowfs.lua | 0 .../plan9k/lib/modules/base/09_rootfs.lua | 0 .../loot/plan9k/lib/modules/base/10_devfs.lua | 0 .../plan9k/lib/modules/base/10_procfs.lua | 0 .../loot/plan9k/lib/modules/base/10_sysfs.lua | 0 .../loot/plan9k/lib/modules/base/11_block.lua | 0 .../loot/plan9k/lib/modules/base/12_mount.lua | 0 .../plan9k/lib/modules/base/15_keventd.lua | 0 .../plan9k/lib/modules/base/15_userspace.lua | 0 .../plan9k/lib/modules/base/16_buffer.lua | 0 .../plan9k/lib/modules/base/16_component.lua | 0 .../plan9k/lib/modules/base/16_partition.lua | 0 .../plan9k/lib/modules/base/16_require.lua | 0 .../plan9k/lib/modules/base/17_chatbox.lua | 0 .../loot/plan9k/lib/modules/base/17_data.lua | 0 .../loot/plan9k/lib/modules/base/17_drive.lua | 0 .../plan9k/lib/modules/base/17_eeprom.lua | 0 .../loot/plan9k/lib/modules/base/17_gpt.lua | 0 .../loot/plan9k/lib/modules/base/17_io.lua | 0 .../loot/plan9k/lib/modules/base/17_ipc.lua | 0 .../plan9k/lib/modules/base/17_keyboard.lua | 0 .../loot/plan9k/lib/modules/base/17_nfc.lua | 0 .../loot/plan9k/lib/modules/base/17_tape.lua | 0 .../loot/plan9k/lib/modules/base/18_pty.lua | 0 .../plan9k/lib/modules/base/18_syscall.lua | 0 .../plan9k/lib/modules/base/19_cgroups.lua | 0 .../plan9k/lib/modules/base/19_manageg.lua | 0 .../plan9k/lib/modules/base/20_threading.lua | 0 .../plan9k/lib/modules/base/21_threadutil.lua | 0 .../loot/plan9k/lib/modules/base/21_timer.lua | 0 .../loot/plan9k/lib/modules/base/25_init.lua | 0 .../ocreloaded/loot/plan9k/lib/msdosfs.lua | 0 .../data/ocreloaded/loot/plan9k/lib/rc.lua | 0 .../loot/plan9k/lib/serialization.lua | 0 .../data/ocreloaded/loot/plan9k/lib/shell.lua | 0 .../data/ocreloaded/loot/plan9k/lib/sides.lua | 0 .../data/ocreloaded/loot/plan9k/lib/term.lua | 0 .../data/ocreloaded/loot/plan9k/lib/text.lua | 0 .../ocreloaded/loot/plan9k/usr/bin/base64.lua | 0 .../loot/plan9k/usr/bin/deflate.lua | 0 .../ocreloaded/loot/plan9k/usr/bin/go.lua | 0 .../ocreloaded/loot/plan9k/usr/bin/gpg.lua | 0 .../loot/plan9k/usr/bin/inflate.lua | 0 .../ocreloaded/loot/plan9k/usr/bin/md5sum.lua | 0 .../loot/plan9k/usr/bin/mkdosfs.lua | 0 .../ocreloaded/loot/plan9k/usr/bin/mpt.lua | 0 .../loot/plan9k/usr/bin/sha256sum.lua | 0 .../ocreloaded/loot/plan9k/usr/bin/ssh.lua | 0 .../ocreloaded/loot/plan9k/usr/lib/data.lua | 0 .../ocreloaded/loot/plan9k/usr/lib/robot.lua | 0 .../data/ocreloaded/loot/plan9k/usr/man/pipes | 0 .../loot/plan9k/usr/sbin/sshsession.lua | 0 .../loot/plan9k/var/lib/mpt/config.db | 0 .../ocreloaded/loot/plan9k/var/lib/mpt/mpt.db | 0 .../loot_tables/blocks/keyboard.json | 0 .../resources/data/ocreloaded/lua/bios.lua | 0 .../resources/data/ocreloaded/lua/machine.lua | 0 .../ocreloaded/tags/items/chip_diamond.json | 0 .../ocreloaded/tags/items/circuit_chip1.json | 0 .../ocreloaded/tags/items/circuit_chip2.json | 0 .../ocreloaded/tags/items/circuit_chip3.json | 0 .../ocreloaded/tags/items/material_alu.json | 0 .../tags/items/material_arrow_key.json | 0 .../tags/items/material_button_group.json | 0 .../ocreloaded/tags/items/material_card.json | 0 .../items/material_circuit_board_printed.json | 0 .../items/material_circuit_board_raw.json | 0 .../ocreloaded/tags/items/material_cu.json | 0 .../tags/items/material_cutting_wire.json | 0 .../ocreloaded/tags/items/material_disk.json | 0 .../tags/items/material_num_pad.json | 0 .../tags/items/material_transistor.json | 0 .../src/main/resources/ocreloaded.mixins.json | 0 .../Minecraft}/src/main/resources/pack.mcmeta | 0 projects/NeoForge/build.gradle.kts | 26 + .../NeoForge}/gradle.properties | 0 .../neoforge/client/OCReloadedClient.java | 13 +- .../neoforge/common/OCReloaded.java | 24 + .../resources/META-INF/neoforge.mods.toml | 20 +- .../src/main/resources/ocreloaded.mixins.json | 0 .../NeoForge}/src/main/resources/pack.mcmeta | 0 settings.gradle | 22 - settings.gradle.kts | 27 + {Tools => tools}/check_crlf.py | 0 766 files changed, 864 insertions(+), 913 deletions(-) delete mode 100644 Core/build.gradle delete mode 100644 Fabric/build.gradle delete mode 100644 Fabric/src/main/resources/fabric.mod.json delete mode 100644 Minecraft/build.gradle delete mode 100644 NeoForge/build.gradle delete mode 100644 NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java delete mode 100644 build.gradle create mode 100644 buildSrc/build.gradle.kts create mode 100644 buildSrc/settings.gradle.kts create mode 100644 buildSrc/src/main/kotlin/oc-common.gradle.kts create mode 100644 buildSrc/src/main/kotlin/oc-loader.gradle.kts create mode 100644 buildSrc/src/main/kotlin/oc-neo-based.gradle.kts create mode 100644 projects/Core/build.gradle.kts rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/component/ComputerComponent.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/component/DataCardComponent.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/component/EepromComponent.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/component/FileSystemComponent.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/component/GraphicsBindableComponent.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/component/GraphicsCardComponent.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/component/InternetComponent.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/component/KeyboardComponent.java (80%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/component/ScreenComponentBase.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/filesystem/ArchiveFileSystem.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/filesystem/DirectoryFileSystem.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/filesystem/FSStreamHandleTracker.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/filesystem/InMemoryFileSystem.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/filesystem/InputStreamFileHandle.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/filesystem/OutputStreamFileHandle.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/filesystem/memory/InMemoryDirectory.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/filesystem/memory/InMemoryFile.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/filesystem/memory/InMemoryNode.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/graphics/TextModeBuffer.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/graphics/color/ColorMode.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/graphics/color/EightBitColorMode.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/graphics/color/FourBitColorMode.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/graphics/color/MutablePaletteColorMode.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/graphics/color/OneBitColorMode.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/graphics/imp/TextModeBufferImp.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/AbstractValue.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/Machine.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/MachineActions.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/MachineCodeRegistry.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/MachineParameters.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/MachineProcessor.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/MachineRegistry.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/MachineRegistryEntry.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/MachineResult.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/PathUtil.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/Persistable.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/PersistenceHolder.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/Value.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/architecture/Architecture.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/architecture/ArchitectureMachine.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/LuaCArchitecture.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/LuaCComponentCallArguments.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/LuaCStateFactory.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/APIRegistrationUtil.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/ComponentAPI.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/ComputerAPI.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/OSAPI.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/SystemAPI.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/UnicodeAPI.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/component/AnnotatedComponent.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/component/Component.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentCall.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentCallArguments.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentCallContext.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentMethod.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/filesystem/FileHandle.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/filesystem/FileSystem.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/machine/imp/MachineProcessorImp.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/misc/Label.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/misc/imp/LabelImp.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/network/Network.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/network/NetworkMessage.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/network/NetworkNode.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/network/NetworkNodeHolder.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/network/imp/NetworkImp.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/util/ExtendedUnicodeUtil.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/util/FileUtil.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/util/TextUtil.java (100%) rename {Core => projects/Core}/src/main/java/li/cil/ocreloaded/core/util/TimeFormatterUtil.java (100%) create mode 100644 projects/Fabric/build.gradle.kts rename {Fabric => projects/Fabric}/src/main/java/li/cil/ocreloaded/fabric/client/OCReloadedClient.java (83%) rename {Fabric => projects/Fabric}/src/main/java/li/cil/ocreloaded/fabric/common/OCReloaded.java (99%) create mode 100644 projects/Fabric/src/main/resources/fabric.mod.json create mode 100644 projects/Minecraft/build.gradle.kts rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/ColorHandlers.java (100%) rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/CommonClientHooks.java (100%) rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/assets/ClientTextures.java (100%) rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/registry/ClientRegistered.java (93%) rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/renderer/entity/AmbientOcclusionCalculator.java (100%) rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/renderer/entity/CaseRenderer.java (100%) rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/renderer/entity/RenderUtil.java (100%) rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/DrawingContext.java (100%) rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/GuiGraphicsDrawingContext.java (100%) rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/MultiBufferSourceDrawingContext.java (100%) rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/ScreenDisplayRenderer.java (100%) rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/ScreenRenderer.java (100%) rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/screen/CaseScreen.java (100%) rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/screen/ScreenScreen.java (100%) rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/screen/widget/ButtonWidget.java (100%) rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/sound/BeepSound.java (100%) rename {Minecraft/src/client => projects/Minecraft/src/main}/java/li/cil/ocreloaded/minecraft/client/sound/SoundPlayer.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/OCReloadedCommon.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/SettingsConstants.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/WorldConstants.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/WorldUtil.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/assets/SharedTextures.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/block/CaseBlock.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/block/KeyboardBlock.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/block/ScreenBlock.java (97%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/block/TieredBlock.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/component/ComponentNetworkNode.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/component/ComponentNetworkUtil.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/container/BasicContainer.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/entity/BlockEntityTicker.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/entity/CaseBlockEntity.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ComponentTileEntity.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/entity/KeyboardBlockEntity.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ScreenBlockEntity.java (95%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/entity/TickableEntity.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/integration/vanilla/VanillaRecipes.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/item/CPUItem.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/item/ComponentItem.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/item/DataCardItem.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/item/EepromItem.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/item/FloppyDiskItem.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/item/GraphicsCardItem.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/item/HardDiskItem.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/item/LuaEepromItem.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/item/ManualItem.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/item/MemoryItem.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/item/TieredItem.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/menu/CaseMenu.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentHighlightHint.java (97%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentQuickMove.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentSlot.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ScreenMenu.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/menu/provider/ScreenMenuProvider.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/network/ClientNetworkMessageContext.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkHandler.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkInterface.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkMessage.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkUtil.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/network/ServerNetworkMessageContext.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkHandler.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkMessage.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/NetworkedTextModeBufferProxy.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkHandler.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkInputMessages.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkMessage.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkHandler.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkMessage.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/persistence/NBTPersistenceHolder.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeException.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeProcessor.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeRegistrationDelegate.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/Recipes.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/registry/ClientBridge.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/registry/CommonRegistered.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/sound/SoundPlayerProvider.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/util/Colors.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/util/ItemList.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/util/KeyMappings.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/common/util/RotationHelper.java (98%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/server/CommonServerHooks.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/server/machine/MachineSetup.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/FileSystemSupplierRegistry.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/LocalFileSystemSupplier.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/LootFileSystemSupplier.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaCFactory.java (100%) rename {Minecraft => projects/Minecraft}/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaMachineRegistryEntry.java (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/LICENSE-jnlua.txt (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/LICENSE-luaj.txt (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/LICENSE.txt (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/blockstates/case1.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/blockstates/case2.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/blockstates/case3.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/blockstates/casecreative.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/blockstates/keyboard.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/blockstates/screen1.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/blockstates/screen2.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/blockstates/screen3.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/lang/en_us.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/block/case.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/block/case_running.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/block/keyboard.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/block/screen.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_ceiling.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down_left.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down_left_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_ceiling_left.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_ceiling_left_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_ceiling_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down_left.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down_left_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_left.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_left_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_floor.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_floor_down.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_floor_down_left.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_floor_down_left_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_floor_down_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_floor_left.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_floor_left_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_floor_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_floor_up.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down_left.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down_left_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_floor_up_left.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_floor_up_left_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_floor_up_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_wall.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_wall_down.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_wall_down_left.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_wall_down_left_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_wall_down_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_wall_left.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_wall_left_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_wall_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_wall_up.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down_left.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down_left_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_wall_up_left.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_wall_up_left_right.json (100%) rename {Minecraft/src/generated => projects/Minecraft/src/main}/resources/assets/ocreloaded/models/block/screen/screen_wall_up_right.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/alu.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/arrow_keys.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/button_group.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/card.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/case1.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/case2.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/case3.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/casecreative.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/chip1.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/chip2.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/chip3.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/chip_diamond.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/cpu1.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/cpu2.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/cpu3.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/cu.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/cutting_wire.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/datacard1.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/datacard2.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/datacard3.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/disk.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/eeprom.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/eeprom_lua.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/flat.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_dyeblack.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_dyeblue.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_dyebrown.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_dyecyan.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_dyegray.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_dyegreen.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_dyelightblue.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_dyelightgray.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_dyelime.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_dyemagenta.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_dyeorange.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_dyepink.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_dyepurple.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_dyered.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_dyewhite.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_dyeyellow.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_openos.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/floppy_plan9k.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/graphicscard1.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/graphicscard2.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/graphicscard3.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/harddiskdrive1.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/harddiskdrive2.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/harddiskdrive3.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/keyboard.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/manual.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/memory1.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/memory1_5.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/memory2.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/memory2_5.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/memory3.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/memory3_5.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/numpad.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/printed_circuit_board.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/raw_circuit_board.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/screen1.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/screen2.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/screen3.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/models/item/transistor.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/case_back.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/case_back_running.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/case_front.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/case_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/case_side_running.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/case_top.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/generic_top.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/keyboard.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/overlay/case_front_running.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/overlay/term_blank.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/overlay/term_font.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_left.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_left_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_middle.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_middle_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_right.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_right_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_single.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_single_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_left.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_middle.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_right.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_single.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_left.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_left_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_middle.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_middle_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_right.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_right_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_single.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_single_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_left.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_middle.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_right.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_single.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_left.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_left_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_middle.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_middle_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_right.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_right_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_single.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_single_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_left.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_middle.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_right.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_single.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_left.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_left_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_middle.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_middle_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_right.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_right_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_single.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_single_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_left.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_middle.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_right.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_single.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen_front.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen_side.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/block/screen_top.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/gui/background.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/gui/borders.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/gui/button_power.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/gui/computer.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/gui/logo.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/gui/slot.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/alu.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/arrow_keys.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/button_group.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/card.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/chip1.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/chip2.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/chip3.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/chip_diamond.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/circuit_board.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/cpu1.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/cpu2.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/cpu3.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/cu.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/cutting_wire.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/datacard1.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/datacard1.png.mcmeta (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/datacard2.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/datacard2.png.mcmeta (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/datacard3.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/datacard3.png.mcmeta (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/disk.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/eeprom.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeblack.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeblue.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/floppy_dyebrown.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/floppy_dyecyan.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/floppy_dyegray.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/floppy_dyegreen.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/floppy_dyelightblue.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/floppy_dyelightgray.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/floppy_dyelime.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/floppy_dyemagenta.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeorange.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/floppy_dyepink.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/floppy_dyepurple.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/floppy_dyered.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/floppy_dyewhite.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeyellow.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/graphicscard1.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/graphicscard2.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/graphicscard3.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/harddiskdrive1.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/harddiskdrive2.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/harddiskdrive3.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/icon/card.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/icon/cpu.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/icon/eeprom.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/icon/floppy.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/icon/hdd.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/icon/memory.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/icon/tier0.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/icon/tier1.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/icon/tier2.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/manual.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/memory1.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/memory1_5.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/memory2.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/memory2_5.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/memory3.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/memory3_5.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/numpad.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/printed_circuit_board.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/raw_circuit_board.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/assets/ocreloaded/textures/item/transistor.png (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/custom_recipes/default.recipes (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/custom_recipes/hardmode.recipes (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/custom_recipes/legacy_ore_dict.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/custom_recipes/peaceful.recipes (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/custom_recipes/user.recipes (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos.remap (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/.prop (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/address.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/alias.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/cat.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/cd.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/clear.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/components.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/cp.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/date.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/df.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/dmesg.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/du.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/echo.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/edit.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/find.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/flash.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/free.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/grep.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/head.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/hostname.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/install.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/label.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/less.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/list.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/ln.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/ls.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/lshw.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/lua.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/man.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/mkdir.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/mktmp.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/mount.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/mv.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/pastebin.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/primary.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/ps.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/pwd.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/rc.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/reboot.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/redstone.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/resolution.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/rm.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/rmdir.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/set.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/sh.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/shutdown.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/sleep.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/source.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/time.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/touch.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/tree.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/umount.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/unalias.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/unset.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/uptime.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/useradd.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/userdel.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/wget.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/which.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/bin/yes.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/boot/00_base.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/boot/01_process.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/boot/02_os.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/boot/03_io.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/boot/04_component.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/boot/10_devfs.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/boot/89_rc.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/boot/90_filesystem.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/boot/91_gpu.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/boot/92_keyboard.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/boot/93_term.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/boot/94_shell.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/etc/motd (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/etc/profile.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/etc/rc.cfg (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/etc/rc.d/example.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/home/.shrc (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/init.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/bit32.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/buffer.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/colors.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/boot.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/cursor.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/01_hw.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/02_utils.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/computer.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/eeprom.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/filesystem.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/gpu.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/internet.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/modem.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/screen.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/device_labeling.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_buffer.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_cursor.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_event.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_filesystem.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_keyboard.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_ls.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_sh.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_shell.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_text.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_transforms.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_vt.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/install_basics.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/install_utils.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/core/lua_shell.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/devfs.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/event.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/filesystem.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/internet.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/io.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/keyboard.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/note.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/package.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/pipe.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/process.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/rc.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/serialization.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/sh.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/shell.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/sides.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/term.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/text.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/thread.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/tools/programlocations.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/tools/transfer.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/transforms.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/tty.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/uuid.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/lib/vt100.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/address (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/alias (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/cat (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/cd (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/clear (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/cp (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/date (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/df (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/dmesg (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/echo (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/edit (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/grep (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/head (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/hostname (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/install (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/label (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/less (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/ln (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/ls (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/lshw (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/man (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/mkdir (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/more (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/mount (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/mv (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/pastebin (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/primary (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/pwd (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/rc (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/reboot (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/redstone (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/resolution (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/rm (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/rmdir (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/set (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/sh (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/shutdown (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/umount (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/unalias (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/unset (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/uptime (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/useradd (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/userdel (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/wget (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/which (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/man/yes (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/openos/usr/misc/greetings.txt (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k.remap (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/.prop (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/cat.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/clear.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/components.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/cp.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/dd.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/df.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/dmesg.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/du.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/echo.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/edit.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/find.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/getty.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/hostname.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/init.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/install.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/kill.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/label.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/ln.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/ls.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/lua.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/mkdir.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/more.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/mount.cow.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/mount.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/mount.msdos.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/mv.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/passwd.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/pastebin.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/ps.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/pwd.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/rc.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/readkey.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/reboot.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/resolution.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/rm.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/sandbox.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/sh.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/shutdown.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/sleep.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/sshd.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/tee.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/touch.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/uptime.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/watch.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/wc.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/bin/wget.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/boot/kernel/pipes (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/etc/rc.d/autoupdate.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/etc/rc.d/sshd.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/init.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/colors.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/event.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/internet.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/01_gc.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/01_util.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/02_cmd.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/05_vfs.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/06_cowfs.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/09_rootfs.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/10_devfs.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/10_procfs.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/10_sysfs.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/11_block.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/12_mount.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/15_keventd.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/15_userspace.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_buffer.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_component.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_partition.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_require.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_chatbox.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_data.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_drive.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_eeprom.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_gpt.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_io.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_ipc.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_keyboard.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_nfc.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_tape.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/18_pty.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/18_syscall.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/19_cgroups.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/19_manageg.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/20_threading.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/21_threadutil.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/21_timer.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/25_init.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/msdosfs.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/rc.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/serialization.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/shell.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/sides.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/term.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/lib/text.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/base64.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/deflate.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/go.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/gpg.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/inflate.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/md5sum.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/mkdosfs.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/mpt.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/sha256sum.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/ssh.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/usr/lib/data.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/usr/lib/robot.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/usr/man/pipes (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/usr/sbin/sshsession.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/var/lib/mpt/config.db (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot/plan9k/var/lib/mpt/mpt.db (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/loot_tables/blocks/keyboard.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/lua/bios.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/lua/machine.lua (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/tags/items/chip_diamond.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/tags/items/circuit_chip1.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/tags/items/circuit_chip2.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/tags/items/circuit_chip3.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/tags/items/material_alu.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/tags/items/material_arrow_key.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/tags/items/material_button_group.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/tags/items/material_card.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/tags/items/material_circuit_board_printed.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/tags/items/material_circuit_board_raw.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/tags/items/material_cu.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/tags/items/material_cutting_wire.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/tags/items/material_disk.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/tags/items/material_num_pad.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/data/ocreloaded/tags/items/material_transistor.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/ocreloaded.mixins.json (100%) rename {Minecraft => projects/Minecraft}/src/main/resources/pack.mcmeta (100%) create mode 100644 projects/NeoForge/build.gradle.kts rename {NeoForge => projects/NeoForge}/gradle.properties (100%) rename {NeoForge => projects/NeoForge}/src/main/java/li/cil/ocreloaded/neoforge/client/OCReloadedClient.java (51%) create mode 100644 projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java rename NeoForge/src/main/resources/META-INF/mods.toml => projects/NeoForge/src/main/resources/META-INF/neoforge.mods.toml (72%) rename {NeoForge => projects/NeoForge}/src/main/resources/ocreloaded.mixins.json (100%) rename {NeoForge => projects/NeoForge}/src/main/resources/pack.mcmeta (100%) delete mode 100644 settings.gradle create mode 100644 settings.gradle.kts rename {Tools => tools}/check_crlf.py (100%) diff --git a/.github/workflows/check-crlf.yml b/.github/workflows/check-crlf.yml index 94fe39f..93f7274 100644 --- a/.github/workflows/check-crlf.yml +++ b/.github/workflows/check-crlf.yml @@ -12,4 +12,4 @@ jobs: steps: - uses: actions/checkout@v4.2.2 - name: Check for CRLF - run: Tools/check_crlf.py \ No newline at end of file + run: tools/check_crlf.py \ No newline at end of file diff --git a/.gitignore b/.gitignore index 43e9f71..2fcade0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,8 @@ .gradle build -*/build -*/run -*/bin +projects/*/build +projects/*/run +projects/*/bin .architectury-transformer diff --git a/Core/build.gradle b/Core/build.gradle deleted file mode 100644 index 83aea52..0000000 --- a/Core/build.gradle +++ /dev/null @@ -1,3 +0,0 @@ -dependencies { - implementation 'com.typesafe:config:1.4.3' -} \ No newline at end of file diff --git a/Fabric/build.gradle b/Fabric/build.gradle deleted file mode 100644 index 82e7e47..0000000 --- a/Fabric/build.gradle +++ /dev/null @@ -1,72 +0,0 @@ -plugins { - id 'com.github.johnrengelman.shadow' -} - -architectury { - platformSetupLoomIde() - fabric() -} - -configurations { - common { - canBeResolved = true - canBeConsumed = false - } - compileClasspath.extendsFrom common - runtimeClasspath.extendsFrom common - developmentFabric.extendsFrom common - - // Files in this configuration will be bundled into your mod using the Shadow plugin. - // Don't use the `shadow` configuration from the plugin itself as it's meant for excluding files. - shadowBundle { - canBeResolved = true - canBeConsumed = false - } -} - -dependencies { - modImplementation "net.fabricmc:fabric-loader:$rootProject.fabric_loader_version" - - // Fabric API. This is technically optional, but you probably want it anyway. - modImplementation "net.fabricmc.fabric-api:fabric-api:$rootProject.fabric_api_version" - - // Architectury API. This is optional, and you can comment it out if you don't need it. - modImplementation "dev.architectury:architectury-fabric:$rootProject.architectury_api_version" - - implementation project(':Minecraft') - common(project(path: ':Minecraft', configuration: 'namedElements')) { transitive false } - shadowBundle project(path: ':Minecraft', configuration: 'transformProductionFabric') -} - -processResources { - inputs.property 'version', project.version - inputs.property 'name', project.name - - filesMatching('fabric.mod.json') { - expand(project.properties) - } -} - -shadowJar { - configurations = [project.configurations.shadowBundle] - archiveClassifier = 'dev-shadow' -} - -remapJar { - injectAccessWidener = true - input.set shadowJar.archiveFile - dependsOn shadowJar -} - - -sourcesJar { - def commonSources = project(":Minecraft").sourcesJar - dependsOn commonSources - from commonSources.archiveFile.map { zipTree(it) } -} - -components.java { - withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { - skip() - } -} \ No newline at end of file diff --git a/Fabric/src/main/resources/fabric.mod.json b/Fabric/src/main/resources/fabric.mod.json deleted file mode 100644 index 8bd2104..0000000 --- a/Fabric/src/main/resources/fabric.mod.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "schemaVersion": 1, - "id": "ocreloaded", - "version": "${version}", - "name": "${name}", - "description": "Bring programmable computers to Minecraft! This mod is a complete rewrite of OpenComputers, but with extra goodies.", - "authors": ["EveryOS, 6TELOIV, Walksanator, timuzkas - OC Rewrite", "Sangar, payonel, Vexatos, and others - Original OC authors"], - "license": "See LICENSE.txt file", - "icon": "assets/ocreloaded/textures/gui/logo.png", - "environment": "*", - "entrypoints": { - "client": [ - "li.cil.ocreloaded.fabric.client.OCReloadedClient" - ], - "main": [ - "li.cil.ocreloaded.fabric.common.OCReloaded" - ] - }, - "depends": { - "fabricloader": ">=0.15.0", - "minecraft": "~1.20.4", - "java": ">=17", - "fabric-api": "*" - } -} \ No newline at end of file diff --git a/Minecraft/build.gradle b/Minecraft/build.gradle deleted file mode 100644 index aaf7328..0000000 --- a/Minecraft/build.gradle +++ /dev/null @@ -1,38 +0,0 @@ -plugins { - id 'com.github.johnrengelman.shadow' -} - -architectury { - common rootProject.enabled_platforms.split(',') -} - -dependencies { - // We depend on Fabric Loader here to use the Fabric @Environment annotations, - // which get remapped to the correct annotations on each platform. - // Do NOT use other classes from Fabric Loader. - modImplementation "net.fabricmc:fabric-loader:$rootProject.fabric_loader_version" - - // Architectury API. This is optional, and you can comment it out if you don't need it. - modImplementation "dev.architectury:architectury:$rootProject.architectury_api_version" - - implementation 'com.typesafe:config:1.4.3' - - implementation project(':Core') -} - -task copyResources(type: Copy) { - copy { - from "${rootProject.projectDir}/libs/lua52" - into file('build/resources/main/data/ocreloaded/libs/lua52') - } - - copy { - from "${rootProject.projectDir}/libs/lua53" - into file('build/resources/main/data/ocreloaded/libs/lua53') - } - - copy { - from "${projectDir}/src/generated/resources/" - into file('build/resources/main/') - } -} \ No newline at end of file diff --git a/NeoForge/build.gradle b/NeoForge/build.gradle deleted file mode 100644 index 3617dd1..0000000 --- a/NeoForge/build.gradle +++ /dev/null @@ -1,59 +0,0 @@ -plugins { - id 'com.github.johnrengelman.shadow' -} - -architectury { - platformSetupLoomIde() - neoForge() -} - -configurations { - common { - canBeResolved = true - canBeConsumed = false - } - compileClasspath.extendsFrom common - runtimeClasspath.extendsFrom common - developmentForge.extendsFrom common - - // Files in this configuration will be bundled into your mod using the Shadow plugin. - // Don't use the `shadow` configuration from the plugin itself as it's meant for excluding files. - shadowBundle { - canBeResolved = true - canBeConsumed = false - } -} - -repositories { - maven { - name = 'NeoForged' - url = 'https://maven.neoforged.net/releases' - } -} - -dependencies { - neoForge "net.neoforged:neoforge:$rootProject.neoforge_version" - - // Architectury API. This is optional, and you can comment it out if you don't need it. - modImplementation "dev.architectury:architectury-neoforge:$rootProject.architectury_api_version" - - common(project(path: ':Minecraft', configuration: 'namedElements')) { transitive false } - shadowBundle project(path: ':Minecraft', configuration: 'transformProductionForge') -} - -processResources { - inputs.property 'version', project.version - - filesMatching('META-INF/mods.toml') { - expand version: project.version - } -} - -shadowJar { - configurations = [project.configurations.shadowBundle] - archiveClassifier = 'dev-shadow' -} - -remapJar { - input.set shadowJar.archiveFile -} diff --git a/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java b/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java deleted file mode 100644 index e845336..0000000 --- a/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java +++ /dev/null @@ -1,33 +0,0 @@ -package li.cil.ocreloaded.neoforge.common; - - -import li.cil.ocreloaded.neoforge.client.OCReloadedClient; -import li.cil.ocreloaded.minecraft.common.OCReloadedCommon; -import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; -import li.cil.ocreloaded.minecraft.server.CommonServerHooks; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.bus.api.IEventBus; -import net.neoforged.bus.api.SubscribeEvent; -import net.neoforged.fml.common.Mod; -import net.neoforged.fml.loading.FMLEnvironment; -import net.neoforged.neoforge.common.NeoForge; -import net.neoforged.neoforge.event.server.ServerStartedEvent; - -@Mod(OCReloadedCommon.MOD_ID) -public class OCReloaded { - - public OCReloaded(IEventBus eventBus) { - NeoForge.EVENT_BUS.register(this); - CommonRegistered.initialize(); - - if (FMLEnvironment.dist == Dist.CLIENT) { - new OCReloadedClient(eventBus); - } - } - - @SubscribeEvent - public void serverStarted(ServerStartedEvent event) { - CommonServerHooks.setup(event.getServer()); - } - -} \ No newline at end of file diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 701a37f..0000000 --- a/build.gradle +++ /dev/null @@ -1,111 +0,0 @@ -plugins { - id 'dev.architectury.loom' version '1.7-SNAPSHOT' apply false - id 'architectury-plugin' version '3.4-SNAPSHOT' - id 'com.github.johnrengelman.shadow' version '8.1.1' apply false -} - -architectury { - minecraft = project.minecraft_version -} - -allprojects { - group = rootProject.maven_group - version = rootProject.mod_version -} - -['Minecraft', 'Fabric'].each { projectName -> - configure(project(projectName)) { - apply plugin: 'dev.architectury.loom' - - loom { - splitEnvironmentSourceSets() - } - } -} -["Fabric", "NeoForge"].each { projectName -> - configure(project(projectName)) { - apply plugin: 'com.github.johnrengelman.shadow' - apply plugin: 'dev.architectury.loom' - apply plugin: 'architectury-plugin' - - configurations { - common { - canBeResolved = true - canBeConsumed = false - } - compileClasspath.extendsFrom common - runtimeClasspath.extendsFrom common - developmentForge.extendsFrom common - - shadowBundle { - canBeResolved = true - canBeConsumed = false - } - } - - dependencies { - common project(':Core') - shadowBundle project(':Core') - } - } -} - -subprojects { - apply plugin: 'dev.architectury.loom' - apply plugin: 'architectury-plugin' - apply plugin: 'maven-publish' - apply plugin: 'com.github.johnrengelman.shadow' - - base { - // Set up a suffixed format for the mod jar names, e.g. `example-fabric`. - archivesName = "$rootProject.archives_name-$project.name" - } - - repositories { - // Add repositories to retrieve artifacts from in here. - // You should only use this when depending on other mods because - // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. - // See https://docs.gradle.org/current/userguide/declaring_repositories.html - // for more information about repositories. - } - - dependencies { - minecraft "net.minecraft:minecraft:$rootProject.minecraft_version" - mappings loom.officialMojangMappings() - - implementation fileTree(dir: '../libs', include: ['OpenComputers-JNLua.jar', 'OpenComputers-LuaJ.jar']) - shadow fileTree(dir: '../libs', include: ['OpenComputers-JNLua.jar', 'OpenComputers-LuaJ.jar']) - } - - java { - // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task - // if it is present. - // If you remove this line, sources will not be generated. - withSourcesJar() - - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - - tasks.withType(JavaCompile).configureEach { - it.options.release = 17 - } - - // Configure Maven publishing. - publishing { - publications { - mavenJava(MavenPublication) { - artifactId = base.archivesName.get() - from components.java - } - } - - // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. - repositories { - // Add repositories to publish to here. - // Notice: This block does NOT have the same function as the block in the top level. - // The repositories here will be used for publishing your artifact, not for - // retrieving dependencies. - } - } -} diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 0000000..a1cef0c --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,12 @@ +plugins { + `kotlin-dsl` +} + +repositories { + gradlePluginPortal() +} + +dependencies { + implementation(libs.modDevGradle) + implementation(libs.shadow) +} \ No newline at end of file diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts new file mode 100644 index 0000000..fa8bc74 --- /dev/null +++ b/buildSrc/settings.gradle.kts @@ -0,0 +1,7 @@ +dependencyResolutionManagement { + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/oc-common.gradle.kts b/buildSrc/src/main/kotlin/oc-common.gradle.kts new file mode 100644 index 0000000..c6d3458 --- /dev/null +++ b/buildSrc/src/main/kotlin/oc-common.gradle.kts @@ -0,0 +1,16 @@ +plugins { + id("java-library") + id("com.gradleup.shadow") +} + +configurations { + create("coreJava") { + isCanBeResolved = true + } +} + +repositories { + maven("https://maven.parchmentmc.org") { + name = "ParchmentMC" + } +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/oc-loader.gradle.kts b/buildSrc/src/main/kotlin/oc-loader.gradle.kts new file mode 100644 index 0000000..02eed0a --- /dev/null +++ b/buildSrc/src/main/kotlin/oc-loader.gradle.kts @@ -0,0 +1,32 @@ +plugins { + id("oc-common") +} + +configurations { + create("commonJava") { + isCanBeResolved = true + } + create("commonResources") { + isCanBeResolved = true + } +} + +tasks.named("compileJava") { + dependsOn(configurations["commonJava"]) + source(configurations["commonJava"]) +} + +tasks.withType { + val properties = mapOf( + "neoforgeVersionRange" to rootProject.properties["neo_loader_version_range"], + "neoforgeLoaderVersionRange" to rootProject.properties["neo_version_range"], + "minecraftVersionRange" to rootProject.properties["mc_version_range"], + "minecraftVersion" to rootProject.properties["mc_version"], + "version" to rootProject.properties["mod_version"] + ) + + inputs.properties(properties) + filesMatching(listOf("META-INF/neoforge.mods.toml", "pack.mcmeta", "fabric.mod.json")) { + expand(properties) + } +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/oc-neo-based.gradle.kts b/buildSrc/src/main/kotlin/oc-neo-based.gradle.kts new file mode 100644 index 0000000..2ba28b6 --- /dev/null +++ b/buildSrc/src/main/kotlin/oc-neo-based.gradle.kts @@ -0,0 +1,27 @@ +plugins { + id("oc-common") + id("net.neoforged.moddev") +} + +neoForge { + val libs = project.extensions.getByType().named("libs") + + parchment { + minecraftVersion = libs.findVersion("parchmentMc").get().toString() + mappingsVersion = libs.findVersion("parchment").get().toString() + } + + runs { + create("client") { + client() + } + + create("server") { + server() + } + + create("data") { + data() + } + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 9d11d6c..50b9f5f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,19 +1,12 @@ org.gradle.jvmargs=-Xmx4096m org.gradle.parallel=true -mod_name = OpenComputers Reloaded -mod_version = 1.0.0-snapshot -maven_group = li.cil.ocreloaded -archives_name = ocreloaded +maven_group=li.cil.ocreloaded +archives_name=ocreloaded -enabled_platforms = fabric,forge,neoforge -minecraft_version = 1.20.4 -mappings_channel = official -mappings_version = 1.20.4 +mod_version=0.0.0-dont-use-in-survival-plz -neoforge_version = 20.4.232 - -fabric_loader_version=0.15.0 -fabric_api_version=0.97.2+1.20.4 - -architectury_api_version = 11.1.17 \ No newline at end of file +mc_version=1.21.1 +mc_version_range=[1.21.1,) +neo_loader_version_range=[2,) +neo_version_range=[21.1,) \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4ac3234..b9701e0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,2 +1,37 @@ -# This file was generated by the Gradle 'init' task. -# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format +## !! If you see a warning about the vars being unused, that's just your IDE messing with you. +[versions] +## Core +minecraft = "1.21.1" + +# NeoForge +modDevGradle = "2.0.107" +neoForge = "21.1.209" +neoForm = "1.21.1-20240808.144430" + +# Fabric +fabricLoader = "0.16.0" +fabricApi = "0.116.5+1.21.1" +loom = "1.11-SNAPSHOT" + +# Parchment +parchment = "2024.11.17" +parchmentMc = "1.21.1" + +# Miscellaneous +shadow = "9.2.2" + +## Libraries +# Minecraft libraries, versions bound to ones used by MC +slf4j = "2.0.1" + +# Misc libraries +typesafeConfig = "1.4.3" + +[libraries] +modDevGradle = { module = "net.neoforged.moddev:net.neoforged.moddev.gradle.plugin", version.ref = "modDevGradle" } +shadow = { module = "com.gradleup.shadow:com.gradleup.shadow.gradle.plugin", version.ref = "shadow" } +slf4j = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" } +typesafeConfig = { module = "com.typesafe:config", version.ref = "typesafeConfig" } + +[plugins] +loom = { id = "fabric-loom", version.ref = "loom" } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a441313..ca025c8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/projects/Core/build.gradle.kts b/projects/Core/build.gradle.kts new file mode 100644 index 0000000..fc72190 --- /dev/null +++ b/projects/Core/build.gradle.kts @@ -0,0 +1,24 @@ +plugins { + id("java-library") +} + +repositories { + mavenCentral() +} + +configurations { + create("coreJava") { + isCanBeResolved = false + isCanBeConsumed = true + } +} + +artifacts { + add("coreJava", sourceSets["main"].java.sourceDirectories.singleFile) +} + +dependencies { + implementation(libs.typesafeConfig) + implementation(libs.slf4j) + implementation(files("../../libs/OpenComputers-JNLua.jar", "../../libs/OpenComputers-LuaJ.jar")) +} \ No newline at end of file diff --git a/Core/src/main/java/li/cil/ocreloaded/core/component/ComputerComponent.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/component/ComputerComponent.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/component/ComputerComponent.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/component/ComputerComponent.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/component/DataCardComponent.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/component/DataCardComponent.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/component/DataCardComponent.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/component/DataCardComponent.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/component/EepromComponent.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/component/EepromComponent.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/component/EepromComponent.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/component/EepromComponent.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/component/FileSystemComponent.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/component/FileSystemComponent.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/component/FileSystemComponent.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/component/FileSystemComponent.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/component/GraphicsBindableComponent.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/component/GraphicsBindableComponent.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/component/GraphicsBindableComponent.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/component/GraphicsBindableComponent.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/component/GraphicsCardComponent.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/component/GraphicsCardComponent.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/component/GraphicsCardComponent.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/component/GraphicsCardComponent.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/component/InternetComponent.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/component/InternetComponent.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/component/InternetComponent.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/component/InternetComponent.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/component/KeyboardComponent.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/component/KeyboardComponent.java similarity index 80% rename from Core/src/main/java/li/cil/ocreloaded/core/component/KeyboardComponent.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/component/KeyboardComponent.java index 1b6b488..0292b5e 100644 --- a/Core/src/main/java/li/cil/ocreloaded/core/component/KeyboardComponent.java +++ b/projects/Core/src/main/java/li/cil/ocreloaded/core/component/KeyboardComponent.java @@ -6,7 +6,6 @@ import li.cil.ocreloaded.core.machine.component.AnnotatedComponent; import li.cil.ocreloaded.core.network.NetworkMessage; import li.cil.ocreloaded.core.network.NetworkNode; -import net.minecraft.world.entity.player.Player; public class KeyboardComponent extends AnnotatedComponent { @@ -22,30 +21,30 @@ public void onMessage(NetworkMessage message, NetworkNode sender) { switch (message.name()) { // TODO: Fix player name case "keyboard.keyDown": { - Player player = null;//(Player) message.arguments()[0]; + // Player player = null;//(Player) message.arguments()[0]; int charCode = (int) message.arguments()[1]; int keyCode = (int) message.arguments()[2]; pressedKeys.put(keyCode, (char) charCode); String playerName = "";// player.getName().getString(); - node.sendToReachable(new NetworkMessage("computer.checked_signal", player, "key_down", charCode, keyCode, playerName)); + node.sendToReachable(new NetworkMessage("computer.checked_signal", null, "key_down", charCode, keyCode, playerName)); break; } case "keyboard.keyUp": { - Player player = null;//(Player) message.arguments()[0]; + // Player player = null;//(Player) message.arguments()[0]; int keyCode = (int) message.arguments()[1]; Character charCode = pressedKeys.remove(keyCode); if (charCode != null) { String playerName = "";//player.getName().getString(); - node.sendToReachable(new NetworkMessage("computer.checked_signal", player, "key_up", (int) charCode, keyCode, playerName)); + node.sendToReachable(new NetworkMessage("computer.checked_signal", null, "key_up", (int) charCode, keyCode, playerName)); } break; } case "keyboard.clipboard": { - Player player = null; + // Player player = null; String clipboard = (String) message.arguments()[1]; if (clipboard != null) { String playerName = "";//player.getName().getString(); - node.sendToReachable(new NetworkMessage("computer.checked_signal", player, "clipboard", clipboard, playerName)); + node.sendToReachable(new NetworkMessage("computer.checked_signal", null, "clipboard", clipboard, playerName)); } } default: diff --git a/Core/src/main/java/li/cil/ocreloaded/core/component/ScreenComponentBase.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/component/ScreenComponentBase.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/component/ScreenComponentBase.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/component/ScreenComponentBase.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/filesystem/ArchiveFileSystem.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/ArchiveFileSystem.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/filesystem/ArchiveFileSystem.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/ArchiveFileSystem.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/filesystem/DirectoryFileSystem.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/DirectoryFileSystem.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/filesystem/DirectoryFileSystem.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/DirectoryFileSystem.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/filesystem/FSStreamHandleTracker.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/FSStreamHandleTracker.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/filesystem/FSStreamHandleTracker.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/FSStreamHandleTracker.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/filesystem/InMemoryFileSystem.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/InMemoryFileSystem.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/filesystem/InMemoryFileSystem.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/InMemoryFileSystem.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/filesystem/InputStreamFileHandle.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/InputStreamFileHandle.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/filesystem/InputStreamFileHandle.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/InputStreamFileHandle.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/filesystem/OutputStreamFileHandle.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/OutputStreamFileHandle.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/filesystem/OutputStreamFileHandle.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/OutputStreamFileHandle.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/filesystem/memory/InMemoryDirectory.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/memory/InMemoryDirectory.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/filesystem/memory/InMemoryDirectory.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/memory/InMemoryDirectory.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/filesystem/memory/InMemoryFile.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/memory/InMemoryFile.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/filesystem/memory/InMemoryFile.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/memory/InMemoryFile.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/filesystem/memory/InMemoryNode.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/memory/InMemoryNode.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/filesystem/memory/InMemoryNode.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/filesystem/memory/InMemoryNode.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/graphics/TextModeBuffer.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/graphics/TextModeBuffer.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/graphics/TextModeBuffer.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/graphics/TextModeBuffer.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/graphics/color/ColorMode.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/graphics/color/ColorMode.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/graphics/color/ColorMode.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/graphics/color/ColorMode.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/graphics/color/EightBitColorMode.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/graphics/color/EightBitColorMode.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/graphics/color/EightBitColorMode.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/graphics/color/EightBitColorMode.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/graphics/color/FourBitColorMode.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/graphics/color/FourBitColorMode.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/graphics/color/FourBitColorMode.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/graphics/color/FourBitColorMode.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/graphics/color/MutablePaletteColorMode.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/graphics/color/MutablePaletteColorMode.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/graphics/color/MutablePaletteColorMode.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/graphics/color/MutablePaletteColorMode.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/graphics/color/OneBitColorMode.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/graphics/color/OneBitColorMode.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/graphics/color/OneBitColorMode.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/graphics/color/OneBitColorMode.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/graphics/imp/TextModeBufferImp.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/graphics/imp/TextModeBufferImp.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/graphics/imp/TextModeBufferImp.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/graphics/imp/TextModeBufferImp.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/AbstractValue.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/AbstractValue.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/AbstractValue.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/AbstractValue.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/Machine.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/Machine.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/Machine.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/Machine.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineActions.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineActions.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/MachineActions.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineActions.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineCodeRegistry.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineCodeRegistry.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/MachineCodeRegistry.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineCodeRegistry.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineParameters.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineParameters.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/MachineParameters.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineParameters.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineProcessor.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineProcessor.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/MachineProcessor.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineProcessor.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineRegistry.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineRegistry.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/MachineRegistry.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineRegistry.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineRegistryEntry.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineRegistryEntry.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/MachineRegistryEntry.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineRegistryEntry.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineResult.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineResult.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/MachineResult.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/MachineResult.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/PathUtil.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/PathUtil.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/PathUtil.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/PathUtil.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/Persistable.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/Persistable.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/Persistable.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/Persistable.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/PersistenceHolder.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/PersistenceHolder.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/PersistenceHolder.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/PersistenceHolder.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/Value.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/Value.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/Value.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/Value.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/Architecture.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/Architecture.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/Architecture.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/Architecture.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/ArchitectureMachine.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/ArchitectureMachine.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/ArchitectureMachine.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/ArchitectureMachine.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/LuaCArchitecture.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/LuaCArchitecture.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/LuaCArchitecture.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/LuaCArchitecture.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/LuaCComponentCallArguments.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/LuaCComponentCallArguments.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/LuaCComponentCallArguments.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/LuaCComponentCallArguments.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/LuaCStateFactory.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/LuaCStateFactory.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/LuaCStateFactory.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/LuaCStateFactory.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/APIRegistrationUtil.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/APIRegistrationUtil.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/APIRegistrationUtil.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/APIRegistrationUtil.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/ComponentAPI.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/ComponentAPI.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/ComponentAPI.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/ComponentAPI.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/ComputerAPI.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/ComputerAPI.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/ComputerAPI.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/ComputerAPI.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/OSAPI.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/OSAPI.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/OSAPI.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/OSAPI.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/SystemAPI.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/SystemAPI.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/SystemAPI.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/SystemAPI.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/UnicodeAPI.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/UnicodeAPI.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/UnicodeAPI.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/architecture/luac/api/UnicodeAPI.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/component/AnnotatedComponent.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/component/AnnotatedComponent.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/component/AnnotatedComponent.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/component/AnnotatedComponent.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/component/Component.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/component/Component.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/component/Component.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/component/Component.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentCall.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentCall.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentCall.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentCall.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentCallArguments.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentCallArguments.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentCallArguments.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentCallArguments.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentCallContext.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentCallContext.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentCallContext.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentCallContext.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentMethod.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentMethod.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentMethod.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/component/ComponentMethod.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/filesystem/FileHandle.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/filesystem/FileHandle.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/filesystem/FileHandle.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/filesystem/FileHandle.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/filesystem/FileSystem.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/filesystem/FileSystem.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/filesystem/FileSystem.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/filesystem/FileSystem.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/machine/imp/MachineProcessorImp.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/machine/imp/MachineProcessorImp.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/machine/imp/MachineProcessorImp.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/machine/imp/MachineProcessorImp.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/misc/Label.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/misc/Label.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/misc/Label.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/misc/Label.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/misc/imp/LabelImp.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/misc/imp/LabelImp.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/misc/imp/LabelImp.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/misc/imp/LabelImp.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/network/Network.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/network/Network.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/network/Network.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/network/Network.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/network/NetworkMessage.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/network/NetworkMessage.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/network/NetworkMessage.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/network/NetworkMessage.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/network/NetworkNode.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/network/NetworkNode.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/network/NetworkNode.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/network/NetworkNode.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/network/NetworkNodeHolder.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/network/NetworkNodeHolder.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/network/NetworkNodeHolder.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/network/NetworkNodeHolder.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/network/imp/NetworkImp.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/network/imp/NetworkImp.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/network/imp/NetworkImp.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/network/imp/NetworkImp.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/util/ExtendedUnicodeUtil.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/util/ExtendedUnicodeUtil.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/util/ExtendedUnicodeUtil.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/util/ExtendedUnicodeUtil.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/util/FileUtil.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/util/FileUtil.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/util/FileUtil.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/util/FileUtil.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/util/TextUtil.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/util/TextUtil.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/util/TextUtil.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/util/TextUtil.java diff --git a/Core/src/main/java/li/cil/ocreloaded/core/util/TimeFormatterUtil.java b/projects/Core/src/main/java/li/cil/ocreloaded/core/util/TimeFormatterUtil.java similarity index 100% rename from Core/src/main/java/li/cil/ocreloaded/core/util/TimeFormatterUtil.java rename to projects/Core/src/main/java/li/cil/ocreloaded/core/util/TimeFormatterUtil.java diff --git a/projects/Fabric/build.gradle.kts b/projects/Fabric/build.gradle.kts new file mode 100644 index 0000000..a875a11 --- /dev/null +++ b/projects/Fabric/build.gradle.kts @@ -0,0 +1,22 @@ +plugins { + id("oc-loader") + alias(libs.plugins.loom) +} + +loom { + +} + +dependencies { + minecraft("com.mojang:minecraft:${libs.versions.minecraft.get()}") + mappings(loom.layered { + officialMojangMappings() + parchment("org.parchmentmc.data:parchment-${libs.versions.parchmentMc.get()}:${libs.versions.parchment.get()}@zip") + }) + modImplementation("net.fabricmc:fabric-loader:${libs.versions.fabricLoader.get()}") + modImplementation("net.fabricmc.fabric-api:fabric-api:${libs.versions.fabricApi.get()}") + + compileOnly(project(":Minecraft")) + commonJava(project(path = ":Minecraft", configuration = "commonJava")) + commonResources(project(path = ":Minecraft", configuration = "commonResources")) +} \ No newline at end of file diff --git a/Fabric/src/main/java/li/cil/ocreloaded/fabric/client/OCReloadedClient.java b/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/client/OCReloadedClient.java similarity index 83% rename from Fabric/src/main/java/li/cil/ocreloaded/fabric/client/OCReloadedClient.java rename to projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/client/OCReloadedClient.java index 06f044e..1434693 100644 --- a/Fabric/src/main/java/li/cil/ocreloaded/fabric/client/OCReloadedClient.java +++ b/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/client/OCReloadedClient.java @@ -4,13 +4,10 @@ import li.cil.ocreloaded.minecraft.client.registry.ClientRegistered; import net.fabricmc.api.ClientModInitializer; -// For some reason split source is no longer working, so I moved this to main public class OCReloadedClient implements ClientModInitializer { - @Override public void onInitializeClient() { ClientRegistered.setup(); CommonClientHooks.setup(); } - } diff --git a/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/OCReloaded.java b/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/OCReloaded.java similarity index 99% rename from Fabric/src/main/java/li/cil/ocreloaded/fabric/common/OCReloaded.java rename to projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/OCReloaded.java index 76f61b3..980c9e1 100644 --- a/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/OCReloaded.java +++ b/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/OCReloaded.java @@ -6,7 +6,6 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerWorldEvents; public class OCReloaded implements ModInitializer { - @Override public void onInitialize() { runServerHandlers(); @@ -18,5 +17,4 @@ private void runServerHandlers() { CommonServerHooks.setup(server); }); } - } diff --git a/projects/Fabric/src/main/resources/fabric.mod.json b/projects/Fabric/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..a75ef10 --- /dev/null +++ b/projects/Fabric/src/main/resources/fabric.mod.json @@ -0,0 +1,25 @@ +{ + "schemaVersion": 1, + "id": "ocreloaded", + "version": "${version}", + "name": "OpenComputers Reloaded", + "description": "Bring programmable computers to Minecraft! This mod is a complete rewrite of OpenComputers, but with extra goodies.", + "authors": ["EveryOS, 6TELOIV, Walksanator, timuzkas - OC Rewrite", "Sangar, payonel, Vexatos, and others - Original OC authors"], + "license": "See LICENSE.txt file", + "icon": "assets/ocreloaded/textures/gui/logo.png", + "environment": "*", + "entrypoints": { + "client": [ + "li.cil.ocreloaded.fabric.client.OCReloadedClient" + ], + "main": [ + "li.cil.ocreloaded.fabric.common.OCReloaded" + ] + }, + "depends": { + "fabricloader": ">=0.16.0", + "minecraft": "~{minecraftVersion}", + "java": ">=21", + "fabric-api": "*" + } +} \ No newline at end of file diff --git a/projects/Minecraft/build.gradle.kts b/projects/Minecraft/build.gradle.kts new file mode 100644 index 0000000..1d2dce5 --- /dev/null +++ b/projects/Minecraft/build.gradle.kts @@ -0,0 +1,53 @@ +plugins { + id("oc-neo-based") +} + +neoForge { + neoFormVersion = libs.versions.neoForm.get() +} + +configurations { + create("commonJava") { + isCanBeResolved = false + isCanBeConsumed = true + } + create("commonResources") { + isCanBeResolved = false + isCanBeConsumed = true + } +} + +dependencies { + compileOnly(project(":Core")) + coreJava(project(path= ":Core", configuration= "coreJava")) + + implementation(libs.typesafeConfig) + implementation(files("../../libs/OpenComputers-JNLua.jar", "../../libs/OpenComputers-LuaJ.jar")) +} + +artifacts { + add("commonJava", sourceSets["main"].java.sourceDirectories.singleFile) + add("commonResources", sourceSets["main"].resources.sourceDirectories.singleFile) +} + +tasks.named("compileJava") { + dependsOn(configurations["coreJava"]) + source(configurations["coreJava"]) +} + +tasks.register("copyResources") { + copy { + from("${rootProject.projectDir}/libs/lua52") + into(file("build/resources/main/data/ocreloaded/libs/lua52")) + } + + copy { + from("${rootProject.projectDir}/libs/lua53") + into(file("build/resources/main/data/ocreloaded/libs/lua53")) + } + + copy { + from("${projectDir}/src/generated/resources/") + into(file("build/resources/main/")) + } +} diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/ColorHandlers.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/ColorHandlers.java similarity index 100% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/ColorHandlers.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/ColorHandlers.java diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/CommonClientHooks.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/CommonClientHooks.java similarity index 100% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/CommonClientHooks.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/CommonClientHooks.java diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/assets/ClientTextures.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/assets/ClientTextures.java similarity index 100% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/assets/ClientTextures.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/assets/ClientTextures.java diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/registry/ClientRegistered.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/registry/ClientRegistered.java similarity index 93% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/registry/ClientRegistered.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/registry/ClientRegistered.java index d896183..c0bb467 100644 --- a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/registry/ClientRegistered.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/registry/ClientRegistered.java @@ -6,7 +6,7 @@ import li.cil.ocreloaded.minecraft.client.renderer.entity.screen.ScreenRenderer; import li.cil.ocreloaded.minecraft.client.screen.CaseScreen; import li.cil.ocreloaded.minecraft.client.screen.ScreenScreen; -import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; +import li.cil.ocreloaded.minecraft.common.registry.CommoznRegistered; public class ClientRegistered { diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/renderer/entity/AmbientOcclusionCalculator.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/AmbientOcclusionCalculator.java similarity index 100% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/renderer/entity/AmbientOcclusionCalculator.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/AmbientOcclusionCalculator.java diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/renderer/entity/CaseRenderer.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/CaseRenderer.java similarity index 100% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/renderer/entity/CaseRenderer.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/CaseRenderer.java diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/renderer/entity/RenderUtil.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/RenderUtil.java similarity index 100% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/renderer/entity/RenderUtil.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/RenderUtil.java diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/DrawingContext.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/DrawingContext.java similarity index 100% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/DrawingContext.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/DrawingContext.java diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/GuiGraphicsDrawingContext.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/GuiGraphicsDrawingContext.java similarity index 100% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/GuiGraphicsDrawingContext.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/GuiGraphicsDrawingContext.java diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/MultiBufferSourceDrawingContext.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/MultiBufferSourceDrawingContext.java similarity index 100% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/MultiBufferSourceDrawingContext.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/MultiBufferSourceDrawingContext.java diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/ScreenDisplayRenderer.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/ScreenDisplayRenderer.java similarity index 100% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/ScreenDisplayRenderer.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/ScreenDisplayRenderer.java diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/ScreenRenderer.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/ScreenRenderer.java similarity index 100% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/ScreenRenderer.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/ScreenRenderer.java diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/screen/CaseScreen.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/CaseScreen.java similarity index 100% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/screen/CaseScreen.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/CaseScreen.java diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/screen/ScreenScreen.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/ScreenScreen.java similarity index 100% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/screen/ScreenScreen.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/ScreenScreen.java diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/screen/widget/ButtonWidget.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/widget/ButtonWidget.java similarity index 100% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/screen/widget/ButtonWidget.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/widget/ButtonWidget.java diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/sound/BeepSound.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/sound/BeepSound.java similarity index 100% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/sound/BeepSound.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/sound/BeepSound.java diff --git a/Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/sound/SoundPlayer.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/sound/SoundPlayer.java similarity index 100% rename from Minecraft/src/client/java/li/cil/ocreloaded/minecraft/client/sound/SoundPlayer.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/sound/SoundPlayer.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/OCReloadedCommon.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/OCReloadedCommon.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/OCReloadedCommon.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/OCReloadedCommon.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/SettingsConstants.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/SettingsConstants.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/SettingsConstants.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/SettingsConstants.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/WorldConstants.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/WorldConstants.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/WorldConstants.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/WorldConstants.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/WorldUtil.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/WorldUtil.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/WorldUtil.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/WorldUtil.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/assets/SharedTextures.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/assets/SharedTextures.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/assets/SharedTextures.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/assets/SharedTextures.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/CaseBlock.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/CaseBlock.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/CaseBlock.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/CaseBlock.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/KeyboardBlock.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/KeyboardBlock.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/KeyboardBlock.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/KeyboardBlock.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/ScreenBlock.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/ScreenBlock.java similarity index 97% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/ScreenBlock.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/ScreenBlock.java index 025370b..85e711a 100644 --- a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/ScreenBlock.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/ScreenBlock.java @@ -1,250 +1,250 @@ -package li.cil.ocreloaded.minecraft.common.block; - -import dev.architectury.registry.menu.MenuRegistry; -import li.cil.ocreloaded.minecraft.common.entity.ScreenBlockEntity; -import li.cil.ocreloaded.minecraft.common.menu.provider.ScreenMenuProvider; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.MenuProvider; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.EntityBlock; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.AttachFace; -import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; -import net.minecraft.world.level.block.state.properties.EnumProperty; -import net.minecraft.world.phys.BlockHitResult; - -public class ScreenBlock extends Block implements EntityBlock, TieredBlock { - - public static final BooleanProperty[] SIDES = new BooleanProperty[] { - BooleanProperty.create("up"), - BooleanProperty.create("down"), - BooleanProperty.create("left"), - BooleanProperty.create("right"), - }; - - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; - public static final EnumProperty ATTACH_FACE = BlockStateProperties.ATTACH_FACE; - - private final int tier; - - public ScreenBlock(Properties properties, int tier) { - super(properties); - - this.registerDefaultState(createDefaultState()); - this.tier = tier; - } - - @Override - public int getTier() { - return tier; - } - - @Override - public void playerDestroy(Level level, Player player, BlockPos blockPos, BlockState blockState, BlockEntity blockEntity, ItemStack itemStack) { - super.playerDestroy(level, player, blockPos, blockState, blockEntity, itemStack); - popResource(level, blockPos, new ItemStack(this)); - // TODO: How to instead use loot table and respect tier? - } - - @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - if (!level.isClientSide()) { - MenuProvider menuProvider = state.getMenuProvider(level, pos); - if ( - menuProvider != null && menuProvider instanceof ScreenMenuProvider screenMenuProvider - && player instanceof ServerPlayer serverPlayer - && isKeyboardConnected(level, pos) - ) { - MenuRegistry.openExtendedMenu(serverPlayer, menuProvider, screenMenuProvider::writeData); - return InteractionResult.CONSUME; - } - } - - return InteractionResult.SUCCESS; - } - - @Override - public MenuProvider getMenuProvider(BlockState state, Level level, BlockPos pos) { - return new ScreenMenuProvider(pos, tier); - } - - @Override - public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { - return new ScreenBlockEntity(blockPos, blockState); - } - - @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { - builder.add(FACING); - builder.add(ATTACH_FACE); - for (BooleanProperty side : SIDES) { - builder.add(side); - } - } - - @Override - public BlockState getStateForPlacement(BlockPlaceContext context) { - BlockState blockState = this.defaultBlockState(); - blockState = determineDefaultPlacement(context, blockState); - - if (!context.isSecondaryUseActive()) { - blockState = copyNearbyeOrientation(context, blockState); - } - - if (!context.isSecondaryUseActive()) { - blockState = copyNearbyeOrientation(context, blockState); - } - - blockState = updateShapeAllDirections(blockState, context.getLevel(), context.getClickedPos()); - - return blockState; - } - - @Override - public BlockState updateShape( - BlockState myState, Direction placementDirection, BlockState otherState, - LevelAccessor levelAccessor, BlockPos myPos, BlockPos otherPos - ) { - Side side = getSideForDirection(myState.getValue(FACING), myState.getValue(ATTACH_FACE), placementDirection); - if (side == null) return myState; - - return myState.setValue(side.getSideProperty(), checkDirectionConnected(myState, levelAccessor, myPos, placementDirection)); - } - - private BlockState updateShapeAllDirections(BlockState blockState, LevelAccessor levelAccessor, BlockPos blockPos) { - for (Direction direction : Direction.values()) { - Side side = getSideForDirection(blockState.getValue(FACING), blockState.getValue(ATTACH_FACE), direction); - if (side == null) continue; - - blockState = blockState.setValue(side.getSideProperty(), checkDirectionConnected(blockState, levelAccessor, blockPos, direction)); - } - - return blockState; - } - - private BlockState createDefaultState() { - BlockState defaultState = this.stateDefinition.any() - .setValue(FACING, Direction.NORTH) - .setValue(ATTACH_FACE, AttachFace.WALL); - for (BooleanProperty side : SIDES) { - defaultState = defaultState.setValue(side, false); - } - - return defaultState; - } - - private BlockState determineDefaultPlacement(BlockPlaceContext context, BlockState blockState) { - Direction facingDirection = context.getHorizontalDirection().getOpposite(); - Direction lookingDirection = context.getNearestLookingDirection(); - - AttachFace attachFace = lookingDirection == Direction.DOWN ? AttachFace.FLOOR - : lookingDirection == Direction.UP ? AttachFace.CEILING - : AttachFace.WALL; - - return blockState - .setValue(FACING, facingDirection) - .setValue(ATTACH_FACE, attachFace); - } - - private BlockState copyNearbyeOrientation(BlockPlaceContext context, BlockState blockState) { - Level level = context.getLevel(); - - BlockPos placePos = context.getClickedPos(); - Direction clickDirection = context.getClickedFace(); - BlockPos attachPos = placePos.relative(clickDirection.getOpposite()); - - BlockState attachState = level.getBlockState(attachPos); - - if (attachState.getBlock() instanceof ScreenBlock screenBlock) { - Direction attachDirection = attachState.getValue(FACING); - AttachFace attachFace = attachState.getValue(ATTACH_FACE); - boolean isSameAxis = attachFace == AttachFace.WALL - ? attachDirection.getAxis() == clickDirection.getAxis() - : true; - boolean isSameTier = screenBlock.tier == this.tier; - if (!isSameAxis || !isSameTier) { - blockState = blockState.setValue(FACING, attachDirection); - blockState = blockState.setValue(ATTACH_FACE, attachFace); - } - } - - return blockState; - } - - private boolean checkDirectionConnected(BlockState blockState, LevelAccessor levelAccessor, BlockPos blockPos, Direction direction) { - BlockPos otherPos = blockPos.relative(direction); - BlockState otherState = levelAccessor.getBlockState(otherPos); - - return - otherState.getBlock() instanceof ScreenBlock screenBlock - && screenBlock.tier == this.tier - && orientationMatches(blockState, otherState); - } - - public boolean orientationMatches(BlockState blockState, BlockState relativeBlockState) { - return blockState.getValue(FACING) == relativeBlockState.getValue(FACING) - && blockState.getValue(ATTACH_FACE) == relativeBlockState.getValue(ATTACH_FACE); - } - - private boolean isKeyboardConnected(Level level, BlockPos pos) { - for (Direction direction : Direction.values()) { - BlockPos otherPos = pos.relative(direction); - BlockState otherState = level.getBlockState(otherPos); - if (otherState.getBlock() instanceof KeyboardBlock) { - // TODO: Which way is the keyboard facing? - return true; - } - } - - return false; - } - - private Side getSideForDirection(Direction screenDirection, AttachFace attachFace, Direction direction) { - Direction left = screenDirection.getClockWise(); - Direction right = screenDirection.getCounterClockWise(); - Direction up = attachFace == AttachFace.WALL ? - Direction.UP : - screenDirection.getOpposite(); - Direction down = up.getOpposite(); - - if (direction == left) { - return Side.LEFT; - } else if (direction == right) { - return Side.RIGHT; - } else if (direction == up) { - return Side.UP; - } else if (direction == down) { - return Side.DOWN; - } - - return null; - } - - private enum Side { - UP(SIDES[0]), DOWN(SIDES[1]), LEFT(SIDES[2]), RIGHT(SIDES[3]); - - private final BooleanProperty sideProperty; - - Side(BooleanProperty sideProperty) { - this.sideProperty = sideProperty; - } - - public BooleanProperty getSideProperty() { - return sideProperty; - } - } - -} +package li.cil.ocreloaded.minecraft.common.block; + +import dev.architectury.registry.menu.MenuRegistry; +import li.cil.ocreloaded.minecraft.common.entity.ScreenBlockEntity; +import li.cil.ocreloaded.minecraft.common.menu.provider.ScreenMenuProvider; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.EntityBlock; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.AttachFace; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.phys.BlockHitResult; + +public class ScreenBlock extends Block implements EntityBlock, TieredBlock { + + public static final BooleanProperty[] SIDES = new BooleanProperty[] { + BooleanProperty.create("up"), + BooleanProperty.create("down"), + BooleanProperty.create("left"), + BooleanProperty.create("right"), + }; + + public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty ATTACH_FACE = BlockStateProperties.ATTACH_FACE; + + private final int tier; + + public ScreenBlock(Properties properties, int tier) { + super(properties); + + this.registerDefaultState(createDefaultState()); + this.tier = tier; + } + + @Override + public int getTier() { + return tier; + } + + @Override + public void playerDestroy(Level level, Player player, BlockPos blockPos, BlockState blockState, BlockEntity blockEntity, ItemStack itemStack) { + super.playerDestroy(level, player, blockPos, blockState, blockEntity, itemStack); + popResource(level, blockPos, new ItemStack(this)); + // TODO: How to instead use loot table and respect tier? + } + + @Override + public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + if (!level.isClientSide()) { + MenuProvider menuProvider = state.getMenuProvider(level, pos); + if ( + menuProvider != null && menuProvider instanceof ScreenMenuProvider screenMenuProvider + && player instanceof ServerPlayer serverPlayer + && isKeyboardConnected(level, pos) + ) { + MenuRegistry.openExtendedMenu(serverPlayer, menuProvider, screenMenuProvider::writeData); + return InteractionResult.CONSUME; + } + } + + return InteractionResult.SUCCESS; + } + + @Override + public MenuProvider getMenuProvider(BlockState state, Level level, BlockPos pos) { + return new ScreenMenuProvider(pos, tier); + } + + @Override + public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + return new ScreenBlockEntity(blockPos, blockState); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING); + builder.add(ATTACH_FACE); + for (BooleanProperty side : SIDES) { + builder.add(side); + } + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + BlockState blockState = this.defaultBlockState(); + blockState = determineDefaultPlacement(context, blockState); + + if (!context.isSecondaryUseActive()) { + blockState = copyNearbyeOrientation(context, blockState); + } + + if (!context.isSecondaryUseActive()) { + blockState = copyNearbyeOrientation(context, blockState); + } + + blockState = updateShapeAllDirections(blockState, context.getLevel(), context.getClickedPos()); + + return blockState; + } + + @Override + public BlockState updateShape( + BlockState myState, Direction placementDirection, BlockState otherState, + LevelAccessor levelAccessor, BlockPos myPos, BlockPos otherPos + ) { + Side side = getSideForDirection(myState.getValue(FACING), myState.getValue(ATTACH_FACE), placementDirection); + if (side == null) return myState; + + return myState.setValue(side.getSideProperty(), checkDirectionConnected(myState, levelAccessor, myPos, placementDirection)); + } + + private BlockState updateShapeAllDirections(BlockState blockState, LevelAccessor levelAccessor, BlockPos blockPos) { + for (Direction direction : Direction.values()) { + Side side = getSideForDirection(blockState.getValue(FACING), blockState.getValue(ATTACH_FACE), direction); + if (side == null) continue; + + blockState = blockState.setValue(side.getSideProperty(), checkDirectionConnected(blockState, levelAccessor, blockPos, direction)); + } + + return blockState; + } + + private BlockState createDefaultState() { + BlockState defaultState = this.stateDefinition.any() + .setValue(FACING, Direction.NORTH) + .setValue(ATTACH_FACE, AttachFace.WALL); + for (BooleanProperty side : SIDES) { + defaultState = defaultState.setValue(side, false); + } + + return defaultState; + } + + private BlockState determineDefaultPlacement(BlockPlaceContext context, BlockState blockState) { + Direction facingDirection = context.getHorizontalDirection().getOpposite(); + Direction lookingDirection = context.getNearestLookingDirection(); + + AttachFace attachFace = lookingDirection == Direction.DOWN ? AttachFace.FLOOR + : lookingDirection == Direction.UP ? AttachFace.CEILING + : AttachFace.WALL; + + return blockState + .setValue(FACING, facingDirection) + .setValue(ATTACH_FACE, attachFace); + } + + private BlockState copyNearbyeOrientation(BlockPlaceContext context, BlockState blockState) { + Level level = context.getLevel(); + + BlockPos placePos = context.getClickedPos(); + Direction clickDirection = context.getClickedFace(); + BlockPos attachPos = placePos.relative(clickDirection.getOpposite()); + + BlockState attachState = level.getBlockState(attachPos); + + if (attachState.getBlock() instanceof ScreenBlock screenBlock) { + Direction attachDirection = attachState.getValue(FACING); + AttachFace attachFace = attachState.getValue(ATTACH_FACE); + boolean isSameAxis = attachFace == AttachFace.WALL + ? attachDirection.getAxis() == clickDirection.getAxis() + : true; + boolean isSameTier = screenBlock.tier == this.tier; + if (!isSameAxis || !isSameTier) { + blockState = blockState.setValue(FACING, attachDirection); + blockState = blockState.setValue(ATTACH_FACE, attachFace); + } + } + + return blockState; + } + + private boolean checkDirectionConnected(BlockState blockState, LevelAccessor levelAccessor, BlockPos blockPos, Direction direction) { + BlockPos otherPos = blockPos.relative(direction); + BlockState otherState = levelAccessor.getBlockState(otherPos); + + return + otherState.getBlock() instanceof ScreenBlock screenBlock + && screenBlock.tier == this.tier + && orientationMatches(blockState, otherState); + } + + public boolean orientationMatches(BlockState blockState, BlockState relativeBlockState) { + return blockState.getValue(FACING) == relativeBlockState.getValue(FACING) + && blockState.getValue(ATTACH_FACE) == relativeBlockState.getValue(ATTACH_FACE); + } + + private boolean isKeyboardConnected(Level level, BlockPos pos) { + for (Direction direction : Direction.values()) { + BlockPos otherPos = pos.relative(direction); + BlockState otherState = level.getBlockState(otherPos); + if (otherState.getBlock() instanceof KeyboardBlock) { + // TODO: Which way is the keyboard facing? + return true; + } + } + + return false; + } + + private Side getSideForDirection(Direction screenDirection, AttachFace attachFace, Direction direction) { + Direction left = screenDirection.getClockWise(); + Direction right = screenDirection.getCounterClockWise(); + Direction up = attachFace == AttachFace.WALL ? + Direction.UP : + screenDirection.getOpposite(); + Direction down = up.getOpposite(); + + if (direction == left) { + return Side.LEFT; + } else if (direction == right) { + return Side.RIGHT; + } else if (direction == up) { + return Side.UP; + } else if (direction == down) { + return Side.DOWN; + } + + return null; + } + + private enum Side { + UP(SIDES[0]), DOWN(SIDES[1]), LEFT(SIDES[2]), RIGHT(SIDES[3]); + + private final BooleanProperty sideProperty; + + Side(BooleanProperty sideProperty) { + this.sideProperty = sideProperty; + } + + public BooleanProperty getSideProperty() { + return sideProperty; + } + } + +} diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/TieredBlock.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/TieredBlock.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/TieredBlock.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/TieredBlock.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/component/ComponentNetworkNode.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/component/ComponentNetworkNode.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/component/ComponentNetworkNode.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/component/ComponentNetworkNode.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/component/ComponentNetworkUtil.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/component/ComponentNetworkUtil.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/component/ComponentNetworkUtil.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/component/ComponentNetworkUtil.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/container/BasicContainer.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/container/BasicContainer.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/container/BasicContainer.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/container/BasicContainer.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/BlockEntityTicker.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/BlockEntityTicker.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/BlockEntityTicker.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/BlockEntityTicker.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/CaseBlockEntity.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/CaseBlockEntity.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/CaseBlockEntity.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/CaseBlockEntity.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ComponentTileEntity.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ComponentTileEntity.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ComponentTileEntity.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ComponentTileEntity.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/KeyboardBlockEntity.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/KeyboardBlockEntity.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/KeyboardBlockEntity.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/KeyboardBlockEntity.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ScreenBlockEntity.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ScreenBlockEntity.java similarity index 95% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ScreenBlockEntity.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ScreenBlockEntity.java index a759d38..8308551 100644 --- a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ScreenBlockEntity.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ScreenBlockEntity.java @@ -1,155 +1,155 @@ -package li.cil.ocreloaded.minecraft.common.entity; - -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import io.netty.buffer.ByteBuf; -import li.cil.ocreloaded.core.component.ScreenComponentBase; -import li.cil.ocreloaded.core.graphics.TextModeBuffer; -import li.cil.ocreloaded.core.network.NetworkMessage; -import li.cil.ocreloaded.core.network.NetworkNode; -import li.cil.ocreloaded.core.network.NetworkNode.Visibility; -import li.cil.ocreloaded.minecraft.common.SettingsConstants; -import li.cil.ocreloaded.minecraft.common.block.ScreenBlock; -import li.cil.ocreloaded.minecraft.common.component.ComponentNetworkNode; -import li.cil.ocreloaded.minecraft.common.component.ComponentNetworkUtil; -import li.cil.ocreloaded.minecraft.common.item.GraphicsCardItem; -import li.cil.ocreloaded.minecraft.common.network.NetworkUtil; -import li.cil.ocreloaded.minecraft.common.network.screen.NetworkedTextModeBufferProxy; -import li.cil.ocreloaded.minecraft.common.network.screen.ScreenNetworkInputMessages; -import li.cil.ocreloaded.minecraft.common.network.screen.ScreenNetworkMessage; -import li.cil.ocreloaded.minecraft.common.persistence.NBTPersistenceHolder; -import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; -import net.minecraft.core.BlockPos; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; - - -public class ScreenBlockEntity extends BlockEntity implements TickableEntity, ComponentTileEntity { - - private static final Logger LOGGER = LoggerFactory.getLogger(ScreenBlockEntity.class); - - private final NetworkNode networkNode = new ComponentNetworkNode( - node -> new ScreenComponentBase(node, this::getScreenBuffer), Visibility.NETWORK - ); - - private boolean initialized = false; - private TextModeBuffer screenBuffer; - - public ScreenBlockEntity(BlockPos blockPos, BlockState blockState) { - super(CommonRegistered.SCREEN_BLOCK_ENTITY.get(), blockPos, blockState); - } - - @Override - public NetworkNode networkNode() { - return networkNode; - } - - @Override - public void setRemoved() { - super.setRemoved(); - networkNode.remove(); - } - - @Override - public void setLevel(Level level) { - super.setLevel(level); - if (level == null) return; - - ScreenBlock block = (ScreenBlock) getBlockState().getBlock(); - int[] maxResolution = GraphicsCardItem.TIER_RESOLUTIONS[block.getTier() - 1]; - int maxDepth = GraphicsCardItem.TIER_DEPTHS[block.getTier() - 1]; - screenBuffer = level.isClientSide() ? - TextModeBuffer.create(maxResolution, maxDepth) : - new NetworkedTextModeBufferProxy(TextModeBuffer.create(maxResolution, maxDepth)); - - if (!level.isClientSide()) { - level.addBlockEntityTicker(new BlockEntityTicker(this)); - } - } - - @Override - public void load(CompoundTag compoundTag) { - super.load(compoundTag); - networkNode.load(new NBTPersistenceHolder(compoundTag, SettingsConstants.namespace)); - - if (this.level == null || level.isClientSide) return; - ComponentNetworkUtil.connectToNeighbors(level, worldPosition); - } - - @Override - public void saveAdditional(CompoundTag compoundTag) { - super.saveAdditional(compoundTag); - networkNode.save(new NBTPersistenceHolder(compoundTag, SettingsConstants.namespace)); - } - - @Override - public void tick() { - if (level == null || level.isClientSide()) return; - if (!initialized) { - ComponentNetworkUtil.connectToNeighbors(level, worldPosition); - initialized = true; - } - - ChunkPos chunkPos = new ChunkPos(worldPosition); - List chunkTrackingPlayers = ((ServerLevel) level).getPlayers( - player -> player.getChunkTrackingView().contains(chunkPos) - ); - - NetworkedTextModeBufferProxy proxy = (NetworkedTextModeBufferProxy) screenBuffer; - if (!proxy.hasChanges()) return; - ByteBuf changeBuffer = proxy.getBuffer(); - NetworkUtil.getInstance().messageManyClients( - new ScreenNetworkMessage(worldPosition, changeBuffer, ScreenNetworkMessage.TEXT_MODE_BUFFER_CHANNEL), - chunkTrackingPlayers - ); - } - - public void onKeyPressed(int charCode, int keyCode, Player player) { - networkNode.sendToNeighbors(new NetworkMessage("keyboard.keyDown", player.getName(), charCode, keyCode)); - } - - public void onKeyReleased(int keyCode, Player player) { - networkNode.sendToNeighbors(new NetworkMessage("keyboard.keyUp", player.getName(), keyCode)); - } - - public void onClipboardPaste(String text, Player player) { - networkNode.sendToNeighbors(new NetworkMessage("keyboard.clipboard", player.getName(), text)); - } - - public void onMouseInput(int type, int button, double x, double y, Player player) { - String name = switch (type) { - case ScreenNetworkInputMessages.MOUSE_PRESSED -> "touch"; - case ScreenNetworkInputMessages.MOUSE_RELEASED -> "drop"; - case ScreenNetworkInputMessages.MOUSE_DRAGGED -> "drag"; - case ScreenNetworkInputMessages.MOUSE_SCROLLED -> "scroll"; - default -> null; - }; - - if (name == null) { - LOGGER.warn("Received unknown input type: {}", type); - return; - } - - // TODO: Include player name - boolean isPrecise = networkNode.component().map(c -> ((ScreenComponentBase) c).isPrecise()).orElse(false); - if (isPrecise) { - networkNode.sendToNeighbors(new NetworkMessage("computer.checked_signal", player, name, x, y, button)); - } else { - networkNode.sendToNeighbors(new NetworkMessage("computer.checked_signal", player, name, (int) (x + 1), (int) (y + 1), button)); - } - } - - public TextModeBuffer getScreenBuffer() { - return screenBuffer; - } - -} +package li.cil.ocreloaded.minecraft.common.entity; + +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.netty.buffer.ByteBuf; +import li.cil.ocreloaded.core.component.ScreenComponentBase; +import li.cil.ocreloaded.core.graphics.TextModeBuffer; +import li.cil.ocreloaded.core.network.NetworkMessage; +import li.cil.ocreloaded.core.network.NetworkNode; +import li.cil.ocreloaded.core.network.NetworkNode.Visibility; +import li.cil.ocreloaded.minecraft.common.SettingsConstants; +import li.cil.ocreloaded.minecraft.common.block.ScreenBlock; +import li.cil.ocreloaded.minecraft.common.component.ComponentNetworkNode; +import li.cil.ocreloaded.minecraft.common.component.ComponentNetworkUtil; +import li.cil.ocreloaded.minecraft.common.item.GraphicsCardItem; +import li.cil.ocreloaded.minecraft.common.network.NetworkUtil; +import li.cil.ocreloaded.minecraft.common.network.screen.NetworkedTextModeBufferProxy; +import li.cil.ocreloaded.minecraft.common.network.screen.ScreenNetworkInputMessages; +import li.cil.ocreloaded.minecraft.common.network.screen.ScreenNetworkMessage; +import li.cil.ocreloaded.minecraft.common.persistence.NBTPersistenceHolder; +import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; + + +public class ScreenBlockEntity extends BlockEntity implements TickableEntity, ComponentTileEntity { + + private static final Logger LOGGER = LoggerFactory.getLogger(ScreenBlockEntity.class); + + private final NetworkNode networkNode = new ComponentNetworkNode( + node -> new ScreenComponentBase(node, this::getScreenBuffer), Visibility.NETWORK + ); + + private boolean initialized = false; + private TextModeBuffer screenBuffer; + + public ScreenBlockEntity(BlockPos blockPos, BlockState blockState) { + super(CommonRegistered.SCREEN_BLOCK_ENTITY.get(), blockPos, blockState); + } + + @Override + public NetworkNode networkNode() { + return networkNode; + } + + @Override + public void setRemoved() { + super.setRemoved(); + networkNode.remove(); + } + + @Override + public void setLevel(Level level) { + super.setLevel(level); + if (level == null) return; + + ScreenBlock block = (ScreenBlock) getBlockState().getBlock(); + int[] maxResolution = GraphicsCardItem.TIER_RESOLUTIONS[block.getTier() - 1]; + int maxDepth = GraphicsCardItem.TIER_DEPTHS[block.getTier() - 1]; + screenBuffer = level.isClientSide() ? + TextModeBuffer.create(maxResolution, maxDepth) : + new NetworkedTextModeBufferProxy(TextModeBuffer.create(maxResolution, maxDepth)); + + if (!level.isClientSide()) { + level.addBlockEntityTicker(new BlockEntityTicker(this)); + } + } + + @Override + public void load(CompoundTag compoundTag) { + super.load(compoundTag); + networkNode.load(new NBTPersistenceHolder(compoundTag, SettingsConstants.namespace)); + + if (this.level == null || level.isClientSide) return; + ComponentNetworkUtil.connectToNeighbors(level, worldPosition); + } + + @Override + public void saveAdditional(CompoundTag compoundTag) { + super.saveAdditional(compoundTag); + networkNode.save(new NBTPersistenceHolder(compoundTag, SettingsConstants.namespace)); + } + + @Override + public void tick() { + if (level == null || level.isClientSide()) return; + if (!initialized) { + ComponentNetworkUtil.connectToNeighbors(level, worldPosition); + initialized = true; + } + + ChunkPos chunkPos = new ChunkPos(worldPosition); + List chunkTrackingPlayers = ((ServerLevel) level).getPlayers( + player -> player.getChunkTrackingView().contains(chunkPos) + ); + + NetworkedTextModeBufferProxy proxy = (NetworkedTextModeBufferProxy) screenBuffer; + if (!proxy.hasChanges()) return; + ByteBuf changeBuffer = proxy.getBuffer(); + NetworkUtil.getInstance().messageManyClients( + new ScreenNetworkMessage(worldPosition, changeBuffer, ScreenNetworkMessage.TEXT_MODE_BUFFER_CHANNEL), + chunkTrackingPlayers + ); + } + + public void onKeyPressed(int charCode, int keyCode, Player player) { + networkNode.sendToNeighbors(new NetworkMessage("keyboard.keyDown", player.getName().getString(), charCode, keyCode)); + } + + public void onKeyReleased(int keyCode, Player player) { + networkNode.sendToNeighbors(new NetworkMessage("keyboard.keyUp", player.getName().getString(), keyCode)); + } + + public void onClipboardPaste(String text, Player player) { + networkNode.sendToNeighbors(new NetworkMessage("keyboard.clipboard", player.getName().getString(), text)); + } + + public void onMouseInput(int type, int button, double x, double y, Player player) { + String name = switch (type) { + case ScreenNetworkInputMessages.MOUSE_PRESSED -> "touch"; + case ScreenNetworkInputMessages.MOUSE_RELEASED -> "drop"; + case ScreenNetworkInputMessages.MOUSE_DRAGGED -> "drag"; + case ScreenNetworkInputMessages.MOUSE_SCROLLED -> "scroll"; + default -> null; + }; + + if (name == null) { + LOGGER.warn("Received unknown input type: {}", type); + return; + } + + // TODO: Include player name + boolean isPrecise = networkNode.component().map(c -> ((ScreenComponentBase) c).isPrecise()).orElse(false); + if (isPrecise) { + networkNode.sendToNeighbors(new NetworkMessage("computer.checked_signal", player, name, x, y, button)); + } else { + networkNode.sendToNeighbors(new NetworkMessage("computer.checked_signal", player, name, (int) (x + 1), (int) (y + 1), button)); + } + } + + public TextModeBuffer getScreenBuffer() { + return screenBuffer; + } + +} diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/TickableEntity.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/TickableEntity.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/TickableEntity.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/TickableEntity.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/integration/vanilla/VanillaRecipes.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/integration/vanilla/VanillaRecipes.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/integration/vanilla/VanillaRecipes.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/integration/vanilla/VanillaRecipes.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/CPUItem.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/CPUItem.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/CPUItem.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/CPUItem.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/ComponentItem.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/ComponentItem.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/ComponentItem.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/ComponentItem.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/DataCardItem.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/DataCardItem.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/DataCardItem.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/DataCardItem.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/EepromItem.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/EepromItem.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/EepromItem.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/EepromItem.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/FloppyDiskItem.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/FloppyDiskItem.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/FloppyDiskItem.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/FloppyDiskItem.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/GraphicsCardItem.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/GraphicsCardItem.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/GraphicsCardItem.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/GraphicsCardItem.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/HardDiskItem.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/HardDiskItem.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/HardDiskItem.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/HardDiskItem.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/LuaEepromItem.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/LuaEepromItem.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/LuaEepromItem.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/LuaEepromItem.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/ManualItem.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/ManualItem.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/ManualItem.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/ManualItem.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/MemoryItem.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/MemoryItem.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/MemoryItem.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/MemoryItem.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/TieredItem.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/TieredItem.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/TieredItem.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/item/TieredItem.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/CaseMenu.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/CaseMenu.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/CaseMenu.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/CaseMenu.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentHighlightHint.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentHighlightHint.java similarity index 97% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentHighlightHint.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentHighlightHint.java index dff90f3..fa7696a 100644 --- a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentHighlightHint.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentHighlightHint.java @@ -1,28 +1,28 @@ -package li.cil.ocreloaded.minecraft.common.menu; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.world.inventory.Slot; - -public class ComponentHighlightHint { - public static List findHighlightHintSlots(List slots, Slot hoveredSlot) { - List matchedSlots = new ArrayList(); - // if no slot hovered, return empty list - if (hoveredSlot == null) { - return matchedSlots; - } - boolean isComponentSlot = hoveredSlot instanceof ComponentSlot; - for (Slot slot: slots) { - // The hovered slot is a component slot; we want to find items which COULD slot there - if (isComponentSlot && hoveredSlot.mayPlace(slot.getItem())) { - matchedSlots.add(slot); - } - // The hovered slot is an inventory slot; we want to find component slots which COULD hold the hovered item - else if (!isComponentSlot && slot instanceof ComponentSlot && slot.mayPlace(hoveredSlot.getItem())) { - matchedSlots.add(slot); - } - } - return matchedSlots; - } -} +package li.cil.ocreloaded.minecraft.common.menu; + +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.world.inventory.Slot; + +public class ComponentHighlightHint { + public static List findHighlightHintSlots(List slots, Slot hoveredSlot) { + List matchedSlots = new ArrayList(); + // if no slot hovered, return empty list + if (hoveredSlot == null) { + return matchedSlots; + } + boolean isComponentSlot = hoveredSlot instanceof ComponentSlot; + for (Slot slot: slots) { + // The hovered slot is a component slot; we want to find items which COULD slot there + if (isComponentSlot && hoveredSlot.mayPlace(slot.getItem())) { + matchedSlots.add(slot); + } + // The hovered slot is an inventory slot; we want to find component slots which COULD hold the hovered item + else if (!isComponentSlot && slot instanceof ComponentSlot && slot.mayPlace(hoveredSlot.getItem())) { + matchedSlots.add(slot); + } + } + return matchedSlots; + } +} diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentQuickMove.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentQuickMove.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentQuickMove.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentQuickMove.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentSlot.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentSlot.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentSlot.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentSlot.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ScreenMenu.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ScreenMenu.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ScreenMenu.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ScreenMenu.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/provider/ScreenMenuProvider.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/provider/ScreenMenuProvider.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/provider/ScreenMenuProvider.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/provider/ScreenMenuProvider.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/ClientNetworkMessageContext.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/ClientNetworkMessageContext.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/ClientNetworkMessageContext.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/ClientNetworkMessageContext.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkHandler.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkHandler.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkHandler.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkHandler.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkInterface.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkInterface.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkInterface.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkInterface.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkMessage.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkMessage.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkMessage.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkMessage.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkUtil.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkUtil.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkUtil.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkUtil.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/ServerNetworkMessageContext.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/ServerNetworkMessageContext.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/ServerNetworkMessageContext.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/ServerNetworkMessageContext.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkHandler.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkHandler.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkHandler.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkHandler.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkMessage.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkMessage.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkMessage.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkMessage.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/NetworkedTextModeBufferProxy.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/NetworkedTextModeBufferProxy.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/NetworkedTextModeBufferProxy.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/NetworkedTextModeBufferProxy.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkHandler.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkHandler.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkHandler.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkHandler.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkInputMessages.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkInputMessages.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkInputMessages.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkInputMessages.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkMessage.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkMessage.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkMessage.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkMessage.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkHandler.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkHandler.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkHandler.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkHandler.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkMessage.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkMessage.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkMessage.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkMessage.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/persistence/NBTPersistenceHolder.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/persistence/NBTPersistenceHolder.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/persistence/NBTPersistenceHolder.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/persistence/NBTPersistenceHolder.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeException.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeException.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeException.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeException.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeProcessor.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeProcessor.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeProcessor.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeProcessor.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeRegistrationDelegate.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeRegistrationDelegate.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeRegistrationDelegate.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeRegistrationDelegate.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/Recipes.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/Recipes.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/Recipes.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/Recipes.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/registry/ClientBridge.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/registry/ClientBridge.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/registry/ClientBridge.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/registry/ClientBridge.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/registry/CommonRegistered.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/registry/CommonRegistered.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/registry/CommonRegistered.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/registry/CommonRegistered.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/sound/SoundPlayerProvider.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/sound/SoundPlayerProvider.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/sound/SoundPlayerProvider.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/sound/SoundPlayerProvider.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/Colors.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/Colors.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/Colors.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/Colors.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/ItemList.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/ItemList.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/ItemList.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/ItemList.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/KeyMappings.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/KeyMappings.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/KeyMappings.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/KeyMappings.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/RotationHelper.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/RotationHelper.java similarity index 98% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/RotationHelper.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/RotationHelper.java index 5243b8c..5d37d63 100644 --- a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/RotationHelper.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/RotationHelper.java @@ -1,65 +1,65 @@ -package li.cil.ocreloaded.minecraft.common.util; - -import net.minecraft.core.Direction; -import net.minecraft.world.level.block.state.properties.AttachFace; - -public class RotationHelper { - public static Direction toLocal(Direction direction, Direction facing, AttachFace attachFace) { - if (attachFace == AttachFace.WALL) { - return WALL_TRANSLATIONS[facing.get2DDataValue()][direction.get3DDataValue()]; - } else if (attachFace == AttachFace.FLOOR) { - return FLOOR_TRANSLATIONS[facing.get2DDataValue()][direction.get3DDataValue()]; - } else { - return CEILING_TRANSLATIONS[facing.get2DDataValue()][direction.get3DDataValue()]; - } - } - - public static Direction toGlobal(Direction direction, Direction facing, AttachFace attachFace) { - Direction[] translations; - if (attachFace == AttachFace.WALL) { - translations = WALL_TRANSLATIONS[facing.get2DDataValue()]; - } else if (attachFace == AttachFace.FLOOR) { - translations = FLOOR_TRANSLATIONS[facing.get2DDataValue()]; - } else { - translations = CEILING_TRANSLATIONS[facing.get2DDataValue()]; - } - for (int i = 0; i < translations.length; i++) { - if (translations[i] == direction) { - return Direction.from3DDataValue(i); - } - } - throw new IllegalArgumentException("Invalid direction " + direction + " for facing " + facing + " and attach face " + attachFace); - } - - // Translations of directions from global to local space for wall, ceiling and floor. - private static final Direction[][] WALL_TRANSLATIONS = { - // South - {Direction.DOWN, Direction.UP, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST}, - // West - {Direction.DOWN, Direction.UP, Direction.WEST, Direction.EAST, Direction.SOUTH, Direction.NORTH}, - // North - {Direction.DOWN, Direction.UP, Direction.SOUTH, Direction.NORTH, Direction.EAST, Direction.WEST}, - // East - {Direction.DOWN, Direction.UP, Direction.EAST, Direction.WEST, Direction.NORTH, Direction.SOUTH}, - }; - private static final Direction[][] FLOOR_TRANSLATIONS = { - // South - {Direction.SOUTH, Direction.NORTH, Direction.DOWN, Direction.UP, Direction.WEST, Direction.EAST}, - // West - {Direction.SOUTH, Direction.NORTH, Direction.WEST, Direction.EAST, Direction.DOWN, Direction.UP}, - // North - {Direction.SOUTH, Direction.NORTH, Direction.UP, Direction.DOWN, Direction.EAST, Direction.WEST}, - // East - {Direction.SOUTH, Direction.NORTH, Direction.EAST, Direction.WEST, Direction.UP, Direction.DOWN}, - }; - private static final Direction[][] CEILING_TRANSLATIONS = { - // South - {Direction.NORTH, Direction.SOUTH, Direction.UP, Direction.DOWN, Direction.WEST, Direction.EAST}, - // West - {Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST, Direction.UP, Direction.DOWN}, - // North - {Direction.NORTH, Direction.SOUTH, Direction.DOWN, Direction.UP, Direction.EAST, Direction.WEST}, - // East - {Direction.NORTH, Direction.SOUTH, Direction.EAST, Direction.WEST, Direction.DOWN, Direction.UP}, - }; -} +package li.cil.ocreloaded.minecraft.common.util; + +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.state.properties.AttachFace; + +public class RotationHelper { + public static Direction toLocal(Direction direction, Direction facing, AttachFace attachFace) { + if (attachFace == AttachFace.WALL) { + return WALL_TRANSLATIONS[facing.get2DDataValue()][direction.get3DDataValue()]; + } else if (attachFace == AttachFace.FLOOR) { + return FLOOR_TRANSLATIONS[facing.get2DDataValue()][direction.get3DDataValue()]; + } else { + return CEILING_TRANSLATIONS[facing.get2DDataValue()][direction.get3DDataValue()]; + } + } + + public static Direction toGlobal(Direction direction, Direction facing, AttachFace attachFace) { + Direction[] translations; + if (attachFace == AttachFace.WALL) { + translations = WALL_TRANSLATIONS[facing.get2DDataValue()]; + } else if (attachFace == AttachFace.FLOOR) { + translations = FLOOR_TRANSLATIONS[facing.get2DDataValue()]; + } else { + translations = CEILING_TRANSLATIONS[facing.get2DDataValue()]; + } + for (int i = 0; i < translations.length; i++) { + if (translations[i] == direction) { + return Direction.from3DDataValue(i); + } + } + throw new IllegalArgumentException("Invalid direction " + direction + " for facing " + facing + " and attach face " + attachFace); + } + + // Translations of directions from global to local space for wall, ceiling and floor. + private static final Direction[][] WALL_TRANSLATIONS = { + // South + {Direction.DOWN, Direction.UP, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST}, + // West + {Direction.DOWN, Direction.UP, Direction.WEST, Direction.EAST, Direction.SOUTH, Direction.NORTH}, + // North + {Direction.DOWN, Direction.UP, Direction.SOUTH, Direction.NORTH, Direction.EAST, Direction.WEST}, + // East + {Direction.DOWN, Direction.UP, Direction.EAST, Direction.WEST, Direction.NORTH, Direction.SOUTH}, + }; + private static final Direction[][] FLOOR_TRANSLATIONS = { + // South + {Direction.SOUTH, Direction.NORTH, Direction.DOWN, Direction.UP, Direction.WEST, Direction.EAST}, + // West + {Direction.SOUTH, Direction.NORTH, Direction.WEST, Direction.EAST, Direction.DOWN, Direction.UP}, + // North + {Direction.SOUTH, Direction.NORTH, Direction.UP, Direction.DOWN, Direction.EAST, Direction.WEST}, + // East + {Direction.SOUTH, Direction.NORTH, Direction.EAST, Direction.WEST, Direction.UP, Direction.DOWN}, + }; + private static final Direction[][] CEILING_TRANSLATIONS = { + // South + {Direction.NORTH, Direction.SOUTH, Direction.UP, Direction.DOWN, Direction.WEST, Direction.EAST}, + // West + {Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST, Direction.UP, Direction.DOWN}, + // North + {Direction.NORTH, Direction.SOUTH, Direction.DOWN, Direction.UP, Direction.EAST, Direction.WEST}, + // East + {Direction.NORTH, Direction.SOUTH, Direction.EAST, Direction.WEST, Direction.DOWN, Direction.UP}, + }; +} diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/CommonServerHooks.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/CommonServerHooks.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/CommonServerHooks.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/CommonServerHooks.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/MachineSetup.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/MachineSetup.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/MachineSetup.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/MachineSetup.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/FileSystemSupplierRegistry.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/FileSystemSupplierRegistry.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/FileSystemSupplierRegistry.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/FileSystemSupplierRegistry.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/LocalFileSystemSupplier.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/LocalFileSystemSupplier.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/LocalFileSystemSupplier.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/LocalFileSystemSupplier.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/LootFileSystemSupplier.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/LootFileSystemSupplier.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/LootFileSystemSupplier.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/LootFileSystemSupplier.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaCFactory.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaCFactory.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaCFactory.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaCFactory.java diff --git a/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaMachineRegistryEntry.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaMachineRegistryEntry.java similarity index 100% rename from Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaMachineRegistryEntry.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaMachineRegistryEntry.java diff --git a/Minecraft/src/main/resources/LICENSE-jnlua.txt b/projects/Minecraft/src/main/resources/LICENSE-jnlua.txt similarity index 100% rename from Minecraft/src/main/resources/LICENSE-jnlua.txt rename to projects/Minecraft/src/main/resources/LICENSE-jnlua.txt diff --git a/Minecraft/src/main/resources/LICENSE-luaj.txt b/projects/Minecraft/src/main/resources/LICENSE-luaj.txt similarity index 100% rename from Minecraft/src/main/resources/LICENSE-luaj.txt rename to projects/Minecraft/src/main/resources/LICENSE-luaj.txt diff --git a/Minecraft/src/main/resources/LICENSE.txt b/projects/Minecraft/src/main/resources/LICENSE.txt similarity index 100% rename from Minecraft/src/main/resources/LICENSE.txt rename to projects/Minecraft/src/main/resources/LICENSE.txt diff --git a/Minecraft/src/main/resources/assets/ocreloaded/blockstates/case1.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/blockstates/case1.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/blockstates/case1.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/blockstates/case1.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/blockstates/case2.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/blockstates/case2.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/blockstates/case2.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/blockstates/case2.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/blockstates/case3.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/blockstates/case3.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/blockstates/case3.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/blockstates/case3.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/blockstates/casecreative.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/blockstates/casecreative.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/blockstates/casecreative.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/blockstates/casecreative.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/blockstates/keyboard.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/blockstates/keyboard.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/blockstates/keyboard.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/blockstates/keyboard.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/blockstates/screen1.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/blockstates/screen1.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/blockstates/screen1.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/blockstates/screen1.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/blockstates/screen2.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/blockstates/screen2.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/blockstates/screen2.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/blockstates/screen2.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/blockstates/screen3.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/blockstates/screen3.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/blockstates/screen3.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/blockstates/screen3.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/lang/en_us.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/lang/en_us.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/lang/en_us.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/lang/en_us.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/block/case.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/case.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/block/case.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/case.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/block/case_running.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/case_running.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/block/case_running.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/case_running.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/block/keyboard.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/keyboard.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/block/keyboard.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/keyboard.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/block/screen.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down_left.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down_left.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down_left.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down_left.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down_left_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down_left_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down_left_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down_left_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_down_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_left.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_left.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_left.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_left.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_left_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_left_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_left_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_left_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down_left.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down_left.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down_left.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down_left.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down_left_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down_left_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down_left_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down_left_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_down_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_left.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_left.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_left.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_left.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_left_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_left_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_left_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_left_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_ceiling_up_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_down.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_down.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_down.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_down.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_down_left.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_down_left.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_down_left.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_down_left.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_down_left_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_down_left_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_down_left_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_down_left_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_down_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_down_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_down_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_down_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_left.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_left.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_left.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_left.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_left_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_left_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_left_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_left_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_up.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_up.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_up.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_up.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down_left.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down_left.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down_left.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down_left.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down_left_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down_left_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down_left_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down_left_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_up_down_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_up_left.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_up_left.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_up_left.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_up_left.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_up_left_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_up_left_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_up_left_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_up_left_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_up_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_up_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_floor_up_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_floor_up_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_down.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_down.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_down.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_down.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_down_left.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_down_left.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_down_left.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_down_left.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_down_left_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_down_left_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_down_left_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_down_left_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_down_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_down_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_down_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_down_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_left.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_left.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_left.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_left.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_left_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_left_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_left_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_left_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_up.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_up.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_up.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_up.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down_left.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down_left.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down_left.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down_left.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down_left_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down_left_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down_left_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down_left_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_up_down_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_up_left.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_up_left.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_up_left.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_up_left.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_up_left_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_up_left_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_up_left_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_up_left_right.json diff --git a/Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_up_right.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_up_right.json similarity index 100% rename from Minecraft/src/generated/resources/assets/ocreloaded/models/block/screen/screen_wall_up_right.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/block/screen/screen_wall_up_right.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/alu.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/alu.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/alu.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/alu.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/arrow_keys.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/arrow_keys.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/arrow_keys.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/arrow_keys.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/button_group.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/button_group.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/button_group.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/button_group.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/card.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/card.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/card.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/card.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/case1.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/case1.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/case1.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/case1.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/case2.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/case2.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/case2.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/case2.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/case3.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/case3.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/case3.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/case3.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/casecreative.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/casecreative.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/casecreative.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/casecreative.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/chip1.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/chip1.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/chip1.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/chip1.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/chip2.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/chip2.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/chip2.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/chip2.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/chip3.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/chip3.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/chip3.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/chip3.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/chip_diamond.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/chip_diamond.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/chip_diamond.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/chip_diamond.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/cpu1.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/cpu1.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/cpu1.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/cpu1.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/cpu2.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/cpu2.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/cpu2.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/cpu2.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/cpu3.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/cpu3.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/cpu3.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/cpu3.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/cu.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/cu.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/cu.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/cu.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/cutting_wire.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/cutting_wire.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/cutting_wire.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/cutting_wire.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/datacard1.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/datacard1.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/datacard1.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/datacard1.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/datacard2.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/datacard2.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/datacard2.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/datacard2.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/datacard3.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/datacard3.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/datacard3.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/datacard3.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/disk.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/disk.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/disk.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/disk.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/eeprom.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/eeprom.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/eeprom.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/eeprom.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/eeprom_lua.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/eeprom_lua.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/eeprom_lua.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/eeprom_lua.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/flat.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/flat.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/flat.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/flat.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyeblack.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyeblack.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyeblack.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyeblack.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyeblue.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyeblue.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyeblue.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyeblue.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyebrown.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyebrown.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyebrown.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyebrown.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyecyan.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyecyan.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyecyan.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyecyan.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyegray.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyegray.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyegray.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyegray.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyegreen.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyegreen.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyegreen.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyegreen.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyelightblue.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyelightblue.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyelightblue.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyelightblue.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyelightgray.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyelightgray.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyelightgray.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyelightgray.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyelime.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyelime.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyelime.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyelime.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyemagenta.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyemagenta.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyemagenta.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyemagenta.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyeorange.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyeorange.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyeorange.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyeorange.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyepink.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyepink.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyepink.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyepink.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyepurple.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyepurple.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyepurple.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyepurple.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyered.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyered.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyered.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyered.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyewhite.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyewhite.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyewhite.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyewhite.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyeyellow.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyeyellow.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyeyellow.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_dyeyellow.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_openos.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_openos.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_openos.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_openos.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_plan9k.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_plan9k.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_plan9k.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/floppy_plan9k.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/graphicscard1.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/graphicscard1.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/graphicscard1.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/graphicscard1.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/graphicscard2.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/graphicscard2.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/graphicscard2.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/graphicscard2.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/graphicscard3.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/graphicscard3.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/graphicscard3.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/graphicscard3.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/harddiskdrive1.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/harddiskdrive1.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/harddiskdrive1.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/harddiskdrive1.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/harddiskdrive2.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/harddiskdrive2.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/harddiskdrive2.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/harddiskdrive2.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/harddiskdrive3.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/harddiskdrive3.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/harddiskdrive3.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/harddiskdrive3.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/keyboard.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/keyboard.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/keyboard.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/keyboard.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/manual.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/manual.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/manual.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/manual.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory1.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory1.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/memory1.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory1.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory1_5.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory1_5.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/memory1_5.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory1_5.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory2.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory2.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/memory2.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory2.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory2_5.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory2_5.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/memory2_5.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory2_5.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory3.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory3.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/memory3.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory3.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory3_5.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory3_5.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/memory3_5.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/memory3_5.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/numpad.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/numpad.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/numpad.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/numpad.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/printed_circuit_board.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/printed_circuit_board.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/printed_circuit_board.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/printed_circuit_board.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/raw_circuit_board.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/raw_circuit_board.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/raw_circuit_board.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/raw_circuit_board.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/screen1.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/screen1.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/screen1.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/screen1.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/screen2.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/screen2.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/screen2.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/screen2.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/screen3.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/screen3.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/screen3.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/screen3.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/models/item/transistor.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/transistor.json similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/models/item/transistor.json rename to projects/Minecraft/src/main/resources/assets/ocreloaded/models/item/transistor.json diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_back.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_back.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_back.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_back.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_back_running.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_back_running.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_back_running.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_back_running.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_front.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_front.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_front.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_front.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_side_running.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_side_running.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_side_running.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_side_running.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_top.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_top.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_top.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/case_top.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/generic_top.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/generic_top.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/generic_top.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/generic_top.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/keyboard.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/keyboard.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/keyboard.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/keyboard.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/overlay/case_front_running.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/overlay/case_front_running.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/overlay/case_front_running.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/overlay/case_front_running.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/overlay/term_blank.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/overlay/term_blank.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/overlay/term_blank.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/overlay/term_blank.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/overlay/term_font.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/overlay/term_font.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/overlay/term_font.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/overlay/term_font.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_left.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_left.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_left.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_left.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_left_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_left_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_left_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_left_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_middle.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_middle.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_middle.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_middle.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_middle_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_middle_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_middle_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_middle_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_right.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_right.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_right.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_right.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_right_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_right_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_right_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_right_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_single.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_single.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_single.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_single.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_single_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_single_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_single_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_bottom_single_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_left.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_left.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_left.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_left.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_middle.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_middle.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_middle.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_middle.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_right.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_right.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_right.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_right.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_single.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_single.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_single.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_middle_single.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_left.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_left.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_left.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_left.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_left_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_left_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_left_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_left_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_middle.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_middle.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_middle.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_middle.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_middle_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_middle_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_middle_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_middle_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_right.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_right.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_right.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_right.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_right_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_right_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_right_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_right_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_single.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_single.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_single.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_single.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_single_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_single_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_single_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_single_single_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_left.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_left.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_left.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_left.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_middle.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_middle.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_middle.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_middle.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_right.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_right.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_right.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_right.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_single.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_single.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_single.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/back_top_single.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_left.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_left.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_left.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_left.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_left_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_left_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_left_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_left_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_middle.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_middle.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_middle.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_middle.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_middle_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_middle_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_middle_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_middle_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_right.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_right.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_right.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_right.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_right_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_right_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_right_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_right_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_single.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_single.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_single.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_single.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_single_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_single_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_single_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_bottom_single_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_left.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_left.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_left.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_left.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_middle.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_middle.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_middle.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_middle.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_right.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_right.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_right.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_right.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_single.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_single.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_single.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_middle_single.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_left.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_left.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_left.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_left.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_left_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_left_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_left_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_left_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_middle.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_middle.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_middle.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_middle.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_middle_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_middle_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_middle_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_middle_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_right.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_right.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_right.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_right.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_right_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_right_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_right_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_right_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_single.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_single.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_single.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_single.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_single_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_single_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_single_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_single_single_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_left.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_left.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_left.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_left.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_middle.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_middle.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_middle.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_middle.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_right.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_right.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_right.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_right.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_single.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_single.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_single.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen/front_top_single.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen_front.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen_front.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen_front.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen_front.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen_side.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen_side.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen_side.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen_side.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen_top.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen_top.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen_top.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/block/screen_top.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/background.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/background.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/gui/background.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/background.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/borders.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/borders.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/gui/borders.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/borders.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/button_power.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/button_power.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/gui/button_power.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/button_power.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/computer.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/computer.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/gui/computer.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/computer.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/logo.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/logo.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/gui/logo.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/logo.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/slot.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/slot.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/gui/slot.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/gui/slot.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/alu.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/alu.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/alu.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/alu.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/arrow_keys.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/arrow_keys.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/arrow_keys.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/arrow_keys.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/button_group.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/button_group.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/button_group.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/button_group.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/card.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/card.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/card.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/card.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/chip1.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/chip1.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/chip1.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/chip1.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/chip2.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/chip2.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/chip2.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/chip2.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/chip3.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/chip3.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/chip3.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/chip3.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/chip_diamond.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/chip_diamond.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/chip_diamond.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/chip_diamond.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/circuit_board.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/circuit_board.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/circuit_board.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/circuit_board.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/cpu1.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/cpu1.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/cpu1.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/cpu1.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/cpu2.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/cpu2.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/cpu2.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/cpu2.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/cpu3.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/cpu3.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/cpu3.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/cpu3.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/cu.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/cu.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/cu.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/cu.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/cutting_wire.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/cutting_wire.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/cutting_wire.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/cutting_wire.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard1.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard1.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard1.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard1.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard1.png.mcmeta b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard1.png.mcmeta similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard1.png.mcmeta rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard1.png.mcmeta diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard2.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard2.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard2.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard2.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard2.png.mcmeta b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard2.png.mcmeta similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard2.png.mcmeta rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard2.png.mcmeta diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard3.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard3.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard3.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard3.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard3.png.mcmeta b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard3.png.mcmeta similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard3.png.mcmeta rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/datacard3.png.mcmeta diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/disk.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/disk.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/disk.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/disk.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/eeprom.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/eeprom.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/eeprom.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/eeprom.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeblack.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeblack.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeblack.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeblack.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeblue.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeblue.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeblue.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeblue.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyebrown.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyebrown.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyebrown.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyebrown.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyecyan.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyecyan.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyecyan.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyecyan.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyegray.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyegray.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyegray.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyegray.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyegreen.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyegreen.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyegreen.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyegreen.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyelightblue.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyelightblue.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyelightblue.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyelightblue.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyelightgray.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyelightgray.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyelightgray.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyelightgray.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyelime.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyelime.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyelime.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyelime.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyemagenta.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyemagenta.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyemagenta.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyemagenta.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeorange.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeorange.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeorange.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeorange.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyepink.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyepink.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyepink.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyepink.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyepurple.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyepurple.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyepurple.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyepurple.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyered.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyered.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyered.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyered.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyewhite.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyewhite.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyewhite.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyewhite.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeyellow.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeyellow.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeyellow.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/floppy_dyeyellow.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/graphicscard1.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/graphicscard1.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/graphicscard1.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/graphicscard1.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/graphicscard2.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/graphicscard2.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/graphicscard2.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/graphicscard2.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/graphicscard3.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/graphicscard3.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/graphicscard3.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/graphicscard3.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/harddiskdrive1.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/harddiskdrive1.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/harddiskdrive1.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/harddiskdrive1.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/harddiskdrive2.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/harddiskdrive2.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/harddiskdrive2.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/harddiskdrive2.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/harddiskdrive3.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/harddiskdrive3.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/harddiskdrive3.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/harddiskdrive3.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/card.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/card.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/card.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/card.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/cpu.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/cpu.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/cpu.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/cpu.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/eeprom.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/eeprom.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/eeprom.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/eeprom.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/floppy.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/floppy.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/floppy.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/floppy.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/hdd.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/hdd.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/hdd.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/hdd.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/memory.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/memory.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/memory.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/memory.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/tier0.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/tier0.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/tier0.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/tier0.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/tier1.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/tier1.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/tier1.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/tier1.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/tier2.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/tier2.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/tier2.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/icon/tier2.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/manual.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/manual.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/manual.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/manual.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory1.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory1.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory1.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory1.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory1_5.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory1_5.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory1_5.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory1_5.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory2.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory2.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory2.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory2.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory2_5.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory2_5.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory2_5.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory2_5.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory3.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory3.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory3.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory3.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory3_5.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory3_5.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory3_5.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/memory3_5.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/numpad.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/numpad.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/numpad.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/numpad.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/printed_circuit_board.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/printed_circuit_board.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/printed_circuit_board.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/printed_circuit_board.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/raw_circuit_board.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/raw_circuit_board.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/raw_circuit_board.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/raw_circuit_board.png diff --git a/Minecraft/src/main/resources/assets/ocreloaded/textures/item/transistor.png b/projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/transistor.png similarity index 100% rename from Minecraft/src/main/resources/assets/ocreloaded/textures/item/transistor.png rename to projects/Minecraft/src/main/resources/assets/ocreloaded/textures/item/transistor.png diff --git a/Minecraft/src/main/resources/data/ocreloaded/custom_recipes/default.recipes b/projects/Minecraft/src/main/resources/data/ocreloaded/custom_recipes/default.recipes similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/custom_recipes/default.recipes rename to projects/Minecraft/src/main/resources/data/ocreloaded/custom_recipes/default.recipes diff --git a/Minecraft/src/main/resources/data/ocreloaded/custom_recipes/hardmode.recipes b/projects/Minecraft/src/main/resources/data/ocreloaded/custom_recipes/hardmode.recipes similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/custom_recipes/hardmode.recipes rename to projects/Minecraft/src/main/resources/data/ocreloaded/custom_recipes/hardmode.recipes diff --git a/Minecraft/src/main/resources/data/ocreloaded/custom_recipes/legacy_ore_dict.json b/projects/Minecraft/src/main/resources/data/ocreloaded/custom_recipes/legacy_ore_dict.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/custom_recipes/legacy_ore_dict.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/custom_recipes/legacy_ore_dict.json diff --git a/Minecraft/src/main/resources/data/ocreloaded/custom_recipes/peaceful.recipes b/projects/Minecraft/src/main/resources/data/ocreloaded/custom_recipes/peaceful.recipes similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/custom_recipes/peaceful.recipes rename to projects/Minecraft/src/main/resources/data/ocreloaded/custom_recipes/peaceful.recipes diff --git a/Minecraft/src/main/resources/data/ocreloaded/custom_recipes/user.recipes b/projects/Minecraft/src/main/resources/data/ocreloaded/custom_recipes/user.recipes similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/custom_recipes/user.recipes rename to projects/Minecraft/src/main/resources/data/ocreloaded/custom_recipes/user.recipes diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos.remap b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos.remap similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos.remap rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos.remap diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/.prop b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/.prop similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/.prop rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/.prop diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/address.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/address.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/address.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/address.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/alias.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/alias.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/alias.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/alias.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/cat.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/cat.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/cat.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/cat.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/cd.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/cd.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/cd.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/cd.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/clear.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/clear.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/clear.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/clear.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/components.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/components.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/components.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/components.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/cp.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/cp.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/cp.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/cp.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/date.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/date.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/date.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/date.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/df.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/df.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/df.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/df.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/dmesg.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/dmesg.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/dmesg.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/dmesg.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/du.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/du.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/du.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/du.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/echo.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/echo.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/echo.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/echo.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/edit.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/edit.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/edit.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/edit.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/find.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/find.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/find.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/find.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/flash.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/flash.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/flash.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/flash.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/free.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/free.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/free.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/free.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/grep.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/grep.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/grep.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/grep.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/head.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/head.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/head.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/head.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/hostname.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/hostname.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/hostname.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/hostname.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/install.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/install.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/install.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/install.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/label.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/label.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/label.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/label.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/less.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/less.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/less.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/less.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/list.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/list.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/list.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/list.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/ln.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/ln.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/ln.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/ln.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/ls.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/ls.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/ls.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/ls.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/lshw.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/lshw.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/lshw.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/lshw.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/lua.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/lua.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/lua.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/lua.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/man.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/man.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/man.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/man.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/mkdir.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/mkdir.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/mkdir.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/mkdir.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/mktmp.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/mktmp.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/mktmp.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/mktmp.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/mount.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/mount.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/mount.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/mount.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/mv.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/mv.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/mv.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/mv.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/pastebin.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/pastebin.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/pastebin.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/pastebin.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/primary.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/primary.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/primary.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/primary.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/ps.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/ps.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/ps.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/ps.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/pwd.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/pwd.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/pwd.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/pwd.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/rc.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/rc.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/rc.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/rc.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/reboot.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/reboot.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/reboot.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/reboot.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/redstone.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/redstone.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/redstone.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/redstone.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/resolution.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/resolution.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/resolution.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/resolution.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/rm.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/rm.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/rm.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/rm.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/rmdir.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/rmdir.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/rmdir.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/rmdir.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/set.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/set.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/set.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/set.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/sh.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/sh.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/sh.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/sh.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/shutdown.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/shutdown.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/shutdown.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/shutdown.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/sleep.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/sleep.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/sleep.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/sleep.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/source.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/source.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/source.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/source.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/time.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/time.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/time.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/time.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/touch.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/touch.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/touch.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/touch.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/tree.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/tree.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/tree.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/tree.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/umount.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/umount.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/umount.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/umount.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/unalias.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/unalias.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/unalias.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/unalias.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/unset.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/unset.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/unset.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/unset.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/uptime.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/uptime.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/uptime.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/uptime.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/useradd.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/useradd.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/useradd.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/useradd.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/userdel.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/userdel.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/userdel.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/userdel.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/wget.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/wget.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/wget.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/wget.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/which.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/which.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/which.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/which.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/yes.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/yes.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/yes.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/bin/yes.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/00_base.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/00_base.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/00_base.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/00_base.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/01_process.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/01_process.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/01_process.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/01_process.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/02_os.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/02_os.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/02_os.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/02_os.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/03_io.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/03_io.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/03_io.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/03_io.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/04_component.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/04_component.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/04_component.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/04_component.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/10_devfs.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/10_devfs.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/10_devfs.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/10_devfs.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/89_rc.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/89_rc.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/89_rc.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/89_rc.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/90_filesystem.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/90_filesystem.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/90_filesystem.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/90_filesystem.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/91_gpu.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/91_gpu.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/91_gpu.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/91_gpu.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/92_keyboard.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/92_keyboard.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/92_keyboard.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/92_keyboard.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/93_term.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/93_term.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/93_term.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/93_term.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/94_shell.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/94_shell.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/94_shell.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/boot/94_shell.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/etc/motd b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/etc/motd similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/etc/motd rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/etc/motd diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/etc/profile.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/etc/profile.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/etc/profile.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/etc/profile.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/etc/rc.cfg b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/etc/rc.cfg similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/etc/rc.cfg rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/etc/rc.cfg diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/etc/rc.d/example.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/etc/rc.d/example.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/etc/rc.d/example.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/etc/rc.d/example.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/home/.shrc b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/home/.shrc similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/home/.shrc rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/home/.shrc diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/init.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/init.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/init.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/init.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/bit32.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/bit32.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/bit32.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/bit32.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/buffer.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/buffer.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/buffer.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/buffer.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/colors.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/colors.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/colors.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/colors.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/boot.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/boot.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/boot.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/boot.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/cursor.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/cursor.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/cursor.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/cursor.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/01_hw.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/01_hw.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/01_hw.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/01_hw.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/02_utils.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/02_utils.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/02_utils.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/02_utils.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/computer.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/computer.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/computer.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/computer.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/eeprom.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/eeprom.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/eeprom.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/eeprom.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/filesystem.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/filesystem.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/filesystem.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/filesystem.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/gpu.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/gpu.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/gpu.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/gpu.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/internet.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/internet.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/internet.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/internet.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/modem.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/modem.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/modem.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/modem.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/screen.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/screen.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/screen.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/devfs/adapters/screen.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/device_labeling.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/device_labeling.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/device_labeling.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/device_labeling.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_buffer.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_buffer.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_buffer.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_buffer.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_cursor.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_cursor.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_cursor.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_cursor.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_event.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_event.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_event.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_event.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_filesystem.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_filesystem.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_filesystem.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_filesystem.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_keyboard.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_keyboard.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_keyboard.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_keyboard.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_ls.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_ls.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_ls.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_ls.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_sh.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_sh.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_sh.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_sh.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_shell.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_shell.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_shell.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_shell.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_text.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_text.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_text.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_text.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_transforms.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_transforms.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_transforms.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_transforms.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_vt.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_vt.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_vt.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/full_vt.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/install_basics.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/install_basics.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/install_basics.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/install_basics.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/install_utils.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/install_utils.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/install_utils.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/install_utils.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/lua_shell.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/lua_shell.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/lua_shell.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/core/lua_shell.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/devfs.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/devfs.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/devfs.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/devfs.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/event.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/event.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/event.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/event.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/filesystem.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/filesystem.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/filesystem.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/filesystem.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/internet.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/internet.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/internet.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/internet.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/io.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/io.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/io.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/io.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/keyboard.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/keyboard.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/keyboard.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/keyboard.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/note.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/note.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/note.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/note.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/package.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/package.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/package.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/package.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/pipe.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/pipe.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/pipe.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/pipe.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/process.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/process.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/process.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/process.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/rc.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/rc.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/rc.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/rc.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/serialization.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/serialization.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/serialization.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/serialization.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/sh.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/sh.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/sh.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/sh.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/shell.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/shell.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/shell.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/shell.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/sides.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/sides.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/sides.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/sides.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/term.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/term.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/term.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/term.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/text.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/text.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/text.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/text.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/thread.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/thread.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/thread.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/thread.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/tools/programlocations.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/tools/programlocations.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/tools/programlocations.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/tools/programlocations.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/tools/transfer.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/tools/transfer.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/tools/transfer.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/tools/transfer.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/transforms.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/transforms.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/transforms.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/transforms.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/tty.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/tty.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/tty.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/tty.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/uuid.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/uuid.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/uuid.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/uuid.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/vt100.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/vt100.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/vt100.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/lib/vt100.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/address b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/address similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/address rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/address diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/alias b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/alias similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/alias rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/alias diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/cat b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/cat similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/cat rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/cat diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/cd b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/cd similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/cd rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/cd diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/clear b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/clear similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/clear rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/clear diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/cp b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/cp similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/cp rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/cp diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/date b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/date similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/date rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/date diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/df b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/df similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/df rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/df diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/dmesg b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/dmesg similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/dmesg rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/dmesg diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/echo b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/echo similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/echo rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/echo diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/edit b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/edit similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/edit rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/edit diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/grep b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/grep similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/grep rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/grep diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/head b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/head similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/head rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/head diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/hostname b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/hostname similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/hostname rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/hostname diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/install b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/install similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/install rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/install diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/label b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/label similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/label rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/label diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/less b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/less similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/less rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/less diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/ln b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/ln similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/ln rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/ln diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/ls b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/ls similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/ls rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/ls diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/lshw b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/lshw similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/lshw rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/lshw diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/man b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/man similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/man rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/man diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/mkdir b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/mkdir similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/mkdir rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/mkdir diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/more b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/more similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/more rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/more diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/mount b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/mount similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/mount rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/mount diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/mv b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/mv similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/mv rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/mv diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/pastebin b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/pastebin similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/pastebin rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/pastebin diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/primary b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/primary similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/primary rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/primary diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/pwd b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/pwd similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/pwd rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/pwd diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/rc b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/rc similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/rc rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/rc diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/reboot b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/reboot similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/reboot rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/reboot diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/redstone b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/redstone similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/redstone rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/redstone diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/resolution b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/resolution similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/resolution rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/resolution diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/rm b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/rm similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/rm rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/rm diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/rmdir b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/rmdir similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/rmdir rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/rmdir diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/set b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/set similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/set rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/set diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/sh b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/sh similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/sh rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/sh diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/shutdown b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/shutdown similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/shutdown rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/shutdown diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/umount b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/umount similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/umount rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/umount diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/unalias b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/unalias similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/unalias rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/unalias diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/unset b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/unset similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/unset rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/unset diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/uptime b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/uptime similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/uptime rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/uptime diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/useradd b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/useradd similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/useradd rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/useradd diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/userdel b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/userdel similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/userdel rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/userdel diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/wget b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/wget similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/wget rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/wget diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/which b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/which similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/which rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/which diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/yes b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/yes similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/yes rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/man/yes diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/misc/greetings.txt b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/misc/greetings.txt similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/misc/greetings.txt rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/openos/usr/misc/greetings.txt diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k.remap b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k.remap similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k.remap rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k.remap diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/.prop b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/.prop similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/.prop rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/.prop diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/cat.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/cat.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/cat.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/cat.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/clear.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/clear.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/clear.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/clear.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/components.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/components.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/components.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/components.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/cp.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/cp.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/cp.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/cp.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/dd.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/dd.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/dd.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/dd.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/df.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/df.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/df.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/df.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/dmesg.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/dmesg.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/dmesg.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/dmesg.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/du.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/du.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/du.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/du.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/echo.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/echo.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/echo.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/echo.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/edit.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/edit.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/edit.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/edit.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/find.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/find.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/find.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/find.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/getty.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/getty.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/getty.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/getty.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/hostname.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/hostname.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/hostname.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/hostname.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/init.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/init.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/init.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/init.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/install.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/install.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/install.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/install.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/kill.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/kill.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/kill.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/kill.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/label.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/label.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/label.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/label.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/ln.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/ln.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/ln.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/ln.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/ls.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/ls.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/ls.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/ls.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/lua.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/lua.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/lua.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/lua.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mkdir.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mkdir.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mkdir.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mkdir.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/more.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/more.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/more.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/more.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mount.cow.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mount.cow.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mount.cow.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mount.cow.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mount.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mount.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mount.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mount.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mount.msdos.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mount.msdos.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mount.msdos.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mount.msdos.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mv.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mv.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mv.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/mv.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/passwd.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/passwd.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/passwd.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/passwd.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/pastebin.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/pastebin.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/pastebin.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/pastebin.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/ps.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/ps.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/ps.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/ps.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/pwd.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/pwd.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/pwd.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/pwd.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/rc.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/rc.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/rc.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/rc.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/readkey.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/readkey.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/readkey.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/readkey.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/reboot.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/reboot.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/reboot.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/reboot.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/resolution.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/resolution.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/resolution.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/resolution.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/rm.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/rm.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/rm.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/rm.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/sandbox.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/sandbox.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/sandbox.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/sandbox.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/sh.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/sh.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/sh.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/sh.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/shutdown.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/shutdown.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/shutdown.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/shutdown.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/sleep.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/sleep.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/sleep.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/sleep.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/sshd.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/sshd.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/sshd.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/sshd.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/tee.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/tee.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/tee.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/tee.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/touch.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/touch.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/touch.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/touch.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/uptime.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/uptime.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/uptime.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/uptime.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/watch.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/watch.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/watch.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/watch.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/wc.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/wc.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/wc.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/wc.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/wget.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/wget.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/wget.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/bin/wget.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/boot/kernel/pipes b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/boot/kernel/pipes similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/boot/kernel/pipes rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/boot/kernel/pipes diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/etc/rc.d/autoupdate.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/etc/rc.d/autoupdate.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/etc/rc.d/autoupdate.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/etc/rc.d/autoupdate.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/etc/rc.d/sshd.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/etc/rc.d/sshd.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/etc/rc.d/sshd.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/etc/rc.d/sshd.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/init.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/init.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/init.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/init.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/colors.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/colors.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/colors.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/colors.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/event.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/event.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/event.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/event.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/internet.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/internet.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/internet.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/internet.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/01_gc.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/01_gc.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/01_gc.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/01_gc.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/01_util.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/01_util.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/01_util.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/01_util.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/02_cmd.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/02_cmd.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/02_cmd.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/02_cmd.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/05_vfs.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/05_vfs.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/05_vfs.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/05_vfs.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/06_cowfs.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/06_cowfs.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/06_cowfs.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/06_cowfs.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/09_rootfs.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/09_rootfs.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/09_rootfs.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/09_rootfs.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/10_devfs.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/10_devfs.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/10_devfs.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/10_devfs.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/10_procfs.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/10_procfs.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/10_procfs.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/10_procfs.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/10_sysfs.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/10_sysfs.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/10_sysfs.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/10_sysfs.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/11_block.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/11_block.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/11_block.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/11_block.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/12_mount.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/12_mount.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/12_mount.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/12_mount.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/15_keventd.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/15_keventd.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/15_keventd.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/15_keventd.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/15_userspace.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/15_userspace.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/15_userspace.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/15_userspace.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_buffer.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_buffer.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_buffer.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_buffer.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_component.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_component.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_component.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_component.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_partition.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_partition.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_partition.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_partition.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_require.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_require.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_require.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/16_require.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_chatbox.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_chatbox.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_chatbox.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_chatbox.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_data.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_data.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_data.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_data.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_drive.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_drive.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_drive.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_drive.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_eeprom.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_eeprom.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_eeprom.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_eeprom.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_gpt.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_gpt.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_gpt.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_gpt.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_io.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_io.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_io.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_io.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_ipc.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_ipc.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_ipc.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_ipc.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_keyboard.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_keyboard.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_keyboard.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_keyboard.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_nfc.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_nfc.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_nfc.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_nfc.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_tape.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_tape.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_tape.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/17_tape.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/18_pty.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/18_pty.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/18_pty.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/18_pty.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/18_syscall.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/18_syscall.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/18_syscall.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/18_syscall.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/19_cgroups.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/19_cgroups.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/19_cgroups.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/19_cgroups.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/19_manageg.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/19_manageg.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/19_manageg.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/19_manageg.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/20_threading.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/20_threading.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/20_threading.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/20_threading.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/21_threadutil.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/21_threadutil.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/21_threadutil.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/21_threadutil.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/21_timer.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/21_timer.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/21_timer.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/21_timer.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/25_init.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/25_init.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/25_init.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/modules/base/25_init.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/msdosfs.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/msdosfs.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/msdosfs.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/msdosfs.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/rc.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/rc.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/rc.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/rc.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/serialization.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/serialization.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/serialization.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/serialization.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/shell.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/shell.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/shell.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/shell.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/sides.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/sides.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/sides.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/sides.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/term.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/term.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/term.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/term.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/text.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/text.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/text.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/lib/text.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/base64.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/base64.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/base64.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/base64.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/deflate.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/deflate.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/deflate.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/deflate.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/go.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/go.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/go.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/go.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/gpg.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/gpg.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/gpg.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/gpg.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/inflate.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/inflate.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/inflate.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/inflate.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/md5sum.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/md5sum.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/md5sum.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/md5sum.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/mkdosfs.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/mkdosfs.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/mkdosfs.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/mkdosfs.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/mpt.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/mpt.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/mpt.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/mpt.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/sha256sum.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/sha256sum.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/sha256sum.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/sha256sum.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/ssh.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/ssh.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/ssh.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/bin/ssh.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/lib/data.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/lib/data.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/lib/data.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/lib/data.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/lib/robot.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/lib/robot.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/lib/robot.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/lib/robot.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/man/pipes b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/man/pipes similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/man/pipes rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/man/pipes diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/sbin/sshsession.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/sbin/sshsession.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/sbin/sshsession.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/usr/sbin/sshsession.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/var/lib/mpt/config.db b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/var/lib/mpt/config.db similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/var/lib/mpt/config.db rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/var/lib/mpt/config.db diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/var/lib/mpt/mpt.db b/projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/var/lib/mpt/mpt.db similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/var/lib/mpt/mpt.db rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot/plan9k/var/lib/mpt/mpt.db diff --git a/Minecraft/src/main/resources/data/ocreloaded/loot_tables/blocks/keyboard.json b/projects/Minecraft/src/main/resources/data/ocreloaded/loot_tables/blocks/keyboard.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/loot_tables/blocks/keyboard.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/loot_tables/blocks/keyboard.json diff --git a/Minecraft/src/main/resources/data/ocreloaded/lua/bios.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/lua/bios.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/lua/bios.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/lua/bios.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/lua/machine.lua b/projects/Minecraft/src/main/resources/data/ocreloaded/lua/machine.lua similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/lua/machine.lua rename to projects/Minecraft/src/main/resources/data/ocreloaded/lua/machine.lua diff --git a/Minecraft/src/main/resources/data/ocreloaded/tags/items/chip_diamond.json b/projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/chip_diamond.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/tags/items/chip_diamond.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/chip_diamond.json diff --git a/Minecraft/src/main/resources/data/ocreloaded/tags/items/circuit_chip1.json b/projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/circuit_chip1.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/tags/items/circuit_chip1.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/circuit_chip1.json diff --git a/Minecraft/src/main/resources/data/ocreloaded/tags/items/circuit_chip2.json b/projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/circuit_chip2.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/tags/items/circuit_chip2.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/circuit_chip2.json diff --git a/Minecraft/src/main/resources/data/ocreloaded/tags/items/circuit_chip3.json b/projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/circuit_chip3.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/tags/items/circuit_chip3.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/circuit_chip3.json diff --git a/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_alu.json b/projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_alu.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/tags/items/material_alu.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_alu.json diff --git a/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_arrow_key.json b/projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_arrow_key.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/tags/items/material_arrow_key.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_arrow_key.json diff --git a/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_button_group.json b/projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_button_group.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/tags/items/material_button_group.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_button_group.json diff --git a/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_card.json b/projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_card.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/tags/items/material_card.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_card.json diff --git a/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_circuit_board_printed.json b/projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_circuit_board_printed.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/tags/items/material_circuit_board_printed.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_circuit_board_printed.json diff --git a/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_circuit_board_raw.json b/projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_circuit_board_raw.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/tags/items/material_circuit_board_raw.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_circuit_board_raw.json diff --git a/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_cu.json b/projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_cu.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/tags/items/material_cu.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_cu.json diff --git a/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_cutting_wire.json b/projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_cutting_wire.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/tags/items/material_cutting_wire.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_cutting_wire.json diff --git a/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_disk.json b/projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_disk.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/tags/items/material_disk.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_disk.json diff --git a/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_num_pad.json b/projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_num_pad.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/tags/items/material_num_pad.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_num_pad.json diff --git a/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_transistor.json b/projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_transistor.json similarity index 100% rename from Minecraft/src/main/resources/data/ocreloaded/tags/items/material_transistor.json rename to projects/Minecraft/src/main/resources/data/ocreloaded/tags/items/material_transistor.json diff --git a/Minecraft/src/main/resources/ocreloaded.mixins.json b/projects/Minecraft/src/main/resources/ocreloaded.mixins.json similarity index 100% rename from Minecraft/src/main/resources/ocreloaded.mixins.json rename to projects/Minecraft/src/main/resources/ocreloaded.mixins.json diff --git a/Minecraft/src/main/resources/pack.mcmeta b/projects/Minecraft/src/main/resources/pack.mcmeta similarity index 100% rename from Minecraft/src/main/resources/pack.mcmeta rename to projects/Minecraft/src/main/resources/pack.mcmeta diff --git a/projects/NeoForge/build.gradle.kts b/projects/NeoForge/build.gradle.kts new file mode 100644 index 0000000..aa9519b --- /dev/null +++ b/projects/NeoForge/build.gradle.kts @@ -0,0 +1,26 @@ +plugins { + id("oc-neo-based") + id("oc-loader") +} + +neoForge { + version = libs.versions.neoForge.get() + + validateAccessTransformers = true + + val ocreloaded by mods.registering { + sourceSet(sourceSets.main.get()) + } + + runs { + configureEach { + loadedMods.add(ocreloaded) + } + } +} + +dependencies { + compileOnly(project(":Minecraft")) + commonJava(project(path = ":Minecraft", configuration = "commonJava")) + commonResources(project(path = ":Minecraft", configuration = "commonResources")) +} \ No newline at end of file diff --git a/NeoForge/gradle.properties b/projects/NeoForge/gradle.properties similarity index 100% rename from NeoForge/gradle.properties rename to projects/NeoForge/gradle.properties diff --git a/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/client/OCReloadedClient.java b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/client/OCReloadedClient.java similarity index 51% rename from NeoForge/src/main/java/li/cil/ocreloaded/neoforge/client/OCReloadedClient.java rename to projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/client/OCReloadedClient.java index c81833a..2fc1ecb 100644 --- a/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/client/OCReloadedClient.java +++ b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/client/OCReloadedClient.java @@ -2,20 +2,23 @@ import li.cil.ocreloaded.minecraft.client.CommonClientHooks; import li.cil.ocreloaded.minecraft.client.registry.ClientRegistered; -import net.neoforged.bus.api.IEventBus; +import li.cil.ocreloaded.neoforge.common.OCReloaded; +import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; +@Mod(value = OCReloaded.MOD_ID, dist = Dist.CLIENT) +@EventBusSubscriber(modid = OCReloaded.MOD_ID, value = Dist.CLIENT) public class OCReloadedClient { + public OCReloadedClient() { - public OCReloadedClient(IEventBus eventBus) { - eventBus.register(this); } @SubscribeEvent - public void clientSetup(FMLClientSetupEvent event) { + public static void clientSetup(FMLClientSetupEvent event) { ClientRegistered.setup(); CommonClientHooks.setup(); } - } diff --git a/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java new file mode 100644 index 0000000..be80e26 --- /dev/null +++ b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java @@ -0,0 +1,24 @@ +package li.cil.ocreloaded.neoforge.common; + + +import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; +import li.cil.ocreloaded.minecraft.server.CommonServerHooks; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; +import net.neoforged.neoforge.event.server.ServerStartedEvent; + +@Mod(OCReloaded.MOD_ID) +@EventBusSubscriber(modid = OCReloaded.MOD_ID) +public class OCReloaded { + public static final String MOD_ID = "ocreloaded"; + + public OCReloaded() { + CommonRegistered.initialize(); + } + + @SubscribeEvent + public static void serverStarted(ServerStartedEvent event) { + CommonServerHooks.setup(event.getServer()); + } +} \ No newline at end of file diff --git a/NeoForge/src/main/resources/META-INF/mods.toml b/projects/NeoForge/src/main/resources/META-INF/neoforge.mods.toml similarity index 72% rename from NeoForge/src/main/resources/META-INF/mods.toml rename to projects/NeoForge/src/main/resources/META-INF/neoforge.mods.toml index 969b2ae..cbbd1c8 100644 --- a/NeoForge/src/main/resources/META-INF/mods.toml +++ b/projects/NeoForge/src/main/resources/META-INF/neoforge.mods.toml @@ -1,14 +1,15 @@ modLoader = "javafml" -loaderVersion = "[2,)" +loaderVersion = "{neoforgeLoaderVersionRange}" license = "See the LICENSE file included in the source code of this mod" [[mods]] modId = "ocreloaded" -version = "${version}" +version = "{version}" displayName = "OpenComputers Reloaded" displayURL = "https://oc.cil.li/" -logoFile = "assets/ocreloaded/textures/gui/logo.png" +logoFile = "../../../../../Minecraft/src/main/resources/ocreloaded/textures/gui/logo.png" +logoBlur = false credits = "Based on the original OpenComputers mod, which was inspired by a few mods, most notably ComputerCraft." authors = "EveryOS, 6TELOIV, Walksanator, timuzkas. Resources are from authors of original OpenComputers (Sangar, payonel, Vexatos and others)" description = "Bring programmable computers to Minecraft! This mod is a complete rewrite of OpenComputers, but with extra goodies." @@ -16,22 +17,15 @@ description = "Bring programmable computers to Minecraft! This mod is a complete [[dependencies.ocreloaded]] modId = "neoforge" type = "required" -versionRange = "[20.4,)" +versionRange = "{neoforgeVersionRange}" ordering = "NONE" side = "BOTH" [[dependencies.ocreloaded]] modId = "minecraft" type = "required" -versionRange = "[1.20.4,)" -ordering = "N:q\ONE" -side = "BOTH" - -[[dependencies.ocreloaded]] -modId = "architectury" -type = "required" -versionRange = "[11.1.17,)" -ordering = "AFTER" +versionRange = "{minecraftVersionRange}" +ordering = "NONE" side = "BOTH" [[mixins]] diff --git a/NeoForge/src/main/resources/ocreloaded.mixins.json b/projects/NeoForge/src/main/resources/ocreloaded.mixins.json similarity index 100% rename from NeoForge/src/main/resources/ocreloaded.mixins.json rename to projects/NeoForge/src/main/resources/ocreloaded.mixins.json diff --git a/NeoForge/src/main/resources/pack.mcmeta b/projects/NeoForge/src/main/resources/pack.mcmeta similarity index 100% rename from NeoForge/src/main/resources/pack.mcmeta rename to projects/NeoForge/src/main/resources/pack.mcmeta diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index 4ecff16..0000000 --- a/settings.gradle +++ /dev/null @@ -1,22 +0,0 @@ -pluginManagement { - repositories { - gradlePluginPortal() - mavenCentral() - maven { - name = "MinecraftForge" - url = "https://maven.minecraftforge.net/" - } - maven { - name = 'Architectury' - url = 'https://maven.architectury.dev/' - } - maven { - name = 'Fabric' - url = 'https://maven.fabricmc.net/' - } - } -} - -rootProject.name = 'OpenComputersReloaded' - -include ":Core", ":Minecraft", ":Fabric", ":NeoForge" \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..523c101 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,27 @@ +pluginManagement { + repositories { + gradlePluginPortal() + mavenCentral() + maven("https://maven.minecraftforge.net/") { + name = "MinecraftForge" + } + maven("https://maven.architectury.dev/") { + name = "Architectury" + } + + maven("https://maven.fabricmc.net/") { + name = "Fabric" + } + } +} + +rootProject.name = "OpenComputersReloaded" + +include("Core") +include("Minecraft") +include("NeoForge") +include("Fabric") + +for (project in rootProject.children) { + project.projectDir = file("projects/${project.name}") +} \ No newline at end of file diff --git a/Tools/check_crlf.py b/tools/check_crlf.py similarity index 100% rename from Tools/check_crlf.py rename to tools/check_crlf.py From b754385f3a2855a11316223e1f3229216e946421 Mon Sep 17 00:00:00 2001 From: mjarduk Date: Sun, 28 Sep 2025 19:59:12 +0300 Subject: [PATCH 03/10] Changed the java distribution version in the build workflow --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bd9cd11..08ecf60 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: - name: setup jdk uses: actions/setup-java@v4 with: - java-version: '17' + java-version: '21' distribution: 'microsoft' - name: make gradle wrapper executable run: chmod +x ./gradlew From c24dda6781cf58b05755e9ab3d285613d3f141d1 Mon Sep 17 00:00:00 2001 From: mjarduk <66081585+mjarduk@users.noreply.github.com> Date: Tue, 30 Sep 2025 22:07:45 +0300 Subject: [PATCH 04/10] Port the codebase to 1.21.1 (#29) * Fabric somewhat runs * Let Fabric build, add more registry stuff * Multiplatform changes. * Organize Creative Menu; Open Screens * Add non-null annotations * A few more nonnull annotations I missed * Computer can run on Fabric again! * Networking refactor. * Jury rigged the LuaCFactory to not halt and catch fire if a FileExistsException is caught, because that doesn't hamper the mod's operations. * Fix a workflow issue. --------- Co-authored-by: Jason Gronn --- .gitignore | 3 +- build.gradle.kts | 18 ++ buildSrc/src/main/kotlin/oc-common.gradle.kts | 3 + buildSrc/src/main/kotlin/oc-loader.gradle.kts | 24 +-- projects/Core/build.gradle.kts | 18 +- projects/Fabric/build.gradle.kts | 44 ++++- .../fabric/client/OCReloadedClient.java | 33 +++- .../common/FabricPlatformMenuHelper.java | 41 ++++ .../common/FabricPlatformRegistryHelper.java | 39 ++++ ...ft.common.registry.IPlatformRegistryHelper | 1 + ....minecraft.common.util.IPlatformMenuHelper | 1 + .../Fabric/src/main/resources/fabric.mod.json | 2 +- projects/Minecraft/build.gradle.kts | 38 +--- .../minecraft/client/ColorHandlers.java | 85 ++++---- .../minecraft/client/CommonClientHooks.java | 3 - .../client/assets/ClientTextures.java | 16 +- .../client/registry/ClientRegistered.java | 14 -- .../client/renderer/entity/CaseRenderer.java | 7 +- .../client/renderer/entity/RenderUtil.java | 11 +- .../screen/GuiGraphicsDrawingContext.java | 2 +- .../MultiBufferSourceDrawingContext.java | 22 +-- .../entity/screen/ScreenRenderer.java | 6 +- .../minecraft/client/screen/CaseScreen.java | 6 +- .../minecraft/client/screen/ScreenScreen.java | 7 +- .../client/screen/widget/ButtonWidget.java | 6 +- .../minecraft/client/sound/BeepSound.java | 5 +- .../minecraft/client/sound/SoundPlayer.java | 2 +- .../common/assets/SharedTextures.java | 18 +- .../minecraft/common/block/CaseBlock.java | 25 +-- .../minecraft/common/block/KeyboardBlock.java | 12 +- .../minecraft/common/block/ScreenBlock.java | 35 ++-- .../component/ComponentNetworkUtil.java | 6 +- .../common/container/BasicContainer.java | 6 +- .../common/entity/CaseBlockEntity.java | 48 +++-- .../common/entity/KeyboardBlockEntity.java | 16 +- .../common/entity/ScreenBlockEntity.java | 29 ++- .../integration/vanilla/VanillaRecipes.java | 14 +- .../minecraft/common/menu/CaseMenu.java | 23 +-- .../minecraft/common/menu/ComponentSlot.java | 4 +- .../minecraft/common/menu/ScreenMenu.java | 38 ++-- .../menu/provider/ScreenMenuProvider.java | 4 +- .../network/ClientNetworkMessageContext.java | 7 - .../common/network/NetworkHandler.java | 19 -- .../common/network/NetworkInterface.java | 13 -- .../common/network/NetworkMessage.java | 7 - .../minecraft/common/network/NetworkUtil.java | 96 ++------- .../network/ServerNetworkMessageContext.java | 7 - .../common/network/packets/PowerPacket.java | 64 ++++++ .../common/network/packets/ScreenPacket.java | 62 ++++++ .../common/network/packets/SoundPacket.java | 72 +++++++ .../screen/NetworkedTextModeBufferProxy.java | 8 +- .../screen/ScreenNetworkInputMessages.java | 112 +++++++++++ .../network/power/PowerNetworkHandler.java | 68 ------- .../network/power/PowerNetworkMessage.java | 31 --- .../network/screen/ScreenNetworkHandler.java | 80 -------- .../screen/ScreenNetworkInputMessages.java | 81 -------- .../network/screen/ScreenNetworkMessage.java | 41 ---- .../network/sound/SoundNetworkHandler.java | 61 ------ .../network/sound/SoundNetworkMessage.java | 48 ----- .../recipe/RecipeRegistrationDelegate.java | 4 +- .../minecraft/common/recipe/Recipes.java | 36 ++-- .../common/registry/CommonRegistered.java | 187 ++++++++++-------- .../registry/IPlatformRegistryHelper.java | 35 ++++ .../minecraft/common/util/Colors.java | 1 - .../common/util/IPlatformMenuHelper.java | 16 ++ .../server/machine/MachineSetup.java | 6 +- .../machine/fssup/LootFileSystemSupplier.java | 2 +- .../server/machine/lua/LuaCFactory.java | 11 +- .../src/main/resources/ocreloaded.mixins.json | 2 +- projects/NeoForge/build.gradle.kts | 19 +- projects/NeoForge/gradle.properties | 1 - .../neoforge/client/OCReloadedClient.java | 31 +++ .../common/NeoPlatformMenuHelper.java | 15 ++ .../common/NeoPlatformRegistryHelper.java | 30 +++ .../neoforge/common/OCReloaded.java | 3 +- .../resources/META-INF/neoforge.mods.toml | 4 +- ...ft.common.registry.IPlatformRegistryHelper | 1 + ....minecraft.common.util.IPlatformMenuHelper | 1 + .../src/main/resources/ocreloaded.mixins.json | 13 -- .../NeoForge/src/main/resources/pack.mcmeta | 6 - tools/check_crlf.py | 2 +- 81 files changed, 1044 insertions(+), 994 deletions(-) create mode 100644 build.gradle.kts create mode 100644 projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/FabricPlatformMenuHelper.java create mode 100644 projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/FabricPlatformRegistryHelper.java create mode 100644 projects/Fabric/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.registry.IPlatformRegistryHelper create mode 100644 projects/Fabric/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.util.IPlatformMenuHelper delete mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/ClientNetworkMessageContext.java delete mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkHandler.java delete mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkInterface.java delete mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkMessage.java delete mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/ServerNetworkMessageContext.java create mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/PowerPacket.java create mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/ScreenPacket.java create mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/SoundPacket.java rename projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/{ => packets}/screen/NetworkedTextModeBufferProxy.java (98%) create mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/screen/ScreenNetworkInputMessages.java delete mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkHandler.java delete mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkMessage.java delete mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkHandler.java delete mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkInputMessages.java delete mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkMessage.java delete mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkHandler.java delete mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkMessage.java create mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/registry/IPlatformRegistryHelper.java create mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/IPlatformMenuHelper.java delete mode 100644 projects/NeoForge/gradle.properties create mode 100644 projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/NeoPlatformMenuHelper.java create mode 100644 projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/NeoPlatformRegistryHelper.java create mode 100644 projects/NeoForge/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.registry.IPlatformRegistryHelper create mode 100644 projects/NeoForge/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.util.IPlatformMenuHelper delete mode 100644 projects/NeoForge/src/main/resources/ocreloaded.mixins.json delete mode 100644 projects/NeoForge/src/main/resources/pack.mcmeta diff --git a/.gitignore b/.gitignore index 2fcade0..3296c96 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ projects/*/bin .architectury-transformer .vscode -.idea \ No newline at end of file +.idea +.eclipse \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..46abfe5 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,18 @@ +plugins { + id("com.matyrobbrt.mc.registrationutils") version "1.21.0-0.2.2" +} + +registrationUtils { + group("li.cil.ocreloaded.minecraft.registration") + projects { + create("Fabric") { + type("Fabric") + } + create("NeoForge") { + type("NeoForge") + } + create("Minecraft") { + type("Common") + } + } +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/oc-common.gradle.kts b/buildSrc/src/main/kotlin/oc-common.gradle.kts index c6d3458..465d8a9 100644 --- a/buildSrc/src/main/kotlin/oc-common.gradle.kts +++ b/buildSrc/src/main/kotlin/oc-common.gradle.kts @@ -13,4 +13,7 @@ repositories { maven("https://maven.parchmentmc.org") { name = "ParchmentMC" } + maven("https://maven.blamejared.com") { + name = "BlameJared's maven" + } } \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/oc-loader.gradle.kts b/buildSrc/src/main/kotlin/oc-loader.gradle.kts index 02eed0a..737d992 100644 --- a/buildSrc/src/main/kotlin/oc-loader.gradle.kts +++ b/buildSrc/src/main/kotlin/oc-loader.gradle.kts @@ -2,20 +2,6 @@ plugins { id("oc-common") } -configurations { - create("commonJava") { - isCanBeResolved = true - } - create("commonResources") { - isCanBeResolved = true - } -} - -tasks.named("compileJava") { - dependsOn(configurations["commonJava"]) - source(configurations["commonJava"]) -} - tasks.withType { val properties = mapOf( "neoforgeVersionRange" to rootProject.properties["neo_loader_version_range"], @@ -29,4 +15,14 @@ tasks.withType { filesMatching(listOf("META-INF/neoforge.mods.toml", "pack.mcmeta", "fabric.mod.json")) { expand(properties) } +} + +tasks.named("processResources") { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + from(rootProject.file("libs/lua53")) { + into("data/ocreloaded/libs/lua53") + } + from(rootProject.file("libs/lua52")) { + into("data/ocreloaded/libs/lua52") + } } \ No newline at end of file diff --git a/projects/Core/build.gradle.kts b/projects/Core/build.gradle.kts index fc72190..b244ce4 100644 --- a/projects/Core/build.gradle.kts +++ b/projects/Core/build.gradle.kts @@ -6,19 +6,9 @@ repositories { mavenCentral() } -configurations { - create("coreJava") { - isCanBeResolved = false - isCanBeConsumed = true - } -} - -artifacts { - add("coreJava", sourceSets["main"].java.sourceDirectories.singleFile) -} - dependencies { - implementation(libs.typesafeConfig) - implementation(libs.slf4j) - implementation(files("../../libs/OpenComputers-JNLua.jar", "../../libs/OpenComputers-LuaJ.jar")) + compileOnly(libs.slf4j) + + api(libs.typesafeConfig) + api(files("../../libs/OpenComputers-JNLua.jar", "../../libs/OpenComputers-LuaJ.jar")) } \ No newline at end of file diff --git a/projects/Fabric/build.gradle.kts b/projects/Fabric/build.gradle.kts index a875a11..2a35734 100644 --- a/projects/Fabric/build.gradle.kts +++ b/projects/Fabric/build.gradle.kts @@ -1,12 +1,13 @@ +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar +import net.fabricmc.loom.task.RemapJarTask + +evaluationDependsOn(":Minecraft") + plugins { id("oc-loader") alias(libs.plugins.loom) } -loom { - -} - dependencies { minecraft("com.mojang:minecraft:${libs.versions.minecraft.get()}") mappings(loom.layered { @@ -15,8 +16,37 @@ dependencies { }) modImplementation("net.fabricmc:fabric-loader:${libs.versions.fabricLoader.get()}") modImplementation("net.fabricmc.fabric-api:fabric-api:${libs.versions.fabricApi.get()}") + modImplementation("mysticdrew:common-networking-fabric:1.0.20-1.21.1") + + implementation(project(":Core")) + implementation(project(":Minecraft")) +} + +sourceSets.main { + resources { + srcDir(project(":Minecraft").sourceSets.main.get().resources.srcDirs) + } +} + +tasks.withType { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + from(project(":Core").sourceSets.main.get().output) + from(project(":Minecraft").sourceSets.main.get().output) + + dependencies { + include(dependency(libs.typesafeConfig)) + include(dependency(files("../../libs/OpenComputers-JNLua.jar", "../../libs/OpenComputers-LuaJ.jar"))) + } + + relocate("com.typesafe.config", "li.cil.ocreloaded.lib.config") + archiveClassifier.set("all") +} + +tasks.withType { + inputFile.set(tasks.shadowJar.get().archiveFile) + archiveClassifier.set("") +} - compileOnly(project(":Minecraft")) - commonJava(project(path = ":Minecraft", configuration = "commonJava")) - commonResources(project(path = ":Minecraft", configuration = "commonResources")) +tasks.build { + dependsOn(tasks.remapJar) } \ No newline at end of file diff --git a/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/client/OCReloadedClient.java b/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/client/OCReloadedClient.java index 1434693..8d0aa2d 100644 --- a/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/client/OCReloadedClient.java +++ b/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/client/OCReloadedClient.java @@ -1,13 +1,44 @@ package li.cil.ocreloaded.fabric.client; +import li.cil.ocreloaded.minecraft.client.ColorHandlers; import li.cil.ocreloaded.minecraft.client.CommonClientHooks; import li.cil.ocreloaded.minecraft.client.registry.ClientRegistered; +import li.cil.ocreloaded.minecraft.client.renderer.entity.CaseRenderer; +import li.cil.ocreloaded.minecraft.client.renderer.entity.screen.ScreenRenderer; +import li.cil.ocreloaded.minecraft.client.screen.CaseScreen; +import li.cil.ocreloaded.minecraft.client.screen.ScreenScreen; +import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry; +import net.minecraft.client.gui.screens.MenuScreens; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderers; public class OCReloadedClient implements ClientModInitializer { @Override public void onInitializeClient() { ClientRegistered.setup(); CommonClientHooks.setup(); + registerClientStuff(); } -} + + public void registerClientStuff() { + registerColorHandlers(); + registerBERenderers(); + registerMenuScreens(); + } + + public void registerColorHandlers() { + ColorHandlers.registerBlockColorHandlers((block, blockColor) -> ColorProviderRegistry.BLOCK.register(blockColor, block)); + ColorHandlers.registerItemColorHandlers((item, itemColor) -> ColorProviderRegistry.ITEM.register(itemColor, item)); + } + + public void registerBERenderers() { + BlockEntityRenderers.register(CommonRegistered.CASE_BLOCK_ENTITY.get(), CaseRenderer::new); + BlockEntityRenderers.register(CommonRegistered.SCREEN_BLOCK_ENTITY.get(), ScreenRenderer::new); + } + + public void registerMenuScreens() { + MenuScreens.register(CommonRegistered.CASE_MENU_TYPE.get(), CaseScreen::new); + MenuScreens.register(CommonRegistered.SCREEN_MENU_TYPE.get(), ScreenScreen::new); + } +} \ No newline at end of file diff --git a/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/FabricPlatformMenuHelper.java b/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/FabricPlatformMenuHelper.java new file mode 100644 index 0000000..f6372d1 --- /dev/null +++ b/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/FabricPlatformMenuHelper.java @@ -0,0 +1,41 @@ +package li.cil.ocreloaded.fabric.common; + +import java.util.function.Consumer; + +import li.cil.ocreloaded.minecraft.common.util.IPlatformMenuHelper; +import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerFactory; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; + +public class FabricPlatformMenuHelper implements IPlatformMenuHelper { + @Override + public void openExtendedMenu(ServerPlayer serverPlayer, MenuProvider menuProvider, Consumer byteBufConsumer) { + serverPlayer.openMenu(new ExtendedScreenHandlerFactory() { + + @Override + public Component getDisplayName() { + return menuProvider.getDisplayName(); + } + + @Override + public AbstractContainerMenu createMenu(int containerId, Inventory playerInventory, Player player) { + return menuProvider.createMenu(containerId, playerInventory, player); + } + + @Override + public FriendlyByteBuf getScreenOpeningData(ServerPlayer player) { + FriendlyByteBuf byteBuf = PacketByteBufs.create(); + byteBufConsumer.accept(byteBuf); + return byteBuf; + } + + }); + } + +} diff --git a/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/FabricPlatformRegistryHelper.java b/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/FabricPlatformRegistryHelper.java new file mode 100644 index 0000000..76247c5 --- /dev/null +++ b/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/FabricPlatformRegistryHelper.java @@ -0,0 +1,39 @@ +package li.cil.ocreloaded.fabric.common; + +import io.netty.buffer.Unpooled; +import li.cil.ocreloaded.minecraft.common.registry.IPlatformRegistryHelper; +import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; +import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerType; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; + +public class FabricPlatformRegistryHelper implements IPlatformRegistryHelper { + @Override + public CreativeModeTab.Builder constructTabBuilder() { + return FabricItemGroup.builder(); + } + + @Override + public BlockEntityType createBlockEntityType(BlockEntityConstructor constructor, Block... blocks) { + return BlockEntityType.Builder.of(constructor::get, blocks).build(); + } + + @Override + public MenuType registerMenuType(TypedMenuConstructor menuConstructor) { + ExtendedScreenHandlerType.ExtendedFactory screenFactory = menuConstructor::createMenu; + + return new ExtendedScreenHandlerType<>(screenFactory, StreamCodec.of((dest, src) -> { + dest.writeBytes(src); + }, s -> { + FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); + byteBuf.writeBytes(s); + return byteBuf; + })); + } +} diff --git a/projects/Fabric/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.registry.IPlatformRegistryHelper b/projects/Fabric/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.registry.IPlatformRegistryHelper new file mode 100644 index 0000000..e150e86 --- /dev/null +++ b/projects/Fabric/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.registry.IPlatformRegistryHelper @@ -0,0 +1 @@ +li.cil.ocreloaded.fabric.common.FabricPlatformRegistryHelper \ No newline at end of file diff --git a/projects/Fabric/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.util.IPlatformMenuHelper b/projects/Fabric/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.util.IPlatformMenuHelper new file mode 100644 index 0000000..da91f4d --- /dev/null +++ b/projects/Fabric/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.util.IPlatformMenuHelper @@ -0,0 +1 @@ +li.cil.ocreloaded.fabric.common.FabricPlatformMenuHelper \ No newline at end of file diff --git a/projects/Fabric/src/main/resources/fabric.mod.json b/projects/Fabric/src/main/resources/fabric.mod.json index a75ef10..335e308 100644 --- a/projects/Fabric/src/main/resources/fabric.mod.json +++ b/projects/Fabric/src/main/resources/fabric.mod.json @@ -18,7 +18,7 @@ }, "depends": { "fabricloader": ">=0.16.0", - "minecraft": "~{minecraftVersion}", + "minecraft": "~${minecraftVersion}", "java": ">=21", "fabric-api": "*" } diff --git a/projects/Minecraft/build.gradle.kts b/projects/Minecraft/build.gradle.kts index 1d2dce5..17b47c1 100644 --- a/projects/Minecraft/build.gradle.kts +++ b/projects/Minecraft/build.gradle.kts @@ -6,46 +6,12 @@ neoForge { neoFormVersion = libs.versions.neoForm.get() } -configurations { - create("commonJava") { - isCanBeResolved = false - isCanBeConsumed = true - } - create("commonResources") { - isCanBeResolved = false - isCanBeConsumed = true - } -} - dependencies { - compileOnly(project(":Core")) - coreJava(project(path= ":Core", configuration= "coreJava")) - - implementation(libs.typesafeConfig) - implementation(files("../../libs/OpenComputers-JNLua.jar", "../../libs/OpenComputers-LuaJ.jar")) -} - -artifacts { - add("commonJava", sourceSets["main"].java.sourceDirectories.singleFile) - add("commonResources", sourceSets["main"].resources.sourceDirectories.singleFile) -} - -tasks.named("compileJava") { - dependsOn(configurations["coreJava"]) - source(configurations["coreJava"]) + api(project(":Core")) + implementation("mysticdrew:common-networking-common:1.0.20-1.21.1") } tasks.register("copyResources") { - copy { - from("${rootProject.projectDir}/libs/lua52") - into(file("build/resources/main/data/ocreloaded/libs/lua52")) - } - - copy { - from("${rootProject.projectDir}/libs/lua53") - into(file("build/resources/main/data/ocreloaded/libs/lua53")) - } - copy { from("${projectDir}/src/generated/resources/") into(file("build/resources/main/")) diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/ColorHandlers.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/ColorHandlers.java index 709cb82..9aeb967 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/ColorHandlers.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/ColorHandlers.java @@ -1,26 +1,35 @@ package li.cil.ocreloaded.minecraft.client; -import dev.architectury.registry.client.rendering.ColorHandlerRegistry; import li.cil.ocreloaded.minecraft.common.block.TieredBlock; import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; import li.cil.ocreloaded.minecraft.common.util.Colors; +import net.minecraft.client.color.block.BlockColor; +import net.minecraft.client.color.item.ItemColor; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; +import java.util.function.BiConsumer; + public final class ColorHandlers { - - private static final int[] TIER_COLORS = new int[] { - Colors.LIGHT_GRAY, - Colors.YELLOW, - Colors.CYAN, - Colors.MAGENTA + private static final int[] TIER_COLORS = new int[]{ + Colors.LIGHT_GRAY, + Colors.YELLOW, + Colors.CYAN, + Colors.MAGENTA }; - private ColorHandlers() {} + private static final Item[] ITEMS = new Item[]{ + CommonRegistered.CASE_BLOCK_ITEM_TIER_1.get(), + CommonRegistered.CASE_BLOCK_ITEM_TIER_2.get(), + CommonRegistered.CASE_BLOCK_ITEM_TIER_3.get(), + CommonRegistered.CASE_BLOCK_ITEM_CREATIVE.get(), + CommonRegistered.SCREEN_BLOCK_ITEM_TIER_1.get(), + CommonRegistered.SCREEN_BLOCK_ITEM_TIER_2.get(), + CommonRegistered.SCREEN_BLOCK_ITEM_TIER_3.get() + }; - public static void setup() { - registerBlockColorHandlers( + private static final Block[] BLOCKS = new Block[]{ CommonRegistered.CASE_BLOCK_TIER_1.get(), CommonRegistered.CASE_BLOCK_TIER_2.get(), CommonRegistered.CASE_BLOCK_TIER_3.get(), @@ -28,40 +37,36 @@ public static void setup() { CommonRegistered.SCREEN_BLOCK_TIER_1.get(), CommonRegistered.SCREEN_BLOCK_TIER_2.get(), CommonRegistered.SCREEN_BLOCK_TIER_3.get() - ); + }; - registerItemColorHandlers( - CommonRegistered.CASE_BLOCK_ITEM_TIER_1.get(), - CommonRegistered.CASE_BLOCK_ITEM_TIER_2.get(), - CommonRegistered.CASE_BLOCK_ITEM_TIER_3.get(), - CommonRegistered.CASE_BLOCK_ITEM_CREATIVE.get(), - CommonRegistered.SCREEN_BLOCK_ITEM_TIER_1.get(), - CommonRegistered.SCREEN_BLOCK_ITEM_TIER_2.get(), - CommonRegistered.SCREEN_BLOCK_ITEM_TIER_3.get() - ); + private ColorHandlers() { } - private static void registerBlockColorHandlers(Block... blocks) { - ColorHandlerRegistry.registerBlockColors((blockState, blockAndTintGetter, blockPos, tintIndex) -> { - if (blockState.getBlock() instanceof TieredBlock tieredBlock && tieredBlock.getTier() <= TIER_COLORS.length) { - return TIER_COLORS[tieredBlock.getTier() - 1]; - } - - return Colors.WHITE; - }, blocks); - } + public static void registerBlockColorHandlers(BiConsumer registerFunc) { + for (Block block : BLOCKS) { + registerFunc.accept(block, (blockState, blockAndTintGetter, blockPos, i) -> { + if (blockState.getBlock() instanceof TieredBlock tieredBlock && tieredBlock.getTier() <= TIER_COLORS.length) { + return TIER_COLORS[tieredBlock.getTier() - 1]; + } - private static void registerItemColorHandlers(Item... items) { - ColorHandlerRegistry.registerItemColors((stack, tintIndex) -> { - if (stack.getItem() instanceof TieredBlock tieredBlock && tieredBlock.getTier() <= TIER_COLORS.length) { - return TIER_COLORS[tieredBlock.getTier() - 1]; - } - if (stack.getItem() instanceof BlockItem blockItem && blockItem.getBlock() instanceof TieredBlock tieredBlock && tieredBlock.getTier() <= TIER_COLORS.length) { - return TIER_COLORS[tieredBlock.getTier() - 1]; - } - - return Colors.WHITE; - }, items); + return Colors.WHITE; + }); + } } + public static void registerItemColorHandlers(BiConsumer registerFunc) { + for (Item item : ITEMS) { + registerFunc.accept(item, (itemStack, tintIndex) -> { + if (itemStack.getItem() instanceof TieredBlock tieredBlock && tieredBlock.getTier() <= TIER_COLORS.length) { + return TIER_COLORS[tieredBlock.getTier() - 1]; + } + + if (itemStack.getItem() instanceof BlockItem blockItem && blockItem.getBlock() instanceof TieredBlock tieredBlock && tieredBlock.getTier() <= TIER_COLORS.length) { + return TIER_COLORS[tieredBlock.getTier() - 1]; + } + + return Colors.WHITE; + }); + } + } } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/CommonClientHooks.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/CommonClientHooks.java index 347d41a..11b93e2 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/CommonClientHooks.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/CommonClientHooks.java @@ -9,9 +9,6 @@ public final class CommonClientHooks { private CommonClientHooks() {} public static void setup() { - ColorHandlers.setup(); - ClientBridge.getInstance().registerClient(SoundPlayerProvider.class, new SoundPlayer()); } - } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/assets/ClientTextures.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/assets/ClientTextures.java index 05de1cd..8822c1e 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/assets/ClientTextures.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/assets/ClientTextures.java @@ -5,17 +5,17 @@ public class ClientTextures { // GUI textures - public static final ResourceLocation BACKGROUND = new ResourceLocation("ocreloaded", "textures/gui/background.png"); - public static final ResourceLocation BORDERS = new ResourceLocation("ocreloaded", "textures/gui/borders.png"); - public static final ResourceLocation COMPUTER = new ResourceLocation("ocreloaded", "textures/gui/computer.png"); - public static final ResourceLocation POWER_BUTTON = new ResourceLocation("ocreloaded", "textures/gui/button_power.png"); - public static final ResourceLocation SLOT = new ResourceLocation("ocreloaded", "textures/gui/slot.png"); + public static final ResourceLocation BACKGROUND = ResourceLocation.fromNamespaceAndPath("ocreloaded", "textures/gui/background.png"); + public static final ResourceLocation BORDERS = ResourceLocation.fromNamespaceAndPath("ocreloaded", "textures/gui/borders.png"); + public static final ResourceLocation COMPUTER = ResourceLocation.fromNamespaceAndPath("ocreloaded", "textures/gui/computer.png"); + public static final ResourceLocation POWER_BUTTON = ResourceLocation.fromNamespaceAndPath("ocreloaded", "textures/gui/button_power.png"); + public static final ResourceLocation SLOT = ResourceLocation.fromNamespaceAndPath("ocreloaded", "textures/gui/slot.png"); // Block textures - public static final ResourceLocation CASE_FRONT_RUNNING = new ResourceLocation("ocreloaded", "block/overlay/case_front_running"); + public static final ResourceLocation CASE_FRONT_RUNNING = ResourceLocation.fromNamespaceAndPath("ocreloaded", "block/overlay/case_front_running"); // Font textures - public static final ResourceLocation FONT_NONE = new ResourceLocation("ocreloaded", "block/overlay/term_blank"); - public static final ResourceLocation FONT = new ResourceLocation("ocreloaded", "block/overlay/term_font"); + public static final ResourceLocation FONT_NONE = ResourceLocation.fromNamespaceAndPath("ocreloaded", "block/overlay/term_blank"); + public static final ResourceLocation FONT = ResourceLocation.fromNamespaceAndPath("ocreloaded", "block/overlay/term_font"); } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/registry/ClientRegistered.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/registry/ClientRegistered.java index c0bb467..16202af 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/registry/ClientRegistered.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/registry/ClientRegistered.java @@ -1,21 +1,7 @@ package li.cil.ocreloaded.minecraft.client.registry; -import dev.architectury.registry.client.rendering.BlockEntityRendererRegistry; -import dev.architectury.registry.menu.MenuRegistry; -import li.cil.ocreloaded.minecraft.client.renderer.entity.CaseRenderer; -import li.cil.ocreloaded.minecraft.client.renderer.entity.screen.ScreenRenderer; -import li.cil.ocreloaded.minecraft.client.screen.CaseScreen; -import li.cil.ocreloaded.minecraft.client.screen.ScreenScreen; -import li.cil.ocreloaded.minecraft.common.registry.CommoznRegistered; - public class ClientRegistered { - public static void setup() { - CommonRegistered.CASE_MENU_TYPE.listen(menu -> MenuRegistry.registerScreenFactory(menu, CaseScreen::new)); - CommonRegistered.SCREEN_MENU_TYPE.listen(menu -> MenuRegistry.registerScreenFactory(menu, ScreenScreen::new)); - CommonRegistered.CASE_BLOCK_ENTITY.listen(blockEntityType -> BlockEntityRendererRegistry.register(blockEntityType, CaseRenderer::new)); - CommonRegistered.SCREEN_BLOCK_ENTITY.listen(blockEntityType -> BlockEntityRendererRegistry.register(blockEntityType, ScreenRenderer::new)); } - } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/CaseRenderer.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/CaseRenderer.java index d7e2979..9a251cc 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/CaseRenderer.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/CaseRenderer.java @@ -1,5 +1,7 @@ package li.cil.ocreloaded.minecraft.client.renderer.entity; +import javax.annotation.Nonnull; + import org.joml.Quaternionf; import com.mojang.blaze3d.vertex.PoseStack; @@ -18,7 +20,10 @@ public class CaseRenderer implements BlockEntityRenderer { public CaseRenderer(BlockEntityRendererProvider.Context context) {} @Override - public void render(CaseBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int combinedLight, int combinedOverlay) { + public void render( + @Nonnull CaseBlockEntity blockEntity, float partialTick, @Nonnull PoseStack poseStack, + @Nonnull MultiBufferSource bufferSource, int combinedLight, int combinedOverlay + ) { poseStack.pushPose(); poseStack.translate(.5, .5, 0.5); diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/RenderUtil.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/RenderUtil.java index a1bfc88..5abb4be 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/RenderUtil.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/RenderUtil.java @@ -49,12 +49,11 @@ public static void renderSideTexture( private static void putVertexWithAO(VertexConsumer vertexConsumer, Matrix4f matrix, float x, float y, TextureAtlasSprite sprite, float brightness, int lightmap) { vertexConsumer - .vertex(matrix, x, y, 0) - .color((int) (brightness * 255), (int) (brightness * 255), (int) (brightness * 255), 255) - .uv(sprite.getU(x > 0 ? 1 : 0), sprite.getV(y > 0 ? 0 : 1)) - .uv2(lightmap) - .normal(0, 0, 0) - .endVertex(); + .addVertex(matrix, x, y, 0) + .setColor((int) (brightness * 255), (int) (brightness * 255), (int) (brightness * 255), 255) + .setUv(sprite.getU(x > 0 ? 1 : 0), sprite.getV(y > 0 ? 0 : 1)) + .setLight(lightmap) + .setNormal(0, 0, 0); } private static float getVertexPosX(int vertexIndex) { diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/GuiGraphicsDrawingContext.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/GuiGraphicsDrawingContext.java index 30fea41..51de9b1 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/GuiGraphicsDrawingContext.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/GuiGraphicsDrawingContext.java @@ -26,7 +26,7 @@ public void blit( ResourceLocation textureLocation, int adjustedDestX, int adjustedDestY, int adjustedDestW, int adjustedDestH, int srcX, int srcY, int srcW, int srcH, int textureWidth, int textureHeight ) { - ResourceLocation adjustedTextureLocation = new ResourceLocation(textureLocation.getNamespace(), "textures/" + textureLocation.getPath() + ".png"); + ResourceLocation adjustedTextureLocation = ResourceLocation.fromNamespaceAndPath(textureLocation.getNamespace(), "textures/" + textureLocation.getPath() + ".png"); this.graphics.blit(adjustedTextureLocation, adjustedDestX, adjustedDestY, adjustedDestW, adjustedDestH, srcX, srcY, srcW, srcH, textureWidth, textureHeight); } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/MultiBufferSourceDrawingContext.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/MultiBufferSourceDrawingContext.java index c914559..b88e226 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/MultiBufferSourceDrawingContext.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/MultiBufferSourceDrawingContext.java @@ -64,22 +64,20 @@ public void blit( private void putVertexWithAO(VertexConsumer vertexConsumer, Matrix4f matrix, float x, float y, float u, float v, TextureAtlasSprite sprite) { vertexConsumer - .vertex(matrix, x, y, 0) - .color((int) (color[0] * 255), (int) (color[1] * 255), (int) (color[2] * 255), (int) (color[3] * 255)) - .uv(sprite.getU(u), sprite.getV(v)) - .uv2(0xF000F0) - .normal(0, 0, 0) - .endVertex(); + .addVertex(matrix, x, y, 0) + .setColor((int) (color[0] * 255), (int) (color[1] * 255), (int) (color[2] * 255), (int) (color[3] * 255)) + .setUv(sprite.getU(u), sprite.getV(v)) + .setLight(0xF000F0) + .setNormal(0, 0, 0); } private void putFillVertexWithAO(VertexConsumer vertexConsumer, Matrix4f matrix, float x, float y, float u, float v, TextureAtlasSprite sprite, int myColor) { vertexConsumer - .vertex(matrix, x, y, .001f) - .color((myColor >> 16) & 0xFF, (myColor >> 8) & 0xFF, myColor & 0xFF, (myColor >> 24) & 0xFF) - .uv(sprite.getU(u), sprite.getV(v)) - .uv2(0xF000F0) - .normal(0, 0, 0) - .endVertex(); + .addVertex(matrix, x, y, .001f) + .setColor((myColor >> 16) & 0xFF, (myColor >> 8) & 0xFF, myColor & 0xFF, (myColor >> 24) & 0xFF) + .setUv(sprite.getU(u), sprite.getV(v)) + .setLight(0xF000F0) + .setNormal(0, 0, 0); } } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/ScreenRenderer.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/ScreenRenderer.java index ff97e0d..cc06b90 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/ScreenRenderer.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/renderer/entity/screen/ScreenRenderer.java @@ -1,5 +1,7 @@ package li.cil.ocreloaded.minecraft.client.renderer.entity.screen; +import javax.annotation.Nonnull; + import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; @@ -22,8 +24,8 @@ public ScreenRenderer(BlockEntityRendererProvider.Context context) {} @Override public void render( - ScreenBlockEntity blockEntity, float partialTick, PoseStack poseStack, - MultiBufferSource bufferSource, int combinedLight, int combinedOverlay + @Nonnull ScreenBlockEntity blockEntity, float partialTick, @Nonnull PoseStack poseStack, + @Nonnull MultiBufferSource bufferSource, int combinedLight, int combinedOverlay ) { int[] bufferSize = blockEntity.getScreenBuffer().viewport(); float totalWidth = bufferSize[0] * ScreenDisplayRenderer.CELL_WIDTH; diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/CaseScreen.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/CaseScreen.java index a14eaea..1e0c875 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/CaseScreen.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/CaseScreen.java @@ -2,6 +2,8 @@ import java.util.List; +import javax.annotation.Nonnull; + import com.mojang.blaze3d.platform.GlStateManager.DestFactor; import com.mojang.blaze3d.platform.GlStateManager.SourceFactor; import com.mojang.blaze3d.systems.RenderSystem; @@ -36,7 +38,7 @@ protected void init() { } @Override - protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int mouseX, int mouseY) { + protected void renderBg(@Nonnull GuiGraphics guiGraphics, float partialTicks, int mouseX, int mouseY) { int x = (this.width - this.imageWidth) / 2; int y = (this.height - this.imageHeight) / 2; guiGraphics.blit(ClientTextures.BACKGROUND, x, y, 0, 0, this.imageWidth, this.imageHeight); @@ -46,7 +48,7 @@ protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int mouseX, } @Override - public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + public void render(@Nonnull GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { super.render(guiGraphics, mouseX, mouseY, partialTicks); for (Slot slot: ComponentHighlightHint.findHighlightHintSlots(this.menu.slots, this.hoveredSlot)) { renderSlotHighlight(guiGraphics, slot.x + (this.width - this.imageWidth) / 2, slot.y + (this.height - this.imageHeight) / 2, 0); diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/ScreenScreen.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/ScreenScreen.java index c73c77b..d5322b4 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/ScreenScreen.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/ScreenScreen.java @@ -1,5 +1,7 @@ package li.cil.ocreloaded.minecraft.client.screen; +import javax.annotation.Nonnull; + import org.lwjgl.glfw.GLFW; import com.mojang.blaze3d.platform.InputConstants; @@ -37,7 +39,7 @@ public ScreenScreen(ScreenMenu screenMenu, Inventory inventory, Component compon } @Override - protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int mouseX, int mouseY) { + protected void renderBg(@Nonnull GuiGraphics guiGraphics, float partialTicks, int mouseX, int mouseY) { ScreenBlockEntity blockEntity = this.menu.getBlockEntity(); TextModeBuffer textModeBuffer = blockEntity.getScreenBuffer(); int[] resolution = textModeBuffer.viewport(); @@ -64,7 +66,7 @@ protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int mouseX, } @Override - public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + public void render(@Nonnull GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { renderBackground(guiGraphics, mouseX, mouseY, partialTicks); ScreenBlockEntity blockEntity = this.menu.getBlockEntity(); @@ -74,6 +76,7 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partia } @Override + @SuppressWarnings("null") // Linter being not smart public boolean keyPressed(int keyCode, int scanCode, int modifiers) { if (keyCode == InputConstants.KEY_ESCAPE) { this.onClose(); diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/widget/ButtonWidget.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/widget/ButtonWidget.java index f4b1ab4..fb2cf57 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/widget/ButtonWidget.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/widget/ButtonWidget.java @@ -1,5 +1,7 @@ package li.cil.ocreloaded.minecraft.client.screen.widget; +import javax.annotation.Nonnull; + import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.AbstractButton; import net.minecraft.client.gui.narration.NarrationElementOutput; @@ -36,13 +38,13 @@ public void onPress() { } @Override - protected void updateWidgetNarration(NarrationElementOutput narrationElementOutput) { + protected void updateWidgetNarration(@Nonnull NarrationElementOutput narrationElementOutput) { // TODO Auto-generated method stub // throw new UnsupportedOperationException("Unimplemented method 'updateWidgetNarration'"); } @Override - public void renderWidget(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + public void renderWidget(@Nonnull GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { if (!this.isPressed() && !this.isHovered) { guiGraphics.blit(texture, this.x, this.y, 0, 0, this.width, this.height, TEXTURE_WIDTH, TEXTURE_HEIGHT); } else if (!this.isPressed() && this.isHovered) { diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/sound/BeepSound.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/sound/BeepSound.java index 949aa8e..5218d93 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/sound/BeepSound.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/sound/BeepSound.java @@ -5,6 +5,7 @@ import java.nio.ByteOrder; import java.util.concurrent.CompletableFuture; +import javax.annotation.Nonnull; import javax.sound.sampled.AudioFormat; import net.minecraft.client.Minecraft; @@ -57,10 +58,10 @@ public ByteBuffer read(int capacity) throws IOException { } @Override - public WeighedSoundEvents resolve(SoundManager soundManager) { + public WeighedSoundEvents resolve(@Nonnull SoundManager soundManager) { float volume = Minecraft.getInstance().options.getSoundSourceVolume(SoundSource.BLOCKS); this.sound = new Sound( - new ResourceLocation("minecraft", "intentionally_empty").toString(), + ResourceLocation.fromNamespaceAndPath("minecraft", "intentionally_empty"), (SampledFloat) ConstantFloat.of(volume), (SampledFloat) ConstantFloat.of(1.0f), 1, Sound.Type.FILE, true, false, 16); return new WeighedSoundEvents(getLocation(), null); } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/sound/SoundPlayer.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/sound/SoundPlayer.java index d15732d..ce774c6 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/sound/SoundPlayer.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/sound/SoundPlayer.java @@ -9,7 +9,7 @@ public class SoundPlayer implements SoundPlayerProvider { @Override public void playBeepSound(BlockPos position, short frequency, short duration) { - ResourceLocation resourceLocation = new ResourceLocation("ocreloaded", "beep"); + ResourceLocation resourceLocation = ResourceLocation.fromNamespaceAndPath("ocreloaded", "beep"); BeepSound beepSound = new BeepSound(resourceLocation, position, frequency, duration); Minecraft.getInstance().getSoundManager().play(beepSound); } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/assets/SharedTextures.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/assets/SharedTextures.java index 15ee373..da189c6 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/assets/SharedTextures.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/assets/SharedTextures.java @@ -4,15 +4,15 @@ public class SharedTextures { - public static final ResourceLocation EEPROM_ICON = new ResourceLocation("ocreloaded", "textures/item/icon/eeprom.png"); - public static final ResourceLocation CARD_ICON = new ResourceLocation("ocreloaded", "textures/item/icon/card.png"); - public static final ResourceLocation CPU_ICON = new ResourceLocation("ocreloaded", "textures/item/icon/cpu.png"); - public static final ResourceLocation HDD_ICON = new ResourceLocation("ocreloaded", "textures/item/icon/hdd.png"); - public static final ResourceLocation MEMORY_ICON = new ResourceLocation("ocreloaded", "textures/item/icon/memory.png"); - public static final ResourceLocation FLOPPY_ICON = new ResourceLocation("ocreloaded", "textures/item/icon/floppy.png"); + public static final ResourceLocation EEPROM_ICON = ResourceLocation.fromNamespaceAndPath("ocreloaded", "textures/item/icon/eeprom.png"); + public static final ResourceLocation CARD_ICON = ResourceLocation.fromNamespaceAndPath("ocreloaded", "textures/item/icon/card.png"); + public static final ResourceLocation CPU_ICON = ResourceLocation.fromNamespaceAndPath("ocreloaded", "textures/item/icon/cpu.png"); + public static final ResourceLocation HDD_ICON = ResourceLocation.fromNamespaceAndPath("ocreloaded", "textures/item/icon/hdd.png"); + public static final ResourceLocation MEMORY_ICON = ResourceLocation.fromNamespaceAndPath("ocreloaded", "textures/item/icon/memory.png"); + public static final ResourceLocation FLOPPY_ICON = ResourceLocation.fromNamespaceAndPath("ocreloaded", "textures/item/icon/floppy.png"); - public static final ResourceLocation TIER1_ICON = new ResourceLocation("ocreloaded", "textures/item/icon/tier0.png"); - public static final ResourceLocation TIER2_ICON = new ResourceLocation("ocreloaded", "textures/item/icon/tier1.png"); - public static final ResourceLocation TIER3_ICON = new ResourceLocation("ocreloaded", "textures/item/icon/tier2.png"); + public static final ResourceLocation TIER1_ICON = ResourceLocation.fromNamespaceAndPath("ocreloaded", "textures/item/icon/tier0.png"); + public static final ResourceLocation TIER2_ICON = ResourceLocation.fromNamespaceAndPath("ocreloaded", "textures/item/icon/tier1.png"); + public static final ResourceLocation TIER3_ICON = ResourceLocation.fromNamespaceAndPath("ocreloaded", "textures/item/icon/tier2.png"); } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/CaseBlock.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/CaseBlock.java index dde8ae6..e30ade1 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/CaseBlock.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/CaseBlock.java @@ -1,13 +1,15 @@ package li.cil.ocreloaded.minecraft.common.block; -import dev.architectury.registry.menu.MenuRegistry; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + import li.cil.ocreloaded.minecraft.common.entity.CaseBlockEntity; +import li.cil.ocreloaded.minecraft.common.util.IPlatformMenuHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Containers; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -44,47 +46,48 @@ public int getTier() { } @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + public InteractionResult useWithoutItem(@Nonnull BlockState state, @Nonnull Level level, @Nonnull BlockPos pos, @Nonnull Player player, @Nonnull BlockHitResult hit) { if (level.isClientSide()) { return InteractionResult.SUCCESS; } BlockEntity blockEntity = level.getBlockEntity(pos); if (blockEntity instanceof CaseBlockEntity caseBlockEntity && player instanceof ServerPlayer serverPlayer) { - MenuRegistry.openExtendedMenu(serverPlayer, caseBlockEntity, caseBlockEntity::writeData); + IPlatformMenuHelper.INSTANCE.openExtendedMenu(serverPlayer, caseBlockEntity, caseBlockEntity::writeData); } return InteractionResult.CONSUME; } - @SuppressWarnings("deprecation") @Override - public void onRemove(BlockState blockState, Level level, BlockPos blockPos, BlockState blockState2, boolean bl) { + public void onRemove(@Nonnull BlockState blockState, @Nonnull Level level, @Nonnull BlockPos blockPos, @Nonnull BlockState blockState2, boolean bl) { Containers.dropContentsOnDestroy(blockState, blockState2, level, blockPos); super.onRemove(blockState, level, blockPos, blockState2, bl); } @Override - public void playerDestroy(Level level, Player player, BlockPos blockPos, BlockState blockState, BlockEntity blockEntity, ItemStack itemStack) { + public void playerDestroy( + @Nonnull Level level, @Nonnull Player player, @Nonnull BlockPos blockPos, + @Nonnull BlockState blockState, @Nullable BlockEntity blockEntity, @Nonnull ItemStack itemStack + ) { super.playerDestroy(level, player, blockPos, blockState, blockEntity, itemStack); popResource(level, blockPos, new ItemStack(this)); // TODO: How to instead use loot table and respect tier? } @Override - public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + public BlockEntity newBlockEntity(@Nonnull BlockPos blockPos, @Nonnull BlockState blockState) { return new CaseBlockEntity(blockPos, blockState); } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + protected void createBlockStateDefinition(@Nonnull StateDefinition.Builder builder) { builder.add(FACING); builder.add(RUNNING); } @Override - public BlockState getStateForPlacement(BlockPlaceContext context) { + public BlockState getStateForPlacement(@Nonnull BlockPlaceContext context) { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); } - } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/KeyboardBlock.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/KeyboardBlock.java index 591c774..f139ffa 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/KeyboardBlock.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/KeyboardBlock.java @@ -1,5 +1,7 @@ package li.cil.ocreloaded.minecraft.common.block; +import javax.annotation.Nonnull; + import li.cil.ocreloaded.minecraft.common.entity.KeyboardBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -28,13 +30,15 @@ public KeyboardBlock(Properties properties) { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + protected void createBlockStateDefinition(@Nonnull StateDefinition.Builder builder) { builder.add(FACING); builder.add(ATTACH_FACE); } @Override - public VoxelShape getShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext collisionContext) { + public VoxelShape getShape( + @Nonnull BlockState blockState, @Nonnull BlockGetter blockGetter, @Nonnull BlockPos blockPos, @Nonnull CollisionContext collisionContext + ) { return switch (blockState.getValue(ATTACH_FACE)) { case CEILING -> switch (blockState.getValue(FACING)) { case NORTH, SOUTH -> Block.box(1.0, 0.0, 4.0, 15.0, 1.0, 12.0); @@ -54,7 +58,7 @@ public VoxelShape getShape(BlockState blockState, BlockGetter blockGetter, Block } @Override - public BlockState getStateForPlacement(BlockPlaceContext context) { + public BlockState getStateForPlacement(@Nonnull BlockPlaceContext context) { BlockState blockState = this.defaultBlockState(); Direction facingDirection = context.getHorizontalDirection().getOpposite(); @@ -70,7 +74,7 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { } @Override - public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + public BlockEntity newBlockEntity(@Nonnull BlockPos blockPos, @Nonnull BlockState blockState) { return new KeyboardBlockEntity(blockPos, blockState); } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/ScreenBlock.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/ScreenBlock.java index 85e711a..a0137ae 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/ScreenBlock.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/block/ScreenBlock.java @@ -1,12 +1,14 @@ package li.cil.ocreloaded.minecraft.common.block; -import dev.architectury.registry.menu.MenuRegistry; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + import li.cil.ocreloaded.minecraft.common.entity.ScreenBlockEntity; import li.cil.ocreloaded.minecraft.common.menu.provider.ScreenMenuProvider; +import li.cil.ocreloaded.minecraft.common.util.IPlatformMenuHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Player; @@ -19,11 +21,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.AttachFace; -import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; -import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.block.state.properties.*; import net.minecraft.world.phys.BlockHitResult; public class ScreenBlock extends Block implements EntityBlock, TieredBlock { @@ -53,14 +51,19 @@ public int getTier() { } @Override - public void playerDestroy(Level level, Player player, BlockPos blockPos, BlockState blockState, BlockEntity blockEntity, ItemStack itemStack) { + public void playerDestroy( + @Nonnull Level level, @Nonnull Player player, @Nonnull BlockPos blockPos, + @Nonnull BlockState blockState, @Nullable BlockEntity blockEntity, @Nonnull ItemStack itemStack + ) { super.playerDestroy(level, player, blockPos, blockState, blockEntity, itemStack); popResource(level, blockPos, new ItemStack(this)); // TODO: How to instead use loot table and respect tier? } @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + public InteractionResult useWithoutItem( + @Nonnull BlockState state, @Nonnull Level level, @Nonnull BlockPos pos, @Nonnull Player player, @Nonnull BlockHitResult hitResult + ) { if (!level.isClientSide()) { MenuProvider menuProvider = state.getMenuProvider(level, pos); if ( @@ -68,7 +71,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player && player instanceof ServerPlayer serverPlayer && isKeyboardConnected(level, pos) ) { - MenuRegistry.openExtendedMenu(serverPlayer, menuProvider, screenMenuProvider::writeData); + IPlatformMenuHelper.INSTANCE.openExtendedMenu(serverPlayer, menuProvider, screenMenuProvider::writeData); return InteractionResult.CONSUME; } } @@ -77,17 +80,17 @@ && isKeyboardConnected(level, pos) } @Override - public MenuProvider getMenuProvider(BlockState state, Level level, BlockPos pos) { + public MenuProvider getMenuProvider(@Nonnull BlockState state, @Nonnull Level level, @Nonnull BlockPos pos) { return new ScreenMenuProvider(pos, tier); } @Override - public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + public BlockEntity newBlockEntity(@Nonnull BlockPos blockPos, @Nonnull BlockState blockState) { return new ScreenBlockEntity(blockPos, blockState); } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + protected void createBlockStateDefinition(@Nonnull StateDefinition.Builder builder) { builder.add(FACING); builder.add(ATTACH_FACE); for (BooleanProperty side : SIDES) { @@ -96,7 +99,7 @@ protected void createBlockStateDefinition(StateDefinition.Builder var1) { + protected void setItems(@Nonnull NonNullList var1) { assert var1.size() == 10; for (int i = 0; i < 10; i++) { this.items.set(i, var1.get(i)); @@ -146,13 +148,14 @@ protected net.minecraft.network.chat.Component getDefaultName() { } @Override - protected AbstractContainerMenu createMenu(int windowId, Inventory playerInventory) { + protected AbstractContainerMenu createMenu(int windowId, @Nonnull Inventory playerInventory) { FriendlyByteBuf data = new FriendlyByteBuf(Unpooled.buffer()); writeData(data); return new CaseMenu(windowId, playerInventory, data); } @Override + @SuppressWarnings("null") // Linting being not smart public void onItemChange(int slot, ItemStack oldStack, ItemStack newStack) { if (level == null || level.isClientSide) return; NetworkNode oldNode = loadedComponents.remove(oldStack); @@ -198,6 +201,7 @@ public void setPowered(boolean b) { updateBlockState(); } + @SuppressWarnings("null") // Linting being not smart private void updateBlockState() { if (this.level == null || level.isClientSide) return; if (!(this.level.isLoaded(this.worldPosition) && this.getBlockState().getBlock() instanceof CaseBlock)) return; @@ -249,9 +253,12 @@ private void loadComponent(ItemStack itemStack, Map comp if (!networkNode.component().isPresent()) return; Component component = networkNode.component().get(); - CompoundTag tag = itemStack.getOrCreateTag(); + // TODO: Better way to save and load (needs to save on shutdown too) + CompoundTag tag = itemStack.get(CommonRegistered.NBT_DATA_TYPE.get()); + if (tag == null) tag = new CompoundTag(); component.load(new NBTPersistenceHolder(tag, SettingsConstants.namespace)); component.save(new NBTPersistenceHolder(tag, SettingsConstants.namespace)); + itemStack.set(CommonRegistered.NBT_DATA_TYPE.get(), tag); // TODO: Reset component on fresh boot if tmp is not persistant components.put(itemStack, networkNode); @@ -277,12 +284,13 @@ private Optional createMachine() { .flatMap(entry -> entry.createMachine(parameters)); } + @SuppressWarnings("null") // Linting being not smart private void beep(short frequency, short duration) { + if (level == null) return; ChunkPos chunkPos = new ChunkPos(worldPosition); - List chunkTrackingPlayers = ((ServerLevel) level).getPlayers( - player -> player.getChunkTrackingView().contains(chunkPos) - ); - NetworkUtil.getInstance().messageManyClients(SoundNetworkMessage.createBeepMessage(worldPosition, frequency, duration), chunkTrackingPlayers); + List chunkTrackingPlayers = ((ServerLevel) level).getPlayers(player -> player.getChunkTrackingView().contains(chunkPos)); + + Dispatcher.sendToClients(SoundPacket.createBeepMessage(worldPosition, frequency, duration), chunkTrackingPlayers); } } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/KeyboardBlockEntity.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/KeyboardBlockEntity.java index 26ec10f..8bc214d 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/KeyboardBlockEntity.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/KeyboardBlockEntity.java @@ -1,5 +1,7 @@ package li.cil.ocreloaded.minecraft.common.entity; +import javax.annotation.Nonnull; + import li.cil.ocreloaded.core.component.KeyboardComponent; import li.cil.ocreloaded.core.network.NetworkNode; import li.cil.ocreloaded.core.network.NetworkNode.Visibility; @@ -9,6 +11,7 @@ import li.cil.ocreloaded.minecraft.common.persistence.NBTPersistenceHolder; import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; import net.minecraft.core.BlockPos; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; @@ -36,29 +39,28 @@ public void setRemoved() { } @Override - public void load(CompoundTag compoundTag) { - super.load(compoundTag); + public void loadAdditional(@Nonnull CompoundTag compoundTag, @Nonnull HolderLookup.Provider registries) { + super.loadAdditional(compoundTag, registries); networkNode.load(new NBTPersistenceHolder(compoundTag, SettingsConstants.namespace)); } @Override - public void saveAdditional(CompoundTag compoundTag) { - super.saveAdditional(compoundTag); + public void saveAdditional(@Nonnull CompoundTag compoundTag, @Nonnull HolderLookup.Provider registries) { + super.saveAdditional(compoundTag, registries); networkNode.save(new NBTPersistenceHolder(compoundTag, SettingsConstants.namespace)); } // TODO: Find a simpler way to do this than needing both setLevel and a ticker @Override - public void setLevel(Level level) { + public void setLevel(@Nonnull Level level) { super.setLevel(level); - if (level == null) return; - if (!level.isClientSide()) { level.addBlockEntityTicker(new BlockEntityTicker(this)); } } @Override + @SuppressWarnings("null") // Linting being not smart public void tick() { if (level == null || level.isClientSide) return; if (!initialized) { diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ScreenBlockEntity.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ScreenBlockEntity.java index 8308551..4781679 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ScreenBlockEntity.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ScreenBlockEntity.java @@ -2,6 +2,9 @@ import java.util.List; +import javax.annotation.Nonnull; +import commonnetwork.api.Dispatcher; +import li.cil.ocreloaded.minecraft.common.network.packets.ScreenPacket; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -16,13 +19,12 @@ import li.cil.ocreloaded.minecraft.common.component.ComponentNetworkNode; import li.cil.ocreloaded.minecraft.common.component.ComponentNetworkUtil; import li.cil.ocreloaded.minecraft.common.item.GraphicsCardItem; -import li.cil.ocreloaded.minecraft.common.network.NetworkUtil; -import li.cil.ocreloaded.minecraft.common.network.screen.NetworkedTextModeBufferProxy; -import li.cil.ocreloaded.minecraft.common.network.screen.ScreenNetworkInputMessages; -import li.cil.ocreloaded.minecraft.common.network.screen.ScreenNetworkMessage; +import li.cil.ocreloaded.minecraft.common.network.packets.screen.NetworkedTextModeBufferProxy; +import li.cil.ocreloaded.minecraft.common.network.packets.screen.ScreenNetworkInputMessages; import li.cil.ocreloaded.minecraft.common.persistence.NBTPersistenceHolder; import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; import net.minecraft.core.BlockPos; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -60,9 +62,8 @@ public void setRemoved() { } @Override - public void setLevel(Level level) { + public void setLevel(@Nonnull Level level) { super.setLevel(level); - if (level == null) return; ScreenBlock block = (ScreenBlock) getBlockState().getBlock(); int[] maxResolution = GraphicsCardItem.TIER_RESOLUTIONS[block.getTier() - 1]; @@ -77,8 +78,9 @@ public void setLevel(Level level) { } @Override - public void load(CompoundTag compoundTag) { - super.load(compoundTag); + @SuppressWarnings("null") // Linting being not smart + public void loadAdditional(@Nonnull CompoundTag compoundTag, @Nonnull HolderLookup.Provider registries) { + super.loadAdditional(compoundTag, registries); networkNode.load(new NBTPersistenceHolder(compoundTag, SettingsConstants.namespace)); if (this.level == null || level.isClientSide) return; @@ -86,12 +88,13 @@ public void load(CompoundTag compoundTag) { } @Override - public void saveAdditional(CompoundTag compoundTag) { - super.saveAdditional(compoundTag); + public void saveAdditional(@Nonnull CompoundTag compoundTag, @Nonnull HolderLookup.Provider registries) { + super.saveAdditional(compoundTag, registries); networkNode.save(new NBTPersistenceHolder(compoundTag, SettingsConstants.namespace)); } @Override + @SuppressWarnings("null") // Linting being not smart public void tick() { if (level == null || level.isClientSide()) return; if (!initialized) { @@ -107,10 +110,7 @@ public void tick() { NetworkedTextModeBufferProxy proxy = (NetworkedTextModeBufferProxy) screenBuffer; if (!proxy.hasChanges()) return; ByteBuf changeBuffer = proxy.getBuffer(); - NetworkUtil.getInstance().messageManyClients( - new ScreenNetworkMessage(worldPosition, changeBuffer, ScreenNetworkMessage.TEXT_MODE_BUFFER_CHANNEL), - chunkTrackingPlayers - ); + Dispatcher.sendToClients(new ScreenPacket(worldPosition, ScreenPacket.TEXT_MODE_BUFFER_CHANNEL, changeBuffer.array()), chunkTrackingPlayers); } public void onKeyPressed(int charCode, int keyCode, Player player) { @@ -151,5 +151,4 @@ public void onMouseInput(int type, int button, double x, double y, Player player public TextModeBuffer getScreenBuffer() { return screenBuffer; } - } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/integration/vanilla/VanillaRecipes.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/integration/vanilla/VanillaRecipes.java index a71805d..93c4809 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/integration/vanilla/VanillaRecipes.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/integration/vanilla/VanillaRecipes.java @@ -23,6 +23,8 @@ import net.minecraft.world.item.crafting.SmeltingRecipe; public final class VanillaRecipes { + + // TODO: COMEBACK private VanillaRecipes() {} @@ -64,10 +66,10 @@ private static void addShapedRecipe(RecipeRegistrationDelegate registrationDeleg ShapedRecipePattern shapedRecipePattern = ShapedRecipePattern.of(input, shape); ShapedRecipe shapedRecipe = new ShapedRecipe("", CraftingBookCategory.EQUIPMENT, shapedRecipePattern, itemStack); - ResourceLocation resourceLocation = itemStack.getItem().arch$registryName(); + //ResourceLocation resourceLocation = itemStack.getItem().arch$registryName(); // TODO: What is the correct group - registrationDelegate.registerRecipe(resourceLocation, shapedRecipe, RecipeType.CRAFTING); + //registrationDelegate.registerRecipe(resourceLocation, shapedRecipe, RecipeType.CRAFTING); } @@ -78,8 +80,8 @@ private static void addShapelessRecipe(RecipeRegistrationDelegate registrationDe itemStack.setCount(Recipes.tryGetCount(recipe)); ShapelessRecipe shapelessRecipe = new ShapelessRecipe("", CraftingBookCategory.EQUIPMENT, itemStack, ingredients); - ResourceLocation resourceLocation = itemStack.getItem().arch$registryName(); - registrationDelegate.registerRecipe(resourceLocation, shapelessRecipe, RecipeType.CRAFTING); + //ResourceLocation resourceLocation = itemStack.getItem().arch$registryName(); + //registrationDelegate.registerRecipe(resourceLocation, shapelessRecipe, RecipeType.CRAFTING); } private static void addFurnaceRecipe(RecipeRegistrationDelegate registrationDelegate, ItemStack itemStack, Config recipe) { @@ -87,8 +89,8 @@ private static void addFurnaceRecipe(RecipeRegistrationDelegate registrationDele itemStack.setCount(Recipes.tryGetCount(recipe)); SmeltingRecipe smeltingRecipe = new SmeltingRecipe("", CookingBookCategory.MISC, input, itemStack, 0.0f, 200); - ResourceLocation resourceLocation = itemStack.getItem().arch$registryName(); - registrationDelegate.registerRecipe(resourceLocation, smeltingRecipe, RecipeType.SMELTING); + //ResourceLocation resourceLocation = itemStack.getItem().arch$registryName(); + //registrationDelegate.registerRecipe(resourceLocation, smeltingRecipe, RecipeType.SMELTING); } } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/CaseMenu.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/CaseMenu.java index bf7abdb..fe37ec3 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/CaseMenu.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/CaseMenu.java @@ -1,18 +1,11 @@ package li.cil.ocreloaded.minecraft.common.menu; -import java.util.List; - +import commonnetwork.api.Dispatcher; import li.cil.ocreloaded.minecraft.common.assets.SharedTextures; import li.cil.ocreloaded.minecraft.common.container.BasicContainer; import li.cil.ocreloaded.minecraft.common.entity.CaseBlockEntity; -import li.cil.ocreloaded.minecraft.common.item.CPUItem; -import li.cil.ocreloaded.minecraft.common.item.GraphicsCardItem; -import li.cil.ocreloaded.minecraft.common.item.EepromItem; -import li.cil.ocreloaded.minecraft.common.item.FloppyDiskItem; -import li.cil.ocreloaded.minecraft.common.item.HardDiskItem; -import li.cil.ocreloaded.minecraft.common.item.MemoryItem; -import li.cil.ocreloaded.minecraft.common.network.NetworkUtil; -import li.cil.ocreloaded.minecraft.common.network.power.PowerNetworkMessage; +import li.cil.ocreloaded.minecraft.common.item.*; +import li.cil.ocreloaded.minecraft.common.network.packets.PowerPacket; import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; @@ -26,6 +19,10 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import java.util.List; + +import javax.annotation.Nonnull; + public class CaseMenu extends AbstractContainerMenu { private static final List> COMPONENT_SLOTS = List.of( @@ -94,12 +91,12 @@ public CaseMenu(int id, Inventory inventory, FriendlyByteBuf data) { } @Override - public boolean stillValid(Player player) { + public boolean stillValid(@Nonnull Player player) { return inventory.stillValid(player); } @Override - public ItemStack quickMoveStack(Player player, int index) { + public ItemStack quickMoveStack(@Nonnull Player player, int index) { return ComponentQuickMove.quickMoveStack(slots, player, index); } @@ -119,7 +116,7 @@ public DataSlot getPower() { public void sendServerPowerState() { BlockPos targetBlockPos = blockEntity.getBlockPos(); - NetworkUtil.getInstance().messageServer(new PowerNetworkMessage(targetBlockPos, power.get() == 1)); + Dispatcher.sendToServer(new PowerPacket(targetBlockPos, power.get() == 1)); } private void addContainerSlots() { diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentSlot.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentSlot.java index d6fb318..62f548a 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentSlot.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ComponentSlot.java @@ -1,5 +1,7 @@ package li.cil.ocreloaded.minecraft.common.menu; +import javax.annotation.Nonnull; + import li.cil.ocreloaded.minecraft.common.item.TieredItem; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.Container; @@ -25,7 +27,7 @@ public ComponentSlot(Container container, int index, int x, int y, Class 1; + return blockEntity.getBlockState().getBlock() instanceof ScreenBlock screenBlock && screenBlock.getTier() > 1; } - public void onKeyboardClipboard(String clipboard) { - NetworkUtil.getInstance().messageServer( - ScreenNetworkInputMessages.createClipboardPasteMessage(blockEntity.getBlockPos(), clipboard)); + Dispatcher.sendToServer(ScreenNetworkInputMessages.createClipboardPasteMessage(blockEntity.getBlockPos(), clipboard)); } - } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/provider/ScreenMenuProvider.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/provider/ScreenMenuProvider.java index 4fff54c..8ecdf32 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/provider/ScreenMenuProvider.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/provider/ScreenMenuProvider.java @@ -1,5 +1,7 @@ package li.cil.ocreloaded.minecraft.common.menu.provider; +import javax.annotation.Nonnull; + import io.netty.buffer.Unpooled; import li.cil.ocreloaded.minecraft.common.menu.ScreenMenu; import net.minecraft.core.BlockPos; @@ -28,7 +30,7 @@ public Component getDisplayName() { } @Override - public AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, Player player) { + public AbstractContainerMenu createMenu(int windowId, @Nonnull Inventory playerInventory, @Nonnull Player player) { FriendlyByteBuf data = new FriendlyByteBuf(Unpooled.buffer()); writeData(data); return new ScreenMenu(windowId, playerInventory, data); diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/ClientNetworkMessageContext.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/ClientNetworkMessageContext.java deleted file mode 100644 index ba51b45..0000000 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/ClientNetworkMessageContext.java +++ /dev/null @@ -1,7 +0,0 @@ -package li.cil.ocreloaded.minecraft.common.network; - -import net.minecraft.world.entity.player.Player; - -public record ClientNetworkMessageContext(Player player) { - -} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkHandler.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkHandler.java deleted file mode 100644 index 7b2daaf..0000000 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkHandler.java +++ /dev/null @@ -1,19 +0,0 @@ -package li.cil.ocreloaded.minecraft.common.network; - -import net.minecraft.network.FriendlyByteBuf; - -public interface NetworkHandler { - - String getType(); - - Class getMessageType(); - - void encode(FriendlyByteBuf buffer, T message); - - T decode(FriendlyByteBuf buffer); - - default void handleClient(T message, ClientNetworkMessageContext context) {} - - default void handleServer(T message, ServerNetworkMessageContext context) {} - -} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkInterface.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkInterface.java deleted file mode 100644 index 8329831..0000000 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkInterface.java +++ /dev/null @@ -1,13 +0,0 @@ -package li.cil.ocreloaded.minecraft.common.network; - -import net.minecraft.world.entity.player.Player; - -public interface NetworkInterface { - - void registerNetworkHandler(NetworkHandler handler); - - void messageClient(NetworkMessage message, Player recipient); - - void messageServer(NetworkMessage message); - -} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkMessage.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkMessage.java deleted file mode 100644 index 5396872..0000000 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkMessage.java +++ /dev/null @@ -1,7 +0,0 @@ -package li.cil.ocreloaded.minecraft.common.network; - -public interface NetworkMessage { - - String getType(); - -} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkUtil.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkUtil.java index 7f1de62..8ccaaa3 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkUtil.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkUtil.java @@ -1,93 +1,19 @@ package li.cil.ocreloaded.minecraft.common.network; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import dev.architectury.networking.NetworkManager; -import io.netty.buffer.Unpooled; -import li.cil.ocreloaded.minecraft.common.OCReloadedCommon; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.entity.player.Player; +import commonnetwork.api.Network; +import li.cil.ocreloaded.minecraft.common.network.packets.PowerPacket; +import li.cil.ocreloaded.minecraft.common.network.packets.ScreenPacket; +import li.cil.ocreloaded.minecraft.common.network.packets.SoundPacket; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class NetworkUtil { - - public static final NetworkUtil INSTANCE = new NetworkUtil(); - - private final Map> HANDLERS = new HashMap<>(); - + public static final Logger LOGGER = LoggerFactory.getLogger(NetworkUtil.class); private NetworkUtil() {} - public void messageClient(NetworkMessage message, Player player) { - if (player instanceof ServerPlayer serverPlayer) { - ResourceLocation location = new ResourceLocation(OCReloadedCommon.MOD_ID, message.getType()); - FriendlyByteBuf buffer = encodeMessage(message); - NetworkManager.sendToPlayer(serverPlayer, location, buffer); - } else { - throw new IllegalArgumentException("Player is not a server player."); - } - } - - public void messageServer(NetworkMessage message) { - ResourceLocation location = new ResourceLocation(OCReloadedCommon.MOD_ID, message.getType()); - FriendlyByteBuf buffer = encodeMessage(message); - NetworkManager.sendToServer(location, buffer); - } - - public void messageManyClients(NetworkMessage message, List players) { - ResourceLocation location = new ResourceLocation(OCReloadedCommon.MOD_ID, message.getType()); - FriendlyByteBuf buffer = encodeMessage(message); - NetworkManager.sendToPlayers(players, location, buffer); - } - - @SuppressWarnings("unchecked") - public void registerHandler(String type, NetworkHandler handler) { - HANDLERS.put(type, handler); - - ResourceLocation location = new ResourceLocation(OCReloadedCommon.MOD_ID, handler.getType()); - NetworkManager.registerReceiver(NetworkManager.Side.S2C, location, (buffer, context) -> { - context.queue(() -> { - NetworkHandler messageHandler = (NetworkHandler) HANDLERS.get(location.toString()); - if (messageHandler == null) { - throw new IllegalArgumentException("No handler for message type: " + location); - } - - NetworkMessage message = messageHandler.decode(buffer); - messageHandler.handleClient(message, new ClientNetworkMessageContext(context.getPlayer())); - }); - }); - - NetworkManager.registerReceiver(NetworkManager.Side.C2S, location, (buffer, context) -> { - context.queue(() -> { - NetworkHandler messageHandler = (NetworkHandler) HANDLERS.get(location.toString()); - if (messageHandler == null) { - throw new IllegalArgumentException("No handler for message type: " + location); - } - - NetworkMessage message = messageHandler.decode(buffer); - messageHandler.handleServer(message, new ServerNetworkMessageContext(context.getPlayer())); - }); - }); - } - - @SuppressWarnings("unchecked") - private FriendlyByteBuf encodeMessage(NetworkMessage message) { - ResourceLocation location = new ResourceLocation(OCReloadedCommon.MOD_ID, message.getType()); - NetworkHandler handler = (NetworkHandler) HANDLERS.get(location.toString()); - if (handler == null) { - throw new IllegalArgumentException("No handler for message type: " + location); - } - - FriendlyByteBuf buffer = new FriendlyByteBuf(Unpooled.buffer()); - handler.encode(buffer, message); - - return buffer; + public static void initialize() { + Network.registerPacket(PowerPacket.type(), PowerPacket.class, PowerPacket.STREAM_CODEC, PowerPacket::handle); + Network.registerPacket(ScreenPacket.type(), ScreenPacket.class, ScreenPacket.STREAM_CODEC, ScreenPacket::handle); + Network.registerPacket(SoundPacket.type(), SoundPacket.class, SoundPacket.STREAM_CODEC, SoundPacket::handle); } - - public static NetworkUtil getInstance() { - return INSTANCE; - } - } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/ServerNetworkMessageContext.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/ServerNetworkMessageContext.java deleted file mode 100644 index d97ce98..0000000 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/ServerNetworkMessageContext.java +++ /dev/null @@ -1,7 +0,0 @@ -package li.cil.ocreloaded.minecraft.common.network; - -import net.minecraft.world.entity.player.Player; - -public record ServerNetworkMessageContext(Player sender) { - -} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/PowerPacket.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/PowerPacket.java new file mode 100644 index 0000000..7398829 --- /dev/null +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/PowerPacket.java @@ -0,0 +1,64 @@ +package li.cil.ocreloaded.minecraft.common.network.packets; + +import commonnetwork.api.Dispatcher; +import commonnetwork.networking.data.PacketContext; +import commonnetwork.networking.data.Side; +import li.cil.ocreloaded.minecraft.common.OCReloadedCommon; +import li.cil.ocreloaded.minecraft.common.WorldUtil; +import li.cil.ocreloaded.minecraft.common.entity.CaseBlockEntity; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; + +public record PowerPacket(BlockPos pos, boolean powerState) { + public static final ResourceLocation CHANNEL = ResourceLocation.fromNamespaceAndPath(OCReloadedCommon.MOD_ID, "power_packet"); + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + BlockPos.STREAM_CODEC, + PowerPacket::pos, + ByteBufCodecs.BOOL, + PowerPacket::powerState, + PowerPacket::new); + + public static CustomPacketPayload.Type type() { + return new CustomPacketPayload.Type<>(CHANNEL); + } + + public static void handle(PacketContext ctx) { + if (ctx.side().equals(Side.CLIENT)) + handleClient(ctx); + else + handleServer(ctx); + } + + private static void handleClient(PacketContext ctx) { + PowerPacket packet = ctx.message(); + + BlockPos position = packet.pos; + Level level = Minecraft.getInstance().player.level(); + + if (!level.isLoaded(position)) return; + if (level.getBlockEntity(position) instanceof CaseBlockEntity entity) entity.setPowered(packet.powerState); + } + + private static void handleServer(PacketContext ctx) { + PowerPacket packet = ctx.message(); + + Player player = ctx.sender(); + Level level = player.level(); + + if (!level.isLoaded(packet.pos)) return; + if (!WorldUtil.isPlayerCloseEnough(player, packet.pos)) return; + + if (level.getBlockEntity(packet.pos) instanceof CaseBlockEntity entity) { + entity.setPowered(packet.powerState); + Dispatcher.sendToClientsInLevel(packet, (ServerLevel) level); + } + } +} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/ScreenPacket.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/ScreenPacket.java new file mode 100644 index 0000000..e6d9efc --- /dev/null +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/ScreenPacket.java @@ -0,0 +1,62 @@ +package li.cil.ocreloaded.minecraft.common.network.packets; + +import commonnetwork.networking.data.PacketContext; +import commonnetwork.networking.data.Side; +import li.cil.ocreloaded.core.graphics.TextModeBuffer; +import li.cil.ocreloaded.minecraft.common.OCReloadedCommon; +import li.cil.ocreloaded.minecraft.common.entity.ScreenBlockEntity; +import li.cil.ocreloaded.minecraft.common.network.NetworkUtil; +import li.cil.ocreloaded.minecraft.common.network.packets.screen.NetworkedTextModeBufferProxy; +import li.cil.ocreloaded.minecraft.common.network.packets.screen.ScreenNetworkInputMessages; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; + +public record ScreenPacket(BlockPos pos, int channel, byte[] deltaBuffer) { + public static final ResourceLocation CHANNEL = ResourceLocation.fromNamespaceAndPath(OCReloadedCommon.MOD_ID, "screen_packet"); + public static final StreamCodec STREAM_CODEC = StreamCodec.composite(BlockPos.STREAM_CODEC, ScreenPacket::pos, ByteBufCodecs.INT, ScreenPacket::channel, ByteBufCodecs.BYTE_ARRAY, ScreenPacket::deltaBuffer, ScreenPacket::new); + + public static final int TEXT_MODE_BUFFER_CHANNEL = 0; + public static final int INPUT_CHANNEL = 1; + + public static CustomPacketPayload.Type type() { + return new CustomPacketPayload.Type<>(CHANNEL); + } + + public static void handle(PacketContext ctx) { + ScreenPacket packet = ctx.message(); + + Player player; + if (ctx.side().equals(Side.CLIENT)) player = Minecraft.getInstance().player; + else player = ctx.sender(); + + Level level = player.level(); + + if (!level.isLoaded(packet.pos)) return; + if (!(level.getBlockEntity(packet.pos) instanceof ScreenBlockEntity entity)) return; + + if (ctx.side().equals(Side.CLIENT)) { + if (packet.channel == TEXT_MODE_BUFFER_CHANNEL) + writeScreenChanges(entity.getScreenBuffer(), packet.deltaBuffer); + else nagAboutUnknownChannel(packet.channel); + } else { + if (packet.channel == INPUT_CHANNEL) + ScreenNetworkInputMessages.handleInput(entity, packet.deltaBuffer, player); + else nagAboutUnknownChannel(packet.channel); + } + } + + private static void nagAboutUnknownChannel(int channel) { + NetworkUtil.LOGGER.warn("Received unknown channel: {}", channel); + } + + private static void writeScreenChanges(TextModeBuffer screenBuffer, byte[] changeBuffer) { + NetworkedTextModeBufferProxy.writeTextModeBuffer(screenBuffer, changeBuffer); + } +} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/SoundPacket.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/SoundPacket.java new file mode 100644 index 0000000..766018c --- /dev/null +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/SoundPacket.java @@ -0,0 +1,72 @@ +package li.cil.ocreloaded.minecraft.common.network.packets; + +import commonnetwork.networking.data.PacketContext; +import commonnetwork.networking.data.Side; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import li.cil.ocreloaded.minecraft.common.OCReloadedCommon; +import li.cil.ocreloaded.minecraft.common.network.NetworkUtil; +import li.cil.ocreloaded.minecraft.common.registry.ClientBridge; +import li.cil.ocreloaded.minecraft.common.sound.SoundPlayerProvider; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.Level; + +import java.nio.ByteBuffer; + +public record SoundPacket(BlockPos pos, int channel, byte[] deltaBuffer) { + public static final ResourceLocation CHANNEL = ResourceLocation.fromNamespaceAndPath(OCReloadedCommon.MOD_ID, "sound_packet"); + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + BlockPos.STREAM_CODEC, + SoundPacket::pos, + ByteBufCodecs.INT, + SoundPacket::channel, + ByteBufCodecs.BYTE_ARRAY, + SoundPacket::deltaBuffer, + SoundPacket::new); + public static final int BEEP_CHANNEL = 0; + + public static CustomPacketPayload.Type type() { + return new CustomPacketPayload.Type<>(CHANNEL); + } + + public static void handle(PacketContext ctx) { + if (!ctx.side().equals(Side.CLIENT)) + return; + SoundPacket packet = ctx.message(); + + Level level = Minecraft.getInstance().player.level(); + if (!level.isLoaded(packet.pos)) return; + + if (packet.channel != BEEP_CHANNEL) { + NetworkUtil.LOGGER.warn("Received unknown channel: {}", packet.channel); + return; + } + + ByteBuffer buffer = ByteBuffer.wrap(packet.deltaBuffer); + + short frequency = buffer.getShort(); + short duration = buffer.getShort(); + + ClientBridge.getInstance().getClient(SoundPlayerProvider.class).ifPresent(soundPlayerProvider -> soundPlayerProvider.playBeepSound(packet.pos, frequency, duration)); + } + + public static SoundPacket createBeepMessage(BlockPos position, short frequency, short duration) { + ByteBuf buffer = Unpooled.buffer(); + + try { + buffer.writeShort(frequency); + buffer.writeShort(duration); + byte[] deltas = buffer.array().clone(); + + return new SoundPacket(position, BEEP_CHANNEL, deltas); + } finally { + buffer.release(); + } + } +} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/NetworkedTextModeBufferProxy.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/screen/NetworkedTextModeBufferProxy.java similarity index 98% rename from projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/NetworkedTextModeBufferProxy.java rename to projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/screen/NetworkedTextModeBufferProxy.java index 736e913..23d05fc 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/NetworkedTextModeBufferProxy.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/screen/NetworkedTextModeBufferProxy.java @@ -1,4 +1,4 @@ -package li.cil.ocreloaded.minecraft.common.network.screen; +package li.cil.ocreloaded.minecraft.common.network.packets.screen; import org.slf4j.Logger; @@ -219,7 +219,9 @@ public ByteBuf sync() { return syncBuffer; } - public static void writeTextModeBuffer(TextModeBuffer buffer, ByteBuf byteBuf) { + public static void writeTextModeBuffer(TextModeBuffer buffer, byte[] buf) { + ByteBuf byteBuf = Unpooled.wrappedBuffer(buf); + while (true) { int command = byteBuf.readInt(); if (command == 0) break; @@ -249,6 +251,8 @@ public static void writeTextModeBuffer(TextModeBuffer buffer, ByteBuf byteBuf) { break; } } + + byteBuf.release(); } private static void handleSync(TextModeBuffer buffer, ByteBuf byteBuf) { diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/screen/ScreenNetworkInputMessages.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/screen/ScreenNetworkInputMessages.java new file mode 100644 index 0000000..b9c4c6c --- /dev/null +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/screen/ScreenNetworkInputMessages.java @@ -0,0 +1,112 @@ +package li.cil.ocreloaded.minecraft.common.network.packets.screen; + +import li.cil.ocreloaded.minecraft.common.network.packets.ScreenPacket; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import li.cil.ocreloaded.minecraft.common.entity.ScreenBlockEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.player.Player; + +import java.nio.charset.StandardCharsets; + +public final class ScreenNetworkInputMessages { + + private static final Logger LOGGER = LoggerFactory.getLogger(ScreenNetworkInputMessages.class); + + private static final int KEY_PRESSED = 1; + private static final int KEY_RELEASED = 2; + + public static final int MOUSE_PRESSED = 3; + public static final int MOUSE_RELEASED = 4; + public static final int MOUSE_DRAGGED = 5; + public static final int MOUSE_SCROLLED = 6; + public static final int CLIPBOARD_PASTE = 7; + + private ScreenNetworkInputMessages() {} + + public static ScreenPacket createKeyPressedMessage(BlockPos blockPos, int charCode, int keyCode) { + ByteBuf buffer = Unpooled.buffer(); + + try { + buffer.writeInt(KEY_PRESSED); + buffer.writeInt(charCode); + buffer.writeInt(keyCode); + + byte[] deltas = buffer.array().clone(); + return new ScreenPacket(blockPos, ScreenPacket.INPUT_CHANNEL, deltas); + } finally { + buffer.release(); + } + } + + public static ScreenPacket createKeyReleasedMessage(BlockPos blockPos, int keyCode) { + ByteBuf buffer = Unpooled.buffer(); + + try { + buffer.writeInt(KEY_RELEASED); + buffer.writeInt(keyCode); + + byte[] deltas = buffer.array().clone(); + return new ScreenPacket(blockPos, ScreenPacket.INPUT_CHANNEL, deltas); + } finally { + buffer.release(); + } + } + + public static ScreenPacket createMouseMessage(int type, BlockPos blockPos, int button, double x, double y) { + ByteBuf buffer = Unpooled.buffer(); + try { + buffer.writeInt(type); + buffer.writeInt(button); + buffer.writeDouble(x); + buffer.writeDouble(y); + byte[] deltas = buffer.array().clone(); + + return new ScreenPacket(blockPos, ScreenPacket.INPUT_CHANNEL, deltas); + } finally { + buffer.release(); + } + } + + public static ScreenPacket createClipboardPasteMessage(BlockPos blockPos, String text) { + ByteBuf buffer = Unpooled.buffer(); + + try { + buffer.writeInt(CLIPBOARD_PASTE); + + byte[] textBytes = text.getBytes(StandardCharsets.UTF_8); + buffer.writeInt(textBytes.length); + buffer.writeBytes(textBytes); + byte[] deltas = buffer.array().clone(); + + return new ScreenPacket(blockPos, ScreenPacket.INPUT_CHANNEL, deltas); + } finally { + buffer.release(); + } + } + + public static void handleInput(ScreenBlockEntity entity, byte[] buf, Player player) { + ByteBuf changeBuffer = Unpooled.wrappedBuffer(buf); + + int type = changeBuffer.readInt(); + switch (type) { + case KEY_PRESSED -> entity.onKeyPressed(changeBuffer.readInt(), changeBuffer.readInt(), player); + case KEY_RELEASED -> entity.onKeyReleased(changeBuffer.readInt(), player); + case MOUSE_PRESSED, MOUSE_RELEASED, MOUSE_DRAGGED, MOUSE_SCROLLED -> + entity.onMouseInput(type, changeBuffer.readInt(), changeBuffer.readDouble(), changeBuffer.readDouble(), player); + case CLIPBOARD_PASTE -> { + int length = changeBuffer.readInt(); + byte[] textBytes = new byte[length]; + changeBuffer.readBytes(textBytes); + String text = new String(textBytes, StandardCharsets.UTF_8); + entity.onClipboardPaste(text, player); + } + default -> LOGGER.warn("Received unknown input type: {}", type); + } + + changeBuffer.release(); + } +} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkHandler.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkHandler.java deleted file mode 100644 index 114661b..0000000 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkHandler.java +++ /dev/null @@ -1,68 +0,0 @@ -package li.cil.ocreloaded.minecraft.common.network.power; - -import li.cil.ocreloaded.minecraft.common.WorldUtil; -import li.cil.ocreloaded.minecraft.common.entity.CaseBlockEntity; -import li.cil.ocreloaded.minecraft.common.network.ClientNetworkMessageContext; -import li.cil.ocreloaded.minecraft.common.network.NetworkHandler; -import li.cil.ocreloaded.minecraft.common.network.NetworkUtil; -import li.cil.ocreloaded.minecraft.common.network.ServerNetworkMessageContext; -import net.minecraft.core.BlockPos; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.Level; - -public class PowerNetworkHandler implements NetworkHandler { - - @Override - public String getType() { - return PowerNetworkMessage.TYPE; - } - - @Override - public Class getMessageType() { - return PowerNetworkMessage.class; - } - - @Override - public void encode(FriendlyByteBuf buffer, PowerNetworkMessage message) { - buffer.writeBlockPos(message.position()); - buffer.writeBoolean(message.powerState()); - } - - @Override - public PowerNetworkMessage decode(FriendlyByteBuf buffer) { - return new PowerNetworkMessage(buffer.readBlockPos(), buffer.readBoolean()); - } - - @Override - public void handleClient(PowerNetworkMessage message, ClientNetworkMessageContext context) { - BlockPos position = message.position(); - - if (context.player() == null) return; - Level level = context.player().level(); - if (!level.isLoaded(position)) return; - if (level.getBlockEntity(position) instanceof CaseBlockEntity entity) { - entity.setPowered(message.powerState()); - } - } - - @Override - public void handleServer(PowerNetworkMessage message, ServerNetworkMessageContext context) { - BlockPos position = message.position(); - Player player = context.sender(); - Level level = player.level(); - if (!level.isLoaded(position)) return; - if (!WorldUtil.isPlayerCloseEnough(player, position)) return; - if (level.getBlockEntity(position) instanceof CaseBlockEntity entity) { - entity.setPowered(message.powerState()); - redistributeMessage(message, level); - } - } - - private void redistributeMessage(PowerNetworkMessage message, Level level) { - for (Player otherPlayer : level.players()) { - NetworkUtil.getInstance().messageClient(message, otherPlayer); - } - } - -} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkMessage.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkMessage.java deleted file mode 100644 index c166b69..0000000 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/power/PowerNetworkMessage.java +++ /dev/null @@ -1,31 +0,0 @@ -package li.cil.ocreloaded.minecraft.common.network.power; - -import li.cil.ocreloaded.minecraft.common.network.NetworkMessage; -import net.minecraft.core.BlockPos; - -public class PowerNetworkMessage implements NetworkMessage { - - public static final String TYPE = "power"; - - private final BlockPos position; - private final boolean powerState; - - public PowerNetworkMessage(BlockPos position, boolean powerState) { - this.position = position; - this.powerState = powerState; - } - - @Override - public String getType() { - return TYPE; - } - - public BlockPos position() { - return position; - } - - public boolean powerState() { - return powerState; - } - -} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkHandler.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkHandler.java deleted file mode 100644 index 49b0382..0000000 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkHandler.java +++ /dev/null @@ -1,80 +0,0 @@ -package li.cil.ocreloaded.minecraft.common.network.screen; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import io.netty.buffer.ByteBuf; -import li.cil.ocreloaded.core.graphics.TextModeBuffer; -import li.cil.ocreloaded.minecraft.common.entity.ScreenBlockEntity; -import li.cil.ocreloaded.minecraft.common.network.ClientNetworkMessageContext; -import li.cil.ocreloaded.minecraft.common.network.NetworkHandler; -import li.cil.ocreloaded.minecraft.common.network.ServerNetworkMessageContext; -import net.minecraft.core.BlockPos; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.world.level.Level; - -public class ScreenNetworkHandler implements NetworkHandler { - - private static final Logger LOGGER = LoggerFactory.getLogger(ScreenNetworkHandler.class); - - @Override - public String getType() { - return ScreenNetworkMessage.TYPE; - } - - @Override - public Class getMessageType() { - return ScreenNetworkMessage.class; - } - - @Override - public void encode(FriendlyByteBuf buffer, ScreenNetworkMessage message) { - buffer.writeBlockPos(message.position()); - buffer.writeInt(message.getChannel()); - buffer.writeBytes(message.getChangeBuffer()); - } - - @Override - public ScreenNetworkMessage decode(FriendlyByteBuf buffer) { - BlockPos blockPos = buffer.readBlockPos(); - int channel = buffer.readInt(); - return new ScreenNetworkMessage(blockPos, buffer, channel); - } - - @Override - public void handleClient(ScreenNetworkMessage message, ClientNetworkMessageContext context) { - BlockPos position = message.position(); - - if (context.player() == null) return; - Level level = context.player().level(); - if (!level.isLoaded(position)) return; - if (level.getBlockEntity(position) instanceof ScreenBlockEntity entity) { - if (message.getChannel() == ScreenNetworkMessage.TEXT_MODE_BUFFER_CHANNEL) { - writeScreenChanges(entity.getScreenBuffer(), message.getChangeBuffer()); - } else { - LOGGER.warn("Received unknown channel: {}", message.getChannel()); - } - } - } - - @Override - public void handleServer(ScreenNetworkMessage message, ServerNetworkMessageContext context) { - BlockPos position = message.position(); - - if (context.sender() == null) return; - Level level = context.sender().level(); - if (!level.isLoaded(position)) return; - if (level.getBlockEntity(position) instanceof ScreenBlockEntity entity) { - if (message.getChannel() == ScreenNetworkMessage.INPUT_CHANNEL) { - ScreenNetworkInputMessages.handleInput(entity, message.getChangeBuffer(), context.sender()); - } else { - LOGGER.warn("Received unknown channel: {}", message.getChannel()); - } - } - } - - private void writeScreenChanges(TextModeBuffer screenBuffer, ByteBuf changeBuffer) { - NetworkedTextModeBufferProxy.writeTextModeBuffer(screenBuffer, changeBuffer); - } - -} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkInputMessages.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkInputMessages.java deleted file mode 100644 index dad7488..0000000 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkInputMessages.java +++ /dev/null @@ -1,81 +0,0 @@ -package li.cil.ocreloaded.minecraft.common.network.screen; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; -import li.cil.ocreloaded.minecraft.common.entity.ScreenBlockEntity; -import net.minecraft.core.BlockPos; -import net.minecraft.world.entity.player.Player; - -import java.nio.charset.StandardCharsets; - -public final class ScreenNetworkInputMessages { - - private static final Logger LOGGER = LoggerFactory.getLogger(ScreenNetworkInputMessages.class); - - private static final int KEY_PRESSED = 1; - private static final int KEY_RELEASED = 2; - - public static final int MOUSE_PRESSED = 3; - public static final int MOUSE_RELEASED = 4; - public static final int MOUSE_DRAGGED = 5; - public static final int MOUSE_SCROLLED = 6; - public static final int CLIPBOARD_PASTE = 7; - - private ScreenNetworkInputMessages() {} - - public static ScreenNetworkMessage createKeyPressedMessage(BlockPos blockPos, int charCode, int keyCode) { - ByteBuf buffer = Unpooled.buffer(); - buffer.writeInt(KEY_PRESSED); - buffer.writeInt(charCode); - buffer.writeInt(keyCode); - return new ScreenNetworkMessage(blockPos, buffer, ScreenNetworkMessage.INPUT_CHANNEL); - } - - public static ScreenNetworkMessage createKeyReleasedMessage(BlockPos blockPos, int keyCode) { - ByteBuf buffer = Unpooled.buffer(); - buffer.writeInt(KEY_RELEASED); - buffer.writeInt(keyCode); - return new ScreenNetworkMessage(blockPos, buffer, ScreenNetworkMessage.INPUT_CHANNEL); - } - - public static ScreenNetworkMessage createMouseMessage(int type, BlockPos blockPos, int button, double x, double y) { - ByteBuf buffer = Unpooled.buffer(); - buffer.writeInt(type); - buffer.writeInt(button); - buffer.writeDouble(x); - buffer.writeDouble(y); - return new ScreenNetworkMessage(blockPos, buffer, ScreenNetworkMessage.INPUT_CHANNEL); - } - - public static ScreenNetworkMessage createClipboardPasteMessage(BlockPos blockPos, String text) { - ByteBuf buffer = Unpooled.buffer(); - buffer.writeInt(CLIPBOARD_PASTE); - - byte[] textBytes = text.getBytes(StandardCharsets.UTF_8); - buffer.writeInt(textBytes.length); - buffer.writeBytes(textBytes); - - return new ScreenNetworkMessage(blockPos, buffer, ScreenNetworkMessage.INPUT_CHANNEL); - } - - public static void handleInput(ScreenBlockEntity entity, ByteBuf changeBuffer, Player player) { - int type = changeBuffer.readInt(); - switch (type) { - case KEY_PRESSED -> entity.onKeyPressed(changeBuffer.readInt(), changeBuffer.readInt(), player); - case KEY_RELEASED -> entity.onKeyReleased(changeBuffer.readInt(), player); - case MOUSE_PRESSED, MOUSE_RELEASED, MOUSE_DRAGGED, MOUSE_SCROLLED -> - entity.onMouseInput(type, changeBuffer.readInt(), changeBuffer.readDouble(), changeBuffer.readDouble(), player); - case CLIPBOARD_PASTE -> { - int length = changeBuffer.readInt(); - byte[] textBytes = new byte[length]; - changeBuffer.readBytes(textBytes); - String text = new String(textBytes, StandardCharsets.UTF_8); - entity.onClipboardPaste(text, player); - } - default -> LOGGER.warn("Received unknown input type: {}", type); - } - } -} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkMessage.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkMessage.java deleted file mode 100644 index 404d687..0000000 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/screen/ScreenNetworkMessage.java +++ /dev/null @@ -1,41 +0,0 @@ -package li.cil.ocreloaded.minecraft.common.network.screen; - -import io.netty.buffer.ByteBuf; -import li.cil.ocreloaded.minecraft.common.network.NetworkMessage; -import net.minecraft.core.BlockPos; - -public class ScreenNetworkMessage implements NetworkMessage { - - public static final String TYPE = "screen"; - - public static final int TEXT_MODE_BUFFER_CHANNEL = 0; - public static final int INPUT_CHANNEL = 1; - - private final BlockPos position; - private final ByteBuf changeBuffer; - private final int channel; - - public ScreenNetworkMessage(BlockPos blockPos, ByteBuf changeBuffer, int channel) { - this.position = blockPos; - this.changeBuffer = changeBuffer; - this.channel = channel; - } - - @Override - public String getType() { - return TYPE; - } - - public BlockPos position() { - return position; - } - - public ByteBuf getChangeBuffer() { - return changeBuffer; - } - - public int getChannel() { - return this.channel; - } - -} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkHandler.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkHandler.java deleted file mode 100644 index 63c86f8..0000000 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkHandler.java +++ /dev/null @@ -1,61 +0,0 @@ -package li.cil.ocreloaded.minecraft.common.network.sound; - -import java.nio.ByteBuffer; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import li.cil.ocreloaded.minecraft.common.network.ClientNetworkMessageContext; -import li.cil.ocreloaded.minecraft.common.network.NetworkHandler; -import li.cil.ocreloaded.minecraft.common.registry.ClientBridge; -import li.cil.ocreloaded.minecraft.common.sound.SoundPlayerProvider; -import net.minecraft.core.BlockPos; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.world.level.Level; - -public class SoundNetworkHandler implements NetworkHandler { - - private static final Logger LOGGER = LoggerFactory.getLogger(SoundNetworkHandler.class); - - @Override - public String getType() { - return SoundNetworkMessage.TYPE; - } - - @Override - public Class getMessageType() { - return SoundNetworkMessage.class; - } - - @Override - public void encode(FriendlyByteBuf buffer, SoundNetworkMessage message) { - buffer.writeBlockPos(message.position()); - buffer.writeInt(message.getChannel()); - buffer.writeBytes(message.getChangeBuffer()); - } - - @Override - public SoundNetworkMessage decode(FriendlyByteBuf buffer) { - return new SoundNetworkMessage(buffer.readBlockPos(), buffer, buffer.readInt()); - } - - @Override - public void handleClient(SoundNetworkMessage message, ClientNetworkMessageContext context) { - BlockPos position = message.position(); - - if (context.player() == null) return; - Level level = context.player().level(); - if (!level.isLoaded(position)) return; - if (message.getChannel() != SoundNetworkMessage.BEEP_CHANNEL) { - LOGGER.warn("Received unknown channel: {}", message.getChannel()); - return; - } - - ByteBuffer buffer = message.getChangeBuffer().nioBuffer(); - short frequency = buffer.getShort(); - short duration = buffer.getShort(); - ClientBridge.getInstance().getClient(SoundPlayerProvider.class).ifPresent(soundPlayerProvider -> - soundPlayerProvider.playBeepSound(position, frequency, duration)); - } - -} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkMessage.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkMessage.java deleted file mode 100644 index 6c1f90c..0000000 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/sound/SoundNetworkMessage.java +++ /dev/null @@ -1,48 +0,0 @@ -package li.cil.ocreloaded.minecraft.common.network.sound; - -import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufAllocator; -import li.cil.ocreloaded.minecraft.common.network.NetworkMessage; -import net.minecraft.core.BlockPos; - -public class SoundNetworkMessage implements NetworkMessage { - - public static final String TYPE = "sound"; - - public static final int BEEP_CHANNEL = 0; - - private final BlockPos position; - private final ByteBuf changeBuffer; - private final int channel; - - public SoundNetworkMessage(BlockPos blockPos, ByteBuf changeBuffer, int channel) { - this.position = blockPos; - this.changeBuffer = changeBuffer; - this.channel = channel; - } - - @Override - public String getType() { - return TYPE; - } - - public BlockPos position() { - return position; - } - - public ByteBuf getChangeBuffer() { - return changeBuffer; - } - - public int getChannel() { - return this.channel; - } - - public static SoundNetworkMessage createBeepMessage(BlockPos position, short frequency, short duration) { - ByteBuf buffer = ByteBufAllocator.DEFAULT.buffer(4); - buffer.writeShort(frequency); - buffer.writeShort(duration); - return new SoundNetworkMessage(position, buffer, BEEP_CHANNEL); - } - -} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeRegistrationDelegate.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeRegistrationDelegate.java index 9bbf7f9..b5dd02b 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeRegistrationDelegate.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/RecipeRegistrationDelegate.java @@ -1,12 +1,12 @@ package li.cil.ocreloaded.minecraft.common.recipe; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.Container; import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeInput; import net.minecraft.world.item.crafting.RecipeType; public interface RecipeRegistrationDelegate { - void registerRecipe(ResourceLocation resource, Recipe recipe, RecipeType type); + void registerRecipe(ResourceLocation resource, Recipe recipe, RecipeType type); } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/Recipes.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/Recipes.java index cd0ec47..ec1d68d 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/Recipes.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/recipe/Recipes.java @@ -45,6 +45,7 @@ public final class Recipes { private static final String[] RECIPE_SETS = new String[] { "default", "hardmode", "peaceful" }; + private static final Map> ORE_DICT = new HashMap<>(); private final Map recipeHandlers = new HashMap<>(); @@ -124,7 +125,8 @@ private static Config loadConfig(File recipeDirectory) { private void registerRecipes(Config config, RecipeRegistrationDelegate registrationDelegate) { for (Item item: BuiltInRegistries.ITEM) { - ResourceLocation key = item.arch$registryName(); + // TODO: COMEBACK + /*ResourceLocation key = item.arch$registryName(); if (!key.getNamespace().equals(OCReloadedCommon.MOD_ID)) continue; String name = key.getPath(); @@ -150,7 +152,7 @@ private void registerRecipes(Config config, RecipeRegistrationDelegate registrat } } else { LOGGER.warn("No recipe for '{}', you will not be able to craft this item. To suppress this warning, disable the recipe (assign `false` to it).", name); - } + }*/ } } @@ -283,11 +285,11 @@ private static Ingredient parseStringIngredient(String name) { } private static Item findItem(String name) { - return BuiltInRegistries.ITEM.get(safeResourceLocation(name)); + return BuiltInRegistries.ITEM.get(ResourceLocation.parse(name)); } private static Block findBlock(String name) { - return BuiltInRegistries.BLOCK.get(safeResourceLocation(name)); + return BuiltInRegistries.BLOCK.get(ResourceLocation.parse(name)); } private static String toLegacyName(String modernName) { @@ -336,23 +338,23 @@ private static String toModernName(String legacyName) { private static Optional getOre(String name) { // TODO: I don't think this actually works... Optional> key = switch(name) { - case "ingotIron" -> Optional.of(TagKey.create(Registries.ITEM, new ResourceLocation("c", "ingots/iron"))); - case "ingotGold" -> Optional.of(TagKey.create(Registries.ITEM, new ResourceLocation("c", "ingots/gold"))); - case "gemDiamond" -> Optional.of(TagKey.create(Registries.ITEM, new ResourceLocation("c", "ores/diamond"))); - case "gemLapis" -> Optional.of(TagKey.create(Registries.ITEM, new ResourceLocation("c", "ores/lapis"))); - case "emerald" -> Optional.of(TagKey.create(Registries.ITEM, new ResourceLocation("c", "ores/emerald"))); - case "redstone" -> Optional.of(TagKey.create(Registries.ITEM, new ResourceLocation("c", "ores/redstone"))); - case "nuggetGold" -> Optional.of(TagKey.create(Registries.ITEM, new ResourceLocation("c", "nuggets/gold"))); - case "chipDiamond" -> Optional.of(TagKey.create(Registries.ITEM, new ResourceLocation(OCReloadedCommon.MOD_ID, "chip_diamond"))); + case "ingotIron" -> Optional.of(TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath("c", "ingots/iron"))); + case "ingotGold" -> Optional.of(TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath("c", "ingots/gold"))); + case "gemDiamond" -> Optional.of(TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath("c", "ores/diamond"))); + case "gemLapis" -> Optional.of(TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath("c", "ores/lapis"))); + case "emerald" -> Optional.of(TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath("c", "ores/emerald"))); + case "redstone" -> Optional.of(TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath("c", "ores/redstone"))); + case "nuggetGold" -> Optional.of(TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath("c", "nuggets/gold"))); + case "chipDiamond" -> Optional.of(TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(OCReloadedCommon.MOD_ID, "chip_diamond"))); default -> Optional.empty(); }; if (key.isEmpty() && name.contains(":")) { String adjustedName = name.replaceAll("([A-Z]+)", "_$1").toLowerCase(); if (adjustedName.startsWith("oc:")) { - key = Optional.of(TagKey.create(Registries.ITEM, new ResourceLocation(OCReloadedCommon.MOD_ID, adjustedName.substring(3)))); + key = Optional.of(TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(OCReloadedCommon.MOD_ID, adjustedName.substring(3)))); } else { - key = Optional.of(TagKey.create(Registries.ITEM, new ResourceLocation(adjustedName))); + key = Optional.of(TagKey.create(Registries.ITEM, ResourceLocation.parse(adjustedName))); } } @@ -375,12 +377,8 @@ private static Optional getOre(String name) { return Optional.empty(); } - private static ResourceLocation safeResourceLocation(String name) { - return new ResourceLocation(name.toLowerCase()); - } - private static InputStream streamAsset(MinecraftServer server, String asset) throws IOException { - return server.getResourceManager().getResource(new ResourceLocation(OCReloadedCommon.MOD_ID, asset)).get().open(); + return server.getResourceManager().getResource(ResourceLocation.fromNamespaceAndPath(OCReloadedCommon.MOD_ID, asset)).get().open(); } private static class MyConfigIncluder implements ConfigIncluder, ConfigIncluderFile { diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/registry/CommonRegistered.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/registry/CommonRegistered.java index 3dd1756..f49307e 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/registry/CommonRegistered.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/registry/CommonRegistered.java @@ -1,9 +1,9 @@ package li.cil.ocreloaded.minecraft.common.registry; -import dev.architectury.registry.CreativeTabRegistry; -import dev.architectury.registry.menu.MenuRegistry; -import dev.architectury.registry.registries.DeferredRegister; -import dev.architectury.registry.registries.RegistrySupplier; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Supplier; + import li.cil.ocreloaded.minecraft.common.OCReloadedCommon; import li.cil.ocreloaded.minecraft.common.block.CaseBlock; import li.cil.ocreloaded.minecraft.common.block.KeyboardBlock; @@ -23,10 +23,11 @@ import li.cil.ocreloaded.minecraft.common.menu.CaseMenu; import li.cil.ocreloaded.minecraft.common.menu.ScreenMenu; import li.cil.ocreloaded.minecraft.common.network.NetworkUtil; -import li.cil.ocreloaded.minecraft.common.network.power.PowerNetworkHandler; -import li.cil.ocreloaded.minecraft.common.network.screen.ScreenNetworkHandler; -import li.cil.ocreloaded.minecraft.common.network.sound.SoundNetworkHandler; +import li.cil.ocreloaded.minecraft.registration.RegistrationProvider; +import li.cil.ocreloaded.minecraft.registration.RegistryObject; +import net.minecraft.core.component.DataComponentType; import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.inventory.MenuType; import net.minecraft.world.item.BlockItem; @@ -37,120 +38,132 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; +@SuppressWarnings("unused") public class CommonRegistered { - private static final DeferredRegister BLOCKS = DeferredRegister.create(OCReloadedCommon.MOD_ID, Registries.BLOCK); - private static final DeferredRegister ITEMS = DeferredRegister.create(OCReloadedCommon.MOD_ID, Registries.ITEM); - private static final DeferredRegister> MENUS = DeferredRegister.create(OCReloadedCommon.MOD_ID, Registries.MENU); - private static final DeferredRegister> BLOCK_ENTITIES = DeferredRegister.create(OCReloadedCommon.MOD_ID, Registries.BLOCK_ENTITY_TYPE); - private static final DeferredRegister CREATIVE_TABS = DeferredRegister.create(OCReloadedCommon.MOD_ID, Registries.CREATIVE_MODE_TAB); + private static final RegistrationProvider BLOCKS = RegistrationProvider.get(Registries.BLOCK, OCReloadedCommon.MOD_ID); + private static final RegistrationProvider ITEMS = RegistrationProvider.get(Registries.ITEM, OCReloadedCommon.MOD_ID); + private static final RegistrationProvider> MENUS = RegistrationProvider.get(Registries.MENU, OCReloadedCommon.MOD_ID); + private static final RegistrationProvider> BLOCK_ENTITIES = RegistrationProvider.get(Registries.BLOCK_ENTITY_TYPE, OCReloadedCommon.MOD_ID); + private static final RegistrationProvider> DATA_COMPONENT_TYPES = RegistrationProvider.get(Registries.DATA_COMPONENT_TYPE, OCReloadedCommon.MOD_ID); + private static final RegistrationProvider CREATIVE_TABS = RegistrationProvider.get(Registries.CREATIVE_MODE_TAB, OCReloadedCommon.MOD_ID); + + private static final List> CREATIVE_TAB_ITEMS = new ArrayList<>(); public static void initialize() { - BLOCKS.register(); - ITEMS.register(); - MENUS.register(); - BLOCK_ENTITIES.register(); - CREATIVE_TABS.register(); + NetworkUtil.initialize(); - NetworkUtil.getInstance().registerHandler("ocreloaded:power", new PowerNetworkHandler()); + /*NetworkUtil.getInstance().registerHandler("ocreloaded:power", new PowerNetworkHandler()); NetworkUtil.getInstance().registerHandler("ocreloaded:screen", new ScreenNetworkHandler()); - NetworkUtil.getInstance().registerHandler("ocreloaded:sound", new SoundNetworkHandler()); + NetworkUtil.getInstance().registerHandler("ocreloaded:sound", new SoundNetworkHandler());*/ } // Creative mode tabs - public static final RegistrySupplier CREATIVE_TAB = CREATIVE_TABS.register("creative", () -> CreativeTabRegistry.create( - Component.translatable("title.ocreloaded"), - () -> new ItemStack(CommonRegistered.CASE_BLOCK_ITEM_TIER_1.get()) - )); + public static final RegistryObject CREATIVE_TAB = CREATIVE_TABS.register("creative", () -> IPlatformRegistryHelper.INSTANCE.constructTabBuilder() + .title(Component.translatable("title.ocreloaded")) + .icon(() -> new ItemStack(CommonRegistered.CASE_BLOCK_ITEM_TIER_1.get())) + .displayItems((parameters, output) -> { + // TODO: Order items like they previously were + for (RegistryObject entry : CREATIVE_TAB_ITEMS) { + output.accept(entry.get()); + } + }) + .build()); // Default properties private static final BlockBehaviour.Properties DEFAULT_BLOCK_PROPERTIES = BlockBehaviour.Properties.of().strength(2f).noOcclusion(); - private static final Item.Properties DEFAULT_ITEM_PROPERTIES = new Item.Properties().arch$tab(CREATIVE_TAB); + private static final Item.Properties DEFAULT_ITEM_PROPERTIES = new Item.Properties();//.arch$tab(CREATIVE_TAB); // Blocks - public static final RegistrySupplier CASE_BLOCK_TIER_1 = BLOCKS.register("case1", () -> new CaseBlock(DEFAULT_BLOCK_PROPERTIES.strength(2.5f), 1)); - public static final RegistrySupplier CASE_BLOCK_TIER_2 = BLOCKS.register("case2", () -> new CaseBlock(DEFAULT_BLOCK_PROPERTIES.strength(2.5f), 2)); - public static final RegistrySupplier CASE_BLOCK_TIER_3 = BLOCKS.register("case3", () -> new CaseBlock(DEFAULT_BLOCK_PROPERTIES, 3)); - public static final RegistrySupplier CASE_BLOCK_CREATIVE = BLOCKS.register("casecreative", () -> new CaseBlock(DEFAULT_BLOCK_PROPERTIES, 4)); - public static final RegistrySupplier SCREEN_BLOCK_TIER_1 = BLOCKS.register("screen1", () -> new ScreenBlock(DEFAULT_BLOCK_PROPERTIES, 1)); - public static final RegistrySupplier SCREEN_BLOCK_TIER_2 = BLOCKS.register("screen2", () -> new ScreenBlock(DEFAULT_BLOCK_PROPERTIES, 2)); - public static final RegistrySupplier SCREEN_BLOCK_TIER_3 = BLOCKS.register("screen3", () -> new ScreenBlock(DEFAULT_BLOCK_PROPERTIES, 3)); - public static final RegistrySupplier KEYBOARD_BLOCK = BLOCKS.register("keyboard", () -> new KeyboardBlock(DEFAULT_BLOCK_PROPERTIES.noCollission())); + public static final RegistryObject CASE_BLOCK_TIER_1 = BLOCKS.register("case1", () -> new CaseBlock(DEFAULT_BLOCK_PROPERTIES.strength(2.5f), 1)); + public static final RegistryObject CASE_BLOCK_TIER_2 = BLOCKS.register("case2", () -> new CaseBlock(DEFAULT_BLOCK_PROPERTIES.strength(2.5f), 2)); + public static final RegistryObject CASE_BLOCK_TIER_3 = BLOCKS.register("case3", () -> new CaseBlock(DEFAULT_BLOCK_PROPERTIES, 3)); + public static final RegistryObject CASE_BLOCK_CREATIVE = BLOCKS.register("casecreative", () -> new CaseBlock(DEFAULT_BLOCK_PROPERTIES, 4)); + public static final RegistryObject SCREEN_BLOCK_TIER_1 = BLOCKS.register("screen1", () -> new ScreenBlock(DEFAULT_BLOCK_PROPERTIES, 1)); + public static final RegistryObject SCREEN_BLOCK_TIER_2 = BLOCKS.register("screen2", () -> new ScreenBlock(DEFAULT_BLOCK_PROPERTIES, 2)); + public static final RegistryObject SCREEN_BLOCK_TIER_3 = BLOCKS.register("screen3", () -> new ScreenBlock(DEFAULT_BLOCK_PROPERTIES, 3)); + public static final RegistryObject KEYBOARD_BLOCK = BLOCKS.register("keyboard", () -> new KeyboardBlock(DEFAULT_BLOCK_PROPERTIES.noCollission())); // Items - public static final RegistrySupplier CASE_BLOCK_ITEM_TIER_1 = ITEMS.register("case1", () -> new BlockItem(CASE_BLOCK_TIER_1.value(), DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier CASE_BLOCK_ITEM_TIER_2 = ITEMS.register("case2", () -> new BlockItem(CASE_BLOCK_TIER_2.value(), DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier CASE_BLOCK_ITEM_TIER_3 = ITEMS.register("case3", () -> new BlockItem(CASE_BLOCK_TIER_3.value(), DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier CASE_BLOCK_ITEM_CREATIVE = ITEMS.register("casecreative", () -> new BlockItem(CASE_BLOCK_CREATIVE.value(), DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject CASE_BLOCK_ITEM_TIER_1 = registerItem("case1", () -> new BlockItem(CASE_BLOCK_TIER_1.get(), DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject CASE_BLOCK_ITEM_TIER_2 = registerItem("case2", () -> new BlockItem(CASE_BLOCK_TIER_2.get(), DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject CASE_BLOCK_ITEM_TIER_3 = registerItem("case3", () -> new BlockItem(CASE_BLOCK_TIER_3.get(), DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject CASE_BLOCK_ITEM_CREATIVE = registerItem("casecreative", () -> new BlockItem(CASE_BLOCK_CREATIVE.get(), DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier KEYBOARD_BLOCK_ITEM = ITEMS.register("keyboard", () -> new BlockItem(KEYBOARD_BLOCK.value(), DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject KEYBOARD_BLOCK_ITEM = registerItem("keyboard", () -> new BlockItem(KEYBOARD_BLOCK.get(), DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier SCREEN_BLOCK_ITEM_TIER_1 = ITEMS.register("screen1", () -> new BlockItem(SCREEN_BLOCK_TIER_1.value(), DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier SCREEN_BLOCK_ITEM_TIER_2 = ITEMS.register("screen2", () -> new BlockItem(SCREEN_BLOCK_TIER_2.value(), DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier SCREEN_BLOCK_ITEM_TIER_3 = ITEMS.register("screen3", () -> new BlockItem(SCREEN_BLOCK_TIER_3.value(), DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject SCREEN_BLOCK_ITEM_TIER_1 = registerItem("screen1", () -> new BlockItem(SCREEN_BLOCK_TIER_1.get(), DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject SCREEN_BLOCK_ITEM_TIER_2 = registerItem("screen2", () -> new BlockItem(SCREEN_BLOCK_TIER_2.get(), DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject SCREEN_BLOCK_ITEM_TIER_3 = registerItem("screen3", () -> new BlockItem(SCREEN_BLOCK_TIER_3.get(), DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier ARITHMETIC_LOGIC_UNIT = ITEMS.register("alu", () -> new Item(DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier ARROW_KEYS = ITEMS.register("arrow_keys", () -> new Item(DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier BUTTON_GROUP = ITEMS.register("button_group", () -> new Item(DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier CARD = ITEMS.register("card", () -> new Item(DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier CONTROL_UNIT = ITEMS.register("cu", () -> new Item(DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject ARITHMETIC_LOGIC_UNIT = registerItem("alu", () -> new Item(DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject ARROW_KEYS = registerItem("arrow_keys", () -> new Item(DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject BUTTON_GROUP = registerItem("button_group", () -> new Item(DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject CARD = registerItem("card", () -> new Item(DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject CONTROL_UNIT = registerItem("cu", () -> new Item(DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier CUTTING_WIRE = ITEMS.register("cutting_wire", () -> new Item(DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier CHIP_DIAMOND = ITEMS.register("chip_diamond", () -> new Item(DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject CUTTING_WIRE = registerItem("cutting_wire", () -> new Item(DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject CHIP_DIAMOND = registerItem("chip_diamond", () -> new Item(DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier DISK = ITEMS.register("disk", () -> new Item(DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject DISK = registerItem("disk", () -> new Item(DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier CHIP_TIER_1 = ITEMS.register("chip1", () -> new CPUItem(DEFAULT_ITEM_PROPERTIES, 1)); - public static final RegistrySupplier CHIP_TIER_2 = ITEMS.register("chip2", () -> new CPUItem(DEFAULT_ITEM_PROPERTIES, 2)); - public static final RegistrySupplier CHIP_TIER_3 = ITEMS.register("chip3", () -> new CPUItem(DEFAULT_ITEM_PROPERTIES, 3)); + public static final RegistryObject CHIP_TIER_1 = registerItem("chip1", () -> new CPUItem(DEFAULT_ITEM_PROPERTIES, 1)); + public static final RegistryObject CHIP_TIER_2 = registerItem("chip2", () -> new CPUItem(DEFAULT_ITEM_PROPERTIES, 2)); + public static final RegistryObject CHIP_TIER_3 = registerItem("chip3", () -> new CPUItem(DEFAULT_ITEM_PROPERTIES, 3)); - public static final RegistrySupplier NUMPAD = ITEMS.register("numpad", () -> new Item(DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject NUMPAD = registerItem("numpad", () -> new Item(DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier PRINTED_CIRCUIT_BOARD = ITEMS.register("printed_circuit_board", () -> new Item(DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier RAW_CIRCUIT_BOARD = ITEMS.register("raw_circuit_board", () -> new Item(DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject PRINTED_CIRCUIT_BOARD = registerItem("printed_circuit_board", () -> new Item(DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject RAW_CIRCUIT_BOARD = registerItem("raw_circuit_board", () -> new Item(DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier TRANSISTOR = ITEMS.register("transistor", () -> new Item(DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier MANUAL = ITEMS.register("manual", () -> new ManualItem(DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject TRANSISTOR = registerItem("transistor", () -> new Item(DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject MANUAL = registerItem("manual", () -> new ManualItem(DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier CPU_TIER_1 = ITEMS.register("cpu1", () -> new CPUItem(DEFAULT_ITEM_PROPERTIES, 1)); - public static final RegistrySupplier CPU_TIER_2 = ITEMS.register("cpu2", () -> new CPUItem(DEFAULT_ITEM_PROPERTIES, 2)); - public static final RegistrySupplier CPU_TIER_3 = ITEMS.register("cpu3", () -> new CPUItem(DEFAULT_ITEM_PROPERTIES, 3)); + public static final RegistryObject CPU_TIER_1 = registerItem("cpu1", () -> new CPUItem(DEFAULT_ITEM_PROPERTIES, 1)); + public static final RegistryObject CPU_TIER_2 = registerItem("cpu2", () -> new CPUItem(DEFAULT_ITEM_PROPERTIES, 2)); + public static final RegistryObject CPU_TIER_3 = registerItem("cpu3", () -> new CPUItem(DEFAULT_ITEM_PROPERTIES, 3)); - public static final RegistrySupplier MEMORY_TIER_1 = ITEMS.register("memory1", () -> new MemoryItem(DEFAULT_ITEM_PROPERTIES, 1)); - public static final RegistrySupplier MEMORY_TIER_1_5 = ITEMS.register("memory1_5", () -> new MemoryItem(DEFAULT_ITEM_PROPERTIES, 1)); - public static final RegistrySupplier MEMORY_TIER_2 = ITEMS.register("memory2", () -> new MemoryItem(DEFAULT_ITEM_PROPERTIES, 2)); - public static final RegistrySupplier MEMORY_TIER_2_5 = ITEMS.register("memory2_5", () -> new MemoryItem(DEFAULT_ITEM_PROPERTIES, 2)); - public static final RegistrySupplier MEMORY_TIER_3 = ITEMS.register("memory3", () -> new MemoryItem(DEFAULT_ITEM_PROPERTIES, 3)); - public static final RegistrySupplier MEMORY_TIER_3_5 = ITEMS.register("memory3_5", () -> new MemoryItem(DEFAULT_ITEM_PROPERTIES, 3)); + public static final RegistryObject MEMORY_TIER_1 = registerItem("memory1", () -> new MemoryItem(DEFAULT_ITEM_PROPERTIES, 1)); + public static final RegistryObject MEMORY_TIER_1_5 = registerItem("memory1_5", () -> new MemoryItem(DEFAULT_ITEM_PROPERTIES, 1)); + public static final RegistryObject MEMORY_TIER_2 = registerItem("memory2", () -> new MemoryItem(DEFAULT_ITEM_PROPERTIES, 2)); + public static final RegistryObject MEMORY_TIER_2_5 = registerItem("memory2_5", () -> new MemoryItem(DEFAULT_ITEM_PROPERTIES, 2)); + public static final RegistryObject MEMORY_TIER_3 = registerItem("memory3", () -> new MemoryItem(DEFAULT_ITEM_PROPERTIES, 3)); + public static final RegistryObject MEMORY_TIER_3_5 = registerItem("memory3_5", () -> new MemoryItem(DEFAULT_ITEM_PROPERTIES, 3)); - public static final RegistrySupplier DATACARD_TIER_1 = ITEMS.register("datacard1", () -> new DataCardItem(DEFAULT_ITEM_PROPERTIES, 1)); - public static final RegistrySupplier DATACARD_TIER_2 = ITEMS.register("datacard2", () -> new DataCardItem(DEFAULT_ITEM_PROPERTIES, 2)); - public static final RegistrySupplier DATACARD_TIER_3 = ITEMS.register("datacard3", () -> new DataCardItem(DEFAULT_ITEM_PROPERTIES, 3)); - public static final RegistrySupplier GRAPHICSCARD_TIER_1 = ITEMS.register("graphicscard1", () -> new GraphicsCardItem(DEFAULT_ITEM_PROPERTIES, 1)); - public static final RegistrySupplier GRAPHICSCARD_TIER_2 = ITEMS.register("graphicscard2", () -> new GraphicsCardItem(DEFAULT_ITEM_PROPERTIES, 2)); - public static final RegistrySupplier GRAPHICSCARD_TIER_3 = ITEMS.register("graphicscard3", () -> new GraphicsCardItem(DEFAULT_ITEM_PROPERTIES, 3)); + public static final RegistryObject DATACARD_TIER_1 = registerItem("datacard1", () -> new DataCardItem(DEFAULT_ITEM_PROPERTIES, 1)); + public static final RegistryObject DATACARD_TIER_2 = registerItem("datacard2", () -> new DataCardItem(DEFAULT_ITEM_PROPERTIES, 2)); + public static final RegistryObject DATACARD_TIER_3 = registerItem("datacard3", () -> new DataCardItem(DEFAULT_ITEM_PROPERTIES, 3)); + public static final RegistryObject GRAPHICSCARD_TIER_1 = registerItem("graphicscard1", () -> new GraphicsCardItem(DEFAULT_ITEM_PROPERTIES, 1)); + public static final RegistryObject GRAPHICSCARD_TIER_2 = registerItem("graphicscard2", () -> new GraphicsCardItem(DEFAULT_ITEM_PROPERTIES, 2)); + public static final RegistryObject GRAPHICSCARD_TIER_3 = registerItem("graphicscard3", () -> new GraphicsCardItem(DEFAULT_ITEM_PROPERTIES, 3)); - public static final RegistrySupplier EEPROM = ITEMS.register("eeprom", () -> new EepromItem(DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier FLOPPY = ITEMS.register("floppy", () -> new FloppyDiskItem(DEFAULT_ITEM_PROPERTIES)); - public static final RegistrySupplier HARDDISKDRIVE_TIER_1 = ITEMS.register("harddiskdrive1", () -> new HardDiskItem(DEFAULT_ITEM_PROPERTIES, 1)); - public static final RegistrySupplier HARDDISKDRIVE_TIER_2 = ITEMS.register("harddiskdrive2", () -> new HardDiskItem(DEFAULT_ITEM_PROPERTIES, 2)); - public static final RegistrySupplier HARDDISKDRIVE_TIER_3 = ITEMS.register("harddiskdrive3", () -> new HardDiskItem(DEFAULT_ITEM_PROPERTIES, 3)); + public static final RegistryObject EEPROM = registerItem("eeprom", () -> new EepromItem(DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject FLOPPY = registerItem("floppy", () -> new FloppyDiskItem(DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject HARDDISKDRIVE_TIER_1 = registerItem("harddiskdrive1", () -> new HardDiskItem(DEFAULT_ITEM_PROPERTIES, 1)); + public static final RegistryObject HARDDISKDRIVE_TIER_2 = registerItem("harddiskdrive2", () -> new HardDiskItem(DEFAULT_ITEM_PROPERTIES, 2)); + public static final RegistryObject HARDDISKDRIVE_TIER_3 = registerItem("harddiskdrive3", () -> new HardDiskItem(DEFAULT_ITEM_PROPERTIES, 3)); - public static final RegistrySupplier FLOPPY_OPENOS = ITEMS.register("floppy_openos", () -> new FloppyDiskItem(DEFAULT_ITEM_PROPERTIES, "loot:openos")); - public static final RegistrySupplier FLOPPY_PLAN9K = ITEMS.register("floppy_plan9k", () -> new FloppyDiskItem(DEFAULT_ITEM_PROPERTIES, "loot:plan9k")); + public static final RegistryObject FLOPPY_OPENOS = registerItem("floppy_openos", () -> new FloppyDiskItem(DEFAULT_ITEM_PROPERTIES, "loot:openos")); + public static final RegistryObject FLOPPY_PLAN9K = registerItem("floppy_plan9k", () -> new FloppyDiskItem(DEFAULT_ITEM_PROPERTIES, "loot:plan9k")); - public static final RegistrySupplier EEPROM_LUA = ITEMS.register("eeprom_lua", () -> new LuaEepromItem(DEFAULT_ITEM_PROPERTIES)); + public static final RegistryObject EEPROM_LUA = registerItem("eeprom_lua", () -> new LuaEepromItem(DEFAULT_ITEM_PROPERTIES)); // Menu types - public static final RegistrySupplier> CASE_MENU_TYPE = MENUS.register("case", () -> MenuRegistry.ofExtended(CaseMenu::new)); - public static final RegistrySupplier> SCREEN_MENU_TYPE = MENUS.register("screen", () -> MenuRegistry.ofExtended(ScreenMenu::new)); + public static final RegistryObject, MenuType> CASE_MENU_TYPE = MENUS.register("case", () -> IPlatformRegistryHelper.INSTANCE.registerMenuType(CaseMenu::new)); + public static final RegistryObject, MenuType> SCREEN_MENU_TYPE = MENUS.register("screen", () -> IPlatformRegistryHelper.INSTANCE.registerMenuType(ScreenMenu::new)); // Block entities - public static final RegistrySupplier> CASE_BLOCK_ENTITY = BLOCK_ENTITIES.register("case", () -> BlockEntityType.Builder - .of(CaseBlockEntity::new, CASE_BLOCK_TIER_1.get(), CASE_BLOCK_TIER_2.get(), CASE_BLOCK_TIER_3.get(), CASE_BLOCK_CREATIVE.get()).build(null)); - public static final RegistrySupplier> SCREEN_BLOCK_ENTITY = BLOCK_ENTITIES.register("screen", () -> BlockEntityType.Builder - .of(ScreenBlockEntity::new, SCREEN_BLOCK_TIER_1.get(), SCREEN_BLOCK_TIER_2.get(), SCREEN_BLOCK_TIER_3.get()).build(null)); - public static final RegistrySupplier> KEYBOARD_BLOCK_ENTITY = BLOCK_ENTITIES.register("keyboard", () -> BlockEntityType.Builder - .of(KeyboardBlockEntity::new, KEYBOARD_BLOCK.get()).build(null)); + public static final RegistryObject, BlockEntityType> CASE_BLOCK_ENTITY = BLOCK_ENTITIES.register("case", () -> IPlatformRegistryHelper.INSTANCE.createBlockEntityType(CaseBlockEntity::new, CASE_BLOCK_TIER_1.get(), CASE_BLOCK_TIER_2.get(), CASE_BLOCK_TIER_3.get(), CASE_BLOCK_CREATIVE.get())); + public static final RegistryObject, BlockEntityType> SCREEN_BLOCK_ENTITY = BLOCK_ENTITIES.register("screen", () -> IPlatformRegistryHelper.INSTANCE.createBlockEntityType(ScreenBlockEntity::new, SCREEN_BLOCK_TIER_1.get(), SCREEN_BLOCK_TIER_2.get(), SCREEN_BLOCK_TIER_3.get())); + public static final RegistryObject, BlockEntityType> KEYBOARD_BLOCK_ENTITY = BLOCK_ENTITIES.register("keyboard", () -> IPlatformRegistryHelper.INSTANCE.createBlockEntityType(KeyboardBlockEntity::new, KEYBOARD_BLOCK.get())); + + // Data component types + public static final RegistryObject, DataComponentType> NBT_DATA_TYPE = DATA_COMPONENT_TYPES.register("custom_nbt", () -> DataComponentType.builder().persistent(CompoundTag.CODEC).build()); + + private static RegistryObject registerItem(String name, Supplier supplier) { + RegistryObject registryObject = ITEMS.register(name, supplier); + CREATIVE_TAB_ITEMS.add(registryObject); + return registryObject; + } } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/registry/IPlatformRegistryHelper.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/registry/IPlatformRegistryHelper.java new file mode 100644 index 0000000..48e2b4b --- /dev/null +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/registry/IPlatformRegistryHelper.java @@ -0,0 +1,35 @@ +package li.cil.ocreloaded.minecraft.common.registry; + +import java.util.ServiceLoader; + +import net.minecraft.core.BlockPos; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; + +public interface IPlatformRegistryHelper { + + IPlatformRegistryHelper INSTANCE = ServiceLoader.load(IPlatformRegistryHelper.class).findFirst().orElseThrow(); + + CreativeModeTab.Builder constructTabBuilder(); + + interface BlockEntityConstructor { + T get(BlockPos blockPos, BlockState blockState); + } + + BlockEntityType createBlockEntityType(BlockEntityConstructor constructor, Block... blocks); + + MenuType registerMenuType(TypedMenuConstructor menuConstructor); + + @FunctionalInterface + interface TypedMenuConstructor { + T createMenu(int containerId, Inventory playerInventory, FriendlyByteBuf buf); + } + +} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/Colors.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/Colors.java index 930f2b7..c8b7e47 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/Colors.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/Colors.java @@ -9,7 +9,6 @@ public final class Colors { public static final int CYAN = 0x66FFFF; public static final int MAGENTA = 0xC354CD; - private Colors() {} } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/IPlatformMenuHelper.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/IPlatformMenuHelper.java new file mode 100644 index 0000000..dec1198 --- /dev/null +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/util/IPlatformMenuHelper.java @@ -0,0 +1,16 @@ +package li.cil.ocreloaded.minecraft.common.util; + +import java.util.ServiceLoader; +import java.util.function.Consumer; + +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.MenuProvider; + +public interface IPlatformMenuHelper { + + IPlatformMenuHelper INSTANCE = ServiceLoader.load(IPlatformMenuHelper.class).findFirst().orElseThrow(); + + void openExtendedMenu(ServerPlayer serverPlayer, MenuProvider menuProvider, Consumer byteBufConsumer); + +} \ No newline at end of file diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/MachineSetup.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/MachineSetup.java index d30288f..a06704c 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/MachineSetup.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/MachineSetup.java @@ -36,20 +36,20 @@ private static void registerStartCode(MinecraftServer server) { } private static void registerLuaStartCode(MinecraftServer server) { - ResourceLocation resourceLocation = new ResourceLocation(OCReloadedCommon.MOD_ID, "lua/machine.lua"); + ResourceLocation resourceLocation = ResourceLocation.fromNamespaceAndPath(OCReloadedCommon.MOD_ID, "lua/machine.lua"); Supplier> supplier = createCodeSupplier(server, resourceLocation); MachineCodeRegistry.getDefaultInstance().registerMachineCode("Lua 5.2", supplier); MachineCodeRegistry.getDefaultInstance().registerMachineCode("Lua 5.3", supplier); } private static void registerLuaBiosCode(MinecraftServer server) { - ResourceLocation resourceLocation = new ResourceLocation(OCReloadedCommon.MOD_ID, "lua/bios.lua"); + ResourceLocation resourceLocation = ResourceLocation.fromNamespaceAndPath(OCReloadedCommon.MOD_ID, "lua/bios.lua"); Supplier> supplier = createCodeSupplier(server, resourceLocation); MachineCodeRegistry.getDefaultInstance().registerBiosCode("lua", supplier); } private static void registerFilesystemSuppliers(MinecraftServer server) { - ResourceLocation resourceLocation = new ResourceLocation(OCReloadedCommon.MOD_ID, "loot"); + ResourceLocation resourceLocation = ResourceLocation.fromNamespaceAndPath(OCReloadedCommon.MOD_ID, "loot"); FileSystemSupplierRegistry.getDefaultInstance().register("loot", (uuid, data) -> LootFileSystemSupplier.createLootFS(server, resourceLocation, data)); FileSystemSupplierRegistry.getDefaultInstance().register("localfs", (uuid, data) -> LocalFileSystemSupplier.createLocalFS(server, uuid)); } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/LootFileSystemSupplier.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/LootFileSystemSupplier.java index d74cdf4..7a2459e 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/LootFileSystemSupplier.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/fssup/LootFileSystemSupplier.java @@ -55,7 +55,7 @@ public static FileSystem createLootFS(MinecraftServer server, ResourceLocation r private static Map getRemappings(ResourceManager resourceManager, ResourceLocation resourceLocation, String data) { String remapPath = resourceLocation.getPath() + "/" + data + ".remap"; - Optional remapResource = resourceManager.getResource(new ResourceLocation(resourceLocation.getNamespace(), remapPath)); + Optional remapResource = resourceManager.getResource(ResourceLocation.fromNamespaceAndPath(resourceLocation.getNamespace(), remapPath)); if (remapResource.isEmpty()) { return Map.of(); } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaCFactory.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaCFactory.java index 99395f8..d7aefcf 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaCFactory.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaCFactory.java @@ -4,10 +4,12 @@ import java.io.File; import java.io.InputStream; +import java.nio.file.FileAlreadyExistsException; import java.nio.file.Files; import java.util.List; import java.util.Optional; +import org.apache.commons.logging.Log; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -51,7 +53,7 @@ public boolean isAvailable(String architecture) { && tempDir != null && (resource = getResource(architecture)).isPresent(); - if (isAvailable) { + if (isAvailable && resource != null) { LOGGER.trace("LuaJIT native library available for this platform: " + resource.get()); } else { LOGGER.error("LuaJIT native library not available for this platform."); @@ -81,7 +83,7 @@ public Optional createFactory(String architecture) { } private Optional getResource(String architecture) { - ResourceLocation resourceLocation = new ResourceLocation(OCReloadedCommon.MOD_ID, "libs/" + architecture + "/" + executableName); + ResourceLocation resourceLocation = ResourceLocation.fromNamespaceAndPath(OCReloadedCommon.MOD_ID, "libs/" + architecture + "/" + executableName); return server.getResourceManager().getResource(resourceLocation); } @@ -143,7 +145,10 @@ private boolean ensureResourceCopied(String architecture) { try (InputStream in = resource.get().open();) { Files.copy(in, new File(tempName).toPath()); - LOGGER.trace("Copied LuaJIT native library to temporary directory: " + tempName + "."); + LOGGER.trace("Copied LuaJIT native library to temporary directory: {}.", tempName); + return true; + } catch (FileAlreadyExistsException e) { + LOGGER.trace("The native libraries already exist, and their handles are locked. This is a windows thing, and nothing won't happen if we won't copy them over once more (probably)"); return true; } catch (Exception e) { LOGGER.error("Failed to copy LuaJIT native library to temporary directory.", e); diff --git a/projects/Minecraft/src/main/resources/ocreloaded.mixins.json b/projects/Minecraft/src/main/resources/ocreloaded.mixins.json index 8d541a8..06a5e0e 100644 --- a/projects/Minecraft/src/main/resources/ocreloaded.mixins.json +++ b/projects/Minecraft/src/main/resources/ocreloaded.mixins.json @@ -1,7 +1,7 @@ { "required": true, "package": "oc.cil.ocreloaded.mixin", - "compatibilityLevel": "JAVA_17", + "compatibilityLevel": "JAVA_21", "minVersion": "0.8", "client": [ ], diff --git a/projects/NeoForge/build.gradle.kts b/projects/NeoForge/build.gradle.kts index aa9519b..331af1c 100644 --- a/projects/NeoForge/build.gradle.kts +++ b/projects/NeoForge/build.gradle.kts @@ -10,6 +10,8 @@ neoForge { val ocreloaded by mods.registering { sourceSet(sourceSets.main.get()) + sourceSet(project(":Minecraft").sourceSets.main.get()) + sourceSet(project(":Core").sourceSets.main.get()) } runs { @@ -20,7 +22,18 @@ neoForge { } dependencies { - compileOnly(project(":Minecraft")) - commonJava(project(path = ":Minecraft", configuration = "commonJava")) - commonResources(project(path = ":Minecraft", configuration = "commonResources")) + implementation(project(":Minecraft")) + + "additionalRuntimeClasspath"(libs.typesafeConfig) + "additionalRuntimeClasspath"(files("../../libs/OpenComputers-JNLua.jar", "../../libs/OpenComputers-LuaJ.jar")) + jarJar(libs.typesafeConfig) + jarJar(files("../../libs/OpenComputers-JNLua.jar", "../../libs/OpenComputers-LuaJ.jar")) + + implementation("mysticdrew:common-networking-neoforge:1.0.20-1.21.1") +} + +sourceSets.main { + resources { + srcDir(project(":Minecraft").sourceSets.main.get().resources.srcDirs) + } } \ No newline at end of file diff --git a/projects/NeoForge/gradle.properties b/projects/NeoForge/gradle.properties deleted file mode 100644 index 4f8c488..0000000 --- a/projects/NeoForge/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -loom.platform = neoforge \ No newline at end of file diff --git a/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/client/OCReloadedClient.java b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/client/OCReloadedClient.java index 2fc1ecb..bf1b8c8 100644 --- a/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/client/OCReloadedClient.java +++ b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/client/OCReloadedClient.java @@ -1,13 +1,22 @@ package li.cil.ocreloaded.neoforge.client; +import li.cil.ocreloaded.minecraft.client.ColorHandlers; import li.cil.ocreloaded.minecraft.client.CommonClientHooks; import li.cil.ocreloaded.minecraft.client.registry.ClientRegistered; +import li.cil.ocreloaded.minecraft.client.renderer.entity.CaseRenderer; +import li.cil.ocreloaded.minecraft.client.renderer.entity.screen.ScreenRenderer; +import li.cil.ocreloaded.minecraft.client.screen.CaseScreen; +import li.cil.ocreloaded.minecraft.client.screen.ScreenScreen; +import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; import li.cil.ocreloaded.neoforge.common.OCReloaded; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.fml.common.Mod; import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; +import net.neoforged.neoforge.client.event.EntityRenderersEvent; +import net.neoforged.neoforge.client.event.RegisterColorHandlersEvent; +import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent; @Mod(value = OCReloaded.MOD_ID, dist = Dist.CLIENT) @EventBusSubscriber(modid = OCReloaded.MOD_ID, value = Dist.CLIENT) @@ -21,4 +30,26 @@ public static void clientSetup(FMLClientSetupEvent event) { ClientRegistered.setup(); CommonClientHooks.setup(); } + + @SubscribeEvent + public static void registerItems(RegisterColorHandlersEvent.Item event) { + ColorHandlers.registerItemColorHandlers((item, itemColor) -> event.register(itemColor, item)); + } + + @SubscribeEvent + public static void registerItems(RegisterColorHandlersEvent.Block event) { + ColorHandlers.registerBlockColorHandlers((block, blockColor) -> event.register(blockColor, block)); + } + + @SubscribeEvent + public static void registerBlockEntityRenderers(EntityRenderersEvent.RegisterRenderers event) { + event.registerBlockEntityRenderer(CommonRegistered.CASE_BLOCK_ENTITY.get(), CaseRenderer::new); + event.registerBlockEntityRenderer(CommonRegistered.SCREEN_BLOCK_ENTITY.get(), ScreenRenderer::new); + } + + @SubscribeEvent + public static void registerScreens(RegisterMenuScreensEvent event) { + event.register(CommonRegistered.CASE_MENU_TYPE.get(), CaseScreen::new); + event.register(CommonRegistered.SCREEN_MENU_TYPE.get(), ScreenScreen::new); + } } diff --git a/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/NeoPlatformMenuHelper.java b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/NeoPlatformMenuHelper.java new file mode 100644 index 0000000..a116888 --- /dev/null +++ b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/NeoPlatformMenuHelper.java @@ -0,0 +1,15 @@ +package li.cil.ocreloaded.neoforge.common; + +import java.util.function.Consumer; + +import li.cil.ocreloaded.minecraft.common.util.IPlatformMenuHelper; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.MenuProvider; + +public class NeoPlatformMenuHelper implements IPlatformMenuHelper { + @Override + public void openExtendedMenu(ServerPlayer serverPlayer, MenuProvider menuProvider, Consumer byteBufConsumer) { + serverPlayer.openMenu(menuProvider, byteBufConsumer::accept); + } +} diff --git a/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/NeoPlatformRegistryHelper.java b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/NeoPlatformRegistryHelper.java new file mode 100644 index 0000000..8f35421 --- /dev/null +++ b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/NeoPlatformRegistryHelper.java @@ -0,0 +1,30 @@ +package li.cil.ocreloaded.neoforge.common; + +import li.cil.ocreloaded.minecraft.common.registry.IPlatformRegistryHelper; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.neoforged.neoforge.common.extensions.IMenuTypeExtension; + +public class NeoPlatformRegistryHelper implements IPlatformRegistryHelper { + @Override + public CreativeModeTab.Builder constructTabBuilder() { + return CreativeModeTab.builder(); + } + + @Override + @SuppressWarnings("null") + public BlockEntityType createBlockEntityType(BlockEntityConstructor constructor, Block... blocks) { + // Quote: "Build using null; vanilla does some datafixer shenanigans with the parameter that we don't need." + //noinspection DataFlowIssue + return BlockEntityType.Builder.of(constructor::get, blocks).build(null); + } + + @Override + public MenuType registerMenuType(TypedMenuConstructor menuConstructor) { + return IMenuTypeExtension.create(menuConstructor::createMenu); + } +} diff --git a/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java index be80e26..2cf6b99 100644 --- a/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java +++ b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java @@ -3,6 +3,7 @@ import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; import li.cil.ocreloaded.minecraft.server.CommonServerHooks; +import net.neoforged.bus.api.IEventBus; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.fml.common.Mod; @@ -13,7 +14,7 @@ public class OCReloaded { public static final String MOD_ID = "ocreloaded"; - public OCReloaded() { + public OCReloaded(IEventBus bus) { CommonRegistered.initialize(); } diff --git a/projects/NeoForge/src/main/resources/META-INF/neoforge.mods.toml b/projects/NeoForge/src/main/resources/META-INF/neoforge.mods.toml index cbbd1c8..77bd3cf 100644 --- a/projects/NeoForge/src/main/resources/META-INF/neoforge.mods.toml +++ b/projects/NeoForge/src/main/resources/META-INF/neoforge.mods.toml @@ -5,10 +5,10 @@ license = "See the LICENSE file included in the source code of this mod" [[mods]] modId = "ocreloaded" -version = "{version}" +version = "${version}" displayName = "OpenComputers Reloaded" displayURL = "https://oc.cil.li/" -logoFile = "../../../../../Minecraft/src/main/resources/ocreloaded/textures/gui/logo.png" +logoFile = "assets/ocreloaded/textures/gui/logo.png" logoBlur = false credits = "Based on the original OpenComputers mod, which was inspired by a few mods, most notably ComputerCraft." authors = "EveryOS, 6TELOIV, Walksanator, timuzkas. Resources are from authors of original OpenComputers (Sangar, payonel, Vexatos and others)" diff --git a/projects/NeoForge/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.registry.IPlatformRegistryHelper b/projects/NeoForge/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.registry.IPlatformRegistryHelper new file mode 100644 index 0000000..ca679fe --- /dev/null +++ b/projects/NeoForge/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.registry.IPlatformRegistryHelper @@ -0,0 +1 @@ +li.cil.ocreloaded.neoforge.common.NeoPlatformRegistryHelper \ No newline at end of file diff --git a/projects/NeoForge/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.util.IPlatformMenuHelper b/projects/NeoForge/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.util.IPlatformMenuHelper new file mode 100644 index 0000000..437dc31 --- /dev/null +++ b/projects/NeoForge/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.util.IPlatformMenuHelper @@ -0,0 +1 @@ +li.cil.ocreloaded.neoforge.common.NeoPlatformMenuHelper \ No newline at end of file diff --git a/projects/NeoForge/src/main/resources/ocreloaded.mixins.json b/projects/NeoForge/src/main/resources/ocreloaded.mixins.json deleted file mode 100644 index 8d541a8..0000000 --- a/projects/NeoForge/src/main/resources/ocreloaded.mixins.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "required": true, - "package": "oc.cil.ocreloaded.mixin", - "compatibilityLevel": "JAVA_17", - "minVersion": "0.8", - "client": [ - ], - "mixins": [ - ], - "injectors": { - "defaultRequire": 1 - } -} \ No newline at end of file diff --git a/projects/NeoForge/src/main/resources/pack.mcmeta b/projects/NeoForge/src/main/resources/pack.mcmeta deleted file mode 100644 index 8248de5..0000000 --- a/projects/NeoForge/src/main/resources/pack.mcmeta +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pack": { - "pack_format": 22, - "description": "OpenComputers Reloaded Resource Pack" - } -} \ No newline at end of file diff --git a/tools/check_crlf.py b/tools/check_crlf.py index 46934ef..032003b 100755 --- a/tools/check_crlf.py +++ b/tools/check_crlf.py @@ -6,7 +6,7 @@ def main() -> int: any_failed = False for file_name in get_text_files(): - if is_file_crlf(file_name): + if is_file_crlf(file_name) and file_name != "gradlew.bat": # gradlew.bat gets a pass, it's meant for windows. print(f"::error file={file_name},title=File contains CRLF line endings::The file '{file_name}' was committed with CRLF new lines. Please make sure your git client is configured correctly and you are not uploading files directly to GitHub via the web interface.") any_failed = True From de2a52105ce76f66b4f6794f9fa936b01bd1e1d3 Mon Sep 17 00:00:00 2001 From: mjarduk Date: Tue, 30 Sep 2025 23:07:00 +0300 Subject: [PATCH 05/10] Added two lines of manifest so NeoForge would stop crying. --- libs/OpenComputers-JNLua.jar | Bin 131575 -> 131660 bytes libs/OpenComputers-LuaJ.jar | Bin 456431 -> 456514 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/libs/OpenComputers-JNLua.jar b/libs/OpenComputers-JNLua.jar index f06a8f722abedbdd1b7b5b0ef421311b4e7673ab..e8b0c8341bff53c6b6054b6dcc3d42e2b2c64a1a 100644 GIT binary patch delta 2148 zcmZ9Ndr;I>6vy{mMPPYt21tYgN+vM7EHC9D2og9T4@st+%*TSuu<+D)5vg#{5_fhx6wJhr%~ zFke%o%TlHkZYa*vDpNK2+6b>aohnP0r`n|5sL9GzWfkVD3N+em)h7jc#To~BMU(qB z{YgD|w`4An$!Uex)+6mK^O3kr=0#6m`lZBY#3~b069Q6VQxg;7S7xYE668`=CIgw9 z?C6mL+W4S0csb1SzzQRHROqLplM&=IjuFq(q236yaj_8`;VdpULI@0EsSzT<6Jsxd z3$_@+57K$;j;@y|F5__$H1mg-;Q~0}?}VAdG{dJZf#`M_)J$t7#U+;^ko{vV#T^vG zFurjGvRJS^M}{+d!4MYK2p4s$2eb#2PlRC^u9sE68sH;{)_OB z8??e+rIdCvku^Xq#U(ucE=Y>oO%TW0f_ZEh4xYvLuD~zaz@7Pp5)8oRHflg-5~lwL zA?SaTMovqW#GZDr!TmQWo0?_@N$kN&;Vf;3D7I~tBn(xn>~OrDiYZ<#vTHjiyLdep zp@xsw%dxG4vIW@!lxI8Q@>>Mzas)V^ixlKhx9uz=X zWrHia$l+LJ1}^w-7dajt6~L+56^Bh!W_HcwGI!L7bWM#T*54ujl6ncC(_QL9X@kff zZt%b#?oxK?DKoI*6}jSD-Ei|v0o**%)MYEX#z_hAup84_a0eF$cXQ6YNn(|K$f z6C&{eP0%kx7@_wx#s}=M{sE=cR+EULpQakJwUC*(P64*)E+=<+Kkf5-hu3pY`l*yS z#Z)|tpMnCn576$ub)K5D!RrIm!X~##*mDr9G43JFw9eyoeBvR5vjDHDcoAFZVYNE^cFA^kDma! zXwc;e>UzU(X74iA)M$=f@m3?)RqkbetoP3;(5iBrg)#p#Qz5Q6LoF-;^0%Eer(Dnk QY^HpdS|&Tz!vC882a_}9J^%m! delta 2013 zcmZ8hZBUd|6y9?McYy^~U`ZAnF&)!&fL%TeL=XxvP*94L#1PGlkwKlB@rPrwO#bjk zeyp!{Aj)XWF?33UNyAChQJYFLJ_X`S5JFKt6jT;vw{!1{%hJy5?(;n7x#!+M&asImD)SEX}t_TXQabFRnzjgEPink5*VRw4E zdYF00A9HHKsqp&G*I`yotj{!8h2sAyD2)$&Uw*zTTu3lAF(W=GIV~w9H9jplDe;|* z;M63{tAhZZ&jWVi_F6DNF_zXsI9$etT8M@L>07N9=huNA0x`V~5@0QM))79(r6U}_ z$6A?G=xoINdN8nXXTp)#SPyz;R&rhPR4FmKf%tDO!dKJ)M#j`4W>PD;SA*WSLC4X$B*0d$t)iu`Tn3l<*H(s}=}+l4I>6fn8e&e-tEeKF8J&fvY)Q z7s|2J80v=_UdQ@Ys^fH+Fnr$%@yrrVI0SWV)Er}qWX=jlQyVR;O~pCwuoMR=0JAW# z9SY!AENzF6+3HMTd#eK?SV9)zCzStEWJa8 zf0`=`wp?F%S!IDnJ-KXG!ArjiO`QrK%S3jz0}tk=O#pF%lgI^znvz$(W`};s8b#%%t#*=;In%n&{LMeL%PJclCEa?-t;sJF}Ga#_vLs$&k zarHx*zU~o{!m#%tHKxNN!ZH2S_4sjtkM+~CiwZ0p1U)(pP{8ISlMe@|PuE;HS%NEE z!43Zyq!X98gJb3E-DN}aAZ_V|ra}0Gt?}Vn6b27b6A#YhBm&O{fD;xE(FVZ*cEwB1 z`Pw6@&pKO{O@ZJdUrNHfDO)+u;|3$PKcckT7I3l8N{37e8~QgR*}mC~@~wN~>DsAXjsv zGTlMhoetg@`;3gn47==urCg!W7WM4N1g$(w-lNn;w$3iQWA-R@=UBE~QDWLg+WPV+ zy{VdVrpoT9w@})I4;$e)`VUW^@L5$mBBrheozT;_Yc*0a`L`&3ssoqpz&t>@%E@-wqDIrNp zNRkthGzm%Cge3E$No+#ojDco44EH~SL))9RF>y09XZ-Dme`ALD`M8Z3JG9FfpRpr` z4w>NRK4z%SWHmFB%pA?UvnqZZ((SfX+f4aGE(@5ew1-A7U>;H-Em^?2OVxB}0qZL_ zmkg)+*pnuTxyru$xhW0j&#U-zb4upVr%ca=V#%5;-Y{#5k6~JR6UCZIrDPY)=E=!6 zCg*?{Whhhjycc;aVpHVGAXBRYi&#&og6=P3ljNtdCiKN(<|SLlnL273XF~;x zG033=@`+c;30r9|sUfv|jY+fKk~-@4y@kV%E0~XbzpoHh-=eNN z_ZMQ$x5(eo2}0ygKtILbVrFSy2x7mI4U~QTh4{iB=Ay#7Socn^H`e*-!mDT{>m~m% zLkQ;tHe9w3R)h_83YKhWKmw07v|ju6p~6caj*0dTMOsW=)|!Ark?S z3T{AN3CPm8SZwVgZu@Epx3wpm)hMQMOS$Mop{p^mv&)6Jvm7yHik@a^-k-SNeW}A?e_|<5<;yW~UOX0X3d8bH>zRW}VJ(^tt`)P^BKcc>5S9~M3{B^vEjg~kiRQ9Ph{fwr^sO_5xXHz{JtmR5 zSF)wvCor_bK1sc6y(n@$`$~$ZQv8v>&lF9wG9|s3W=tX?ZIn&PiENr2nJdip8(44I z54(>C5Of&6rmhbhskZ>d*p1xb&JpCy#pT}iCF+^SF^w&GmtT~x2nso1@|iC;3j^NWQj zDV7@1ugOSw`ZYlgUc*{7-2}4lmLNf!P_13=QeZ09?Cd5)6mJxwwE^qV?12#R2G&p3 zK2(I3oE}P+)NvhhFKtFLUzQ6SdxTl1@gg|NE^4X>2fC>J>S9t8=nhRW*G?`)`W2>Stry*gYG4e0I<{Oz}ZlR2_uH2>>C2X?@%Fh;o9r(>I~ ziWOo>IDS1!-DFKW@f7qX6S??G7mU)7@gS8_x0-V0RpwiX%R z%2t%lQRw?x^m;Gm%gpHWeXMgzOO2Iyp-24-^*2a1QJN-eECs&GakN(8L@ls#v7jFN za0lo@d{kG#{0dv>IL`?0-JZH36R)i}_z7j>_hqW$Rdu${0qJb-1HVlPCv zy~dW}4`9cU7Jz@42H;y@#Q#=2k6#H=P$O(wQTa!<<5X6}^P6N8#IIAtOD zqh11+dI48uq2t?q1Q~V^g*CXp5Yzj^eEcBHlLrc7pN$Q0-baXq*{qjzfO4|&Hrh0l zGdCKPgF60XB#+63^wW^;9XTlC(s3$MF;3G^ocgVE5sW-d*aC8K3rO`>IcE98acw&0 zG&QhZV&VdY*SN!2lWvC))B4#elER5GOhw*>p-hU8qNm1(F=Sw*VjCjIM=8RZwnkwE zas9Fuuj?K$^~RkPqjHUi!LsRA)VU5nf{wpfsB(C5jJ2d3jt4Fl*p!erM^G_O;{=I6 zhW7qP5pR0DiWD40iH}~XB0(#W3)78i&@uGryIQdgl2@)(gbnRjiy5RJ!Bp*jg5&r^ zVGBsqI1;5YJBs~@HI+Ol`6n!!*Jfcg1?Ib1V@E$fLd#xMZ`xBx@v@+BLNO-hp(u(E z3jAjtE}H!h2{G!BrV+10eDdT8;-81yH$8`LrO_6 z3(JJKTZXw597ktoZVK|rFG$t2TS7$t0^ge3LR{fu<6R*SM|2%D44QyNS@Cz-#zt4gp7C(-oN=R$PI#|WougjmHzz)K+> z=HrZvdn3e<0@g=5L-7UZXVN>)Tq*1wwuR|(*Xk5jsOtZOYw#&_vf>{hw)}(QTEk!F zBR|wjTIdJv(1GGVU>Q1}Mr!Udx_=3~t&(Z&=>tCjwx33~|5ylYWvTsys<~sOUXXrg zFwx@HLVP&GtZ2s>-0KH*P{?QUDpy5VQ^aprpebDxVnsK9W8QK>H#O;|HGSY&Q@~l= zE@Qn^wj?jDo=%)a2*U;_SVz+bXc;dIS2=T-z{iJS3iwKOmA4NUL?5cv(dBap*l)Co z%p0w>q53X+mxn&`Iksh3Kenn6~yT+kF8^9~&WT#tS&hf?`yTOJlUASC5`%6~WOhR%QFK z2=jAUq#`!OAZ3eHWPUL=*{DPnxn7KV$w*R>6G?Sz;Cm5kFy0_+Nf$AXloTNX4BEz| zE5Vz?X^X1qoDy{Q_f{1tEI|m*wh7|=I}Y(K2e@#hgx^u%Pcwz6;NnQO5XITZzp1kS zm0K^Rg}K7vUM_NOdJmnwgtt@)885Nv(n#_yWudZdo^UEFMVFz+x#&nqWUt5_VFn$T*&td629;^A#$#;fzn*^`2!cmCV$}PnJoSsEa#mkmz%5y z-TQ-elh<7kBI|;-0r_6V!e$izW$Nu_247yDwBi%pD4Yjk8AOt*u#yV3eol! z>nqKpz*{U*j;t2U@-}jsUBg9pDy_k0H7%{-HahA5mg7$3ahG8uzeP=%254{xw#M&O zwkdZozx@AKk>Wde|GoI2kP)&~14@2?&w%v1Y^+>rr3m~=a}OcR&?}@NrQJh46ghCx zk&F)JwV%oR9L?2R_=2P2z-XEg$Cs;qR#ald+KhJ=q}6>CdYeu{1h~VTcpue1 z(p@2T;`?c?XT34jc?yTg515y9jglVV7Fj_x4_Jtt>cdT)=%A0ej{d{Hy=Zv7wt2(3 zLpv%SZr+gJ?DQl*MCNiw3G5MI-hf6uM3o*Mts*6(;r+`)#BP|V!dVl|_4FhUopdip zC%dPrY)i^9_vQhD7|U_Fn-Ekh!Vz0U5dJf*>dZ%ID$h~bvLE4fmm8uYzlXrPWd+8c z9;(9Mgd%7AUSa&y3UtyUOl9jEh9;G~NlCbZ8;h^-sS)*Z5*ML3=qT$k-oH3}9^;ZS zIa+0i{Wqer{8~lsaB@6WA(qtcG=Aus@&vK;j1ze46U=<`av}bHf}`~FRYIJ6iUJN_ zg?!I@iYUjeR`6iC?K(wRl4m6f&ozmYwp3M#w`NKuHg)@Cg?uh=NmYc7=2zhdga}Hn zV!qNLdR~R{z=i1<3zGZnrkX0;$}65>2O2ZDaHC1p{N`LPM3-``bmdm0^lCMx@u5=S z=FeF_jawT=HPx&&EqjhnGw;r|>aXYMOzKPVHP{$qYcTe8T2{kmXoe1E1|P>yQ(v&I znl<8?#=T&EnuSA61}+-Y^%v|j&8QIy!6oh`K7?Q{!6w{bK`TB zVdE<{NE1AwuhB!=WEEca8l%|wD`dRJCqNNRDEJK;91K;F-$R)V-NY~Bx`_#9 LW@V8KKY;!h_l}tJ delta 6108 zcmZ9Q30%%u7sq@4&-2{&dLo43&5$Kh_9j{KVr0o+j2ScBnp+%ks4|+ z_K{`mOUg1sRAUTTl66SSguy$u_jjM8fB#;ePan_kd(OT0+;i_e|NH;vR5Y$EZ=B#| zva+(s*%mNx_dKPdv4w?2!^GZ=8$B74cW&??kM@Q3gFM_Xbgn)+*ASg+{5e+)oz~Y`Z)0Kc|2?8tXZ%(F+Yr?TKZo@D*w4d1 zpugu3zX1RK{YHG;en|h12I&-MeNr=BeL04MZYHe@6JEMhDhLyub=hPL7u|IgNtwEO z^hvmI*SS(uxag}JCI4$gCE=pIZl(Eml50x?c}y2wl}u|Y9HDDMrkTQuVyBD#y75#v zU3{g)IcW@IX9#a4yG{*B@~Ue`A50gfByVSvT}|XK>#9C}N_l-2Q)i0ax)!u+rU+63 z8Z+~nCAukR0q2RPNmE)|QT!~?Q90tKf+UZY_37;_;jS23S3?JyoGwfhGFvoKHu^Ai z=x#?lX2Y$}R{~f1?`+|vRQ6*rXby(4@@KI@ilf0SUeCeo4}`NA86mnTM`p3u9)Zc; zh%k$!0g?7(eGY>*kHnx0quFI#r0Ar$#tp{D-d zLQ5qKOss|?=|ZBQGc(Y8)ql`?*dA$VNuB134$AnwESAkhG*b_;D4UBo+a5QIr1axX zH2ORA*fWR0&Kw6iB*B(5>~1$tbXP{4W%2DitU?-P%@bpkp81lsO3KQ2q&0J~ihB#R zt2nDbn%yXQK2q7~nH0^E);)8Q>9?bjMZ!Qe7q(nDlH1oyoRl?{udQ3&bZ1bz{G`-E@w0Y!CcSEkN@Z-V%SV z+fBU}im}RTU-mk@P;}8PrmBTvlrrfvW+972FU2*G#gagDvn`WDX{xLqXT~W(I(v%S zTOFWJG)DM#Jhup%th1t<<8jFBW2zl8rNh18+73n<9fEG8SIT11RCzH;wKvqX4PK14 zm#3&UE84VJ_$VEwnMq0vHl^oWs#=Pb&zOs$edc1+tOO)^Rt#D;`;KixmkJ{ti^0@V zqBO*A0YbnUzH9Q~5;QSHYaCWA5uFvEI1R~)(>ci1aaY1tsMtrjn5YUH3RtPL(RAB= zl}@`s-Xu%cPn18>=!%6)+K88>VcP`7iy&QpIuVZ@Rdi4~wV;0|U?UIDk)jzL z%RwkOw&v_MRWeU8wm%L0HUXnPIm2Y!FCe26LE4^WvMCXHPdLZoO``Bsrd?tYxKeze z%(=$m;7WvRK~*b7pfaq4oRYB(W+owNk8VlfPC>WP^XerC`tKyH?WH>s2P!A;v2RMU z@X__9!ekt4t5RljN|6++0yKG9R%_jkm9c|oxz3heEQ3SgD)hOqg7MP|99z2#;La() zxqmU9nS$UeAF~L0g1$>rFwup7Gw~&?YRq#M>j-6a*gq^@6ZZC?S5mmqnAON@Jv}9^ zMS+-FsuPs88g=e_D>F$+6@JPqYqkcZioVKzTUA(7UMe!u#es?I8pIQ0QiYM`ufeFx znn==;iq{~xf_K6z4Y}^%#+F1Wj&)?=*-3FBn{@aFcUFltm2_5wtaI*4@|TQ{ri-4+ zlnE?~Cn$F0`8~|nf+g{!*zYlmt064PzDF+7C$ji-EtWQg64r`|%BP`{b)}7&qCS1N z4%w}o#$FS{6mx+xQOoIy_K-acXNOnoP%Tntun5Tz-guyAWQY*OWezj%Oe7~NlEvCg ztxj zWj#)cAMIL?bM){I`+IG`V)ePtB4L9VplpA@0`2U`^`T-*4jYl9_)-o2aw87JKNT7h zTB$ftfplE+Sc4s&C^qEzBXGo14X${KM42BPSDx2ORN8Zmm*Wcz{&ghw@SIn*ynJ72 zys}=w3x|rIW~-d_+QeUe%br1-h2yFK{k!f?Z$cuR>DDGBqMw19Z5OR+@@6F4La@k_ zVvZFHk1Y^kwk%d`5j~U;2NqWy^e$w-6|-C9#N@e?-jSwC(#Dxdx-*FRVqn#vR%qwy zvqR4Y2+N#{KHIRDQd}5YH`Lqn}o!&${wqx&x zwNpt0YPbVowDweqC57(59va_Ol4g|OUvEd}cVKRdy*1>GH^%M#6PoVu(csjdP^s(n zs39pk(Xw@~8bBGnFcF%C<+|ioYo@FHG+w4YdI!FSJ=lqPMfTO$I%MJOf7xFpbtpXx zf!z0}VS7 zDcs5bXNV(_EOz{i+)SI#!n6;TCW}~1-zR)=m*2Gy{fvxdb~aXDhsyS0T3_wQw3;tx zymdc<*Cn!WJOE*xtO`qtJb?FvHk5Thj8@Wr;*@zDM0s)8%_8<7N~`Mu7RwG`ZPw&s zjF^I2YcsHb9rhLIooL_b}#g30S_(FrTw;RG(K$0*?hp3@^E8eWN_5HSRFN~UR{**=2Enyx-ATK&2M2;@1(gnd7Z?Y z+bDNw^`LxrgA-eWJq_CW*2a^YXLuUwv%~OHSenF+jMtpPMjYVH;_WHy4ws%%w51h2 z4T8QojS0{FP?BbJ@HA!+I)Fvc6oU=5ID@3S4c3sf!G?E7yz9_far`$xpn4_A7GsFLFAIg5GV0YPF%YXR+*WW@^ZrvzXN5*%}gb4rFtLhBS@D(wW~+KU-ca z$oH0OyxQcU?->ai@+iSzFH5-{{g5Y`>YCGuJj^0^mByt!PgqmndDQAM(%{4A(bw5E z8qzxrsW!i^cD;bf9j9Rza4odh$}agA@bYkEyDF^7Ctq~cMbor=+?7+QFkgJ3tlgur ze_nv2(RiPRB<#bUF(3K61z4t=`!zQALiFZKUlgLcbUn(3;zC?HW*uj7=eWU{N^-D{ z&rTS$uYLz<{%^R6`_rx85JLCUq$|RWapFa++jnNsh2EStSkjydr0K>*ylX8zBYnD1 z$KUbUVC=6f(tbyZzB|X_%{er%xr8pZoM$rm63plGSqv$F`KmPkUdW{TA21hQWU*d~ z3zt{~`~lyTJjDI}WlTEzGUMJ?fFmxWi`_*`u3g51zUUf@p;u5#LyK8d6yvB?Tt*l7 zu3%+0r4)%U#p;eUcBQRF@btaMqUlu}zrg$4?8bd$EaNJMIP!pr??WsAh>2QVLo9bo z8PC3ki)W8=7Dvl*^38+UUWZSgO2%Waw=L#2sZEH-kZ({sT zrfT3wWj9ex(;7(7h8$gt_HuzublJtIEmvz?R0lyjOEAxujhKAf*l0_xw~(FY_|zpk znQ;rp@^5z*@$F$QxrK*dpCac1Zc1|{0Qjzqj{DyH!n9+(RO)=U~uLr>)0$t6;_lUgS@pZ!>$d-YoZ5iAMTOJyhIR-=HsxjFFhm=*Plc|5**OA=f9^N&6lPKfQl{ z)zORx>EH9OO_1^@!b`tph>9D?Z2z`dtC4tu;kF6&>|khH1zXNxVm@ zq&}x&*P8y{;G@ys0gbS7ajkt@)YH(m6?nq;v0oMsqF+Ph22|?Ks&zr2l T|9UPO+H{Dvu-H6JV4VK}zuks9 From a6ca27f370df4c602defc3d607324aa31456b141 Mon Sep 17 00:00:00 2001 From: mjarduk Date: Tue, 30 Sep 2025 23:41:51 +0300 Subject: [PATCH 06/10] Fixed the nasty looking line feed thing that was on the power on screen --- .../li/cil/ocreloaded/minecraft/client/screen/CaseScreen.java | 2 +- .../src/main/resources/assets/ocreloaded/lang/en_us.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/CaseScreen.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/CaseScreen.java index 1e0c875..54d18fe 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/CaseScreen.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/client/screen/CaseScreen.java @@ -55,7 +55,7 @@ public void render(@Nonnull GuiGraphics guiGraphics, int mouseX, int mouseY, flo } this.renderTooltip(guiGraphics, mouseX, mouseY); if (this.powerButton.isHovered() && this.menu.getPower().get() == 0) { - guiGraphics.renderComponentTooltip(this.font, List.of(Component.translatable("gui.ocreloaded.case.power_on")), mouseX, mouseY); + guiGraphics.renderComponentTooltip(this.font, List.of(Component.translatable("gui.ocreloaded.case.power_on"), Component.translatable("gui.ocreloaded.case.power_on_line2")), mouseX, mouseY); } else if (this.powerButton.isHovered() && this.menu.getPower().get() == 1) { guiGraphics.renderComponentTooltip(this.font, List.of(Component.translatable("gui.ocreloaded.case.power_off")), mouseX, mouseY); } diff --git a/projects/Minecraft/src/main/resources/assets/ocreloaded/lang/en_us.json b/projects/Minecraft/src/main/resources/assets/ocreloaded/lang/en_us.json index 7951064..af6f963 100644 --- a/projects/Minecraft/src/main/resources/assets/ocreloaded/lang/en_us.json +++ b/projects/Minecraft/src/main/resources/assets/ocreloaded/lang/en_us.json @@ -9,7 +9,8 @@ "block.ocreloaded.screen3": "Screen (Tier 3)", "gui.ocreloaded.case": "Computer", "gui.ocreloaded.case.power_off": "Turn off", - "gui.ocreloaded.case.power_on": "Turn on\n§7Use an Analyzer to troubleshoot errors.§r", + "gui.ocreloaded.case.power_on": "Turn on", + "gui.ocreloaded.case.power_on_line2": "§7Use an Analyzer to troubleshoot errors.§r", "item.ocreloaded.alu": "Arithmetic Logic Unit (ALU)", "item.ocreloaded.arrow_keys": "Arrow Keys", "item.ocreloaded.button_group": "Button Group", From 8e76085020a7ef4763dd3d7307cf8cf40ae1bd9f Mon Sep 17 00:00:00 2001 From: Jason Gronn Date: Tue, 30 Sep 2025 19:20:59 -0400 Subject: [PATCH 07/10] Shade NeoForge files --- build.gradle.kts | 2 ++ buildSrc/src/main/kotlin/oc-common.gradle.kts | 5 +++- .../common/FabricPlatformMenuHelper.java | 1 + .../minecraft/common/menu/ScreenMenu.java | 7 +++-- .../common/network/packets/PowerPacket.java | 4 ++- .../common/network/packets/ScreenPacket.java | 7 +++-- .../common/network/packets/SoundPacket.java | 15 ++++++---- .../server/machine/lua/LuaCFactory.java | 2 +- projects/NeoForge/build.gradle.kts | 28 +++++++++++++++++++ 9 files changed, 56 insertions(+), 15 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 46abfe5..603090e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,7 @@ plugins { id("com.matyrobbrt.mc.registrationutils") version "1.21.0-0.2.2" + id("oc-common") + id("com.gradleup.shadow") } registrationUtils { diff --git a/buildSrc/src/main/kotlin/oc-common.gradle.kts b/buildSrc/src/main/kotlin/oc-common.gradle.kts index 465d8a9..94e7075 100644 --- a/buildSrc/src/main/kotlin/oc-common.gradle.kts +++ b/buildSrc/src/main/kotlin/oc-common.gradle.kts @@ -16,4 +16,7 @@ repositories { maven("https://maven.blamejared.com") { name = "BlameJared's maven" } -} \ No newline at end of file +} + +val shade by configurations.creating +configurations["implementation"].extendsFrom(shade) \ No newline at end of file diff --git a/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/FabricPlatformMenuHelper.java b/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/FabricPlatformMenuHelper.java index f6372d1..235f139 100644 --- a/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/FabricPlatformMenuHelper.java +++ b/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/FabricPlatformMenuHelper.java @@ -24,6 +24,7 @@ public Component getDisplayName() { } @Override + @SuppressWarnings("null") // TODO: Figure this out later public AbstractContainerMenu createMenu(int containerId, Inventory playerInventory, Player player) { return menuProvider.createMenu(containerId, playerInventory, player); } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ScreenMenu.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ScreenMenu.java index d700207..08f1776 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ScreenMenu.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ScreenMenu.java @@ -1,5 +1,7 @@ package li.cil.ocreloaded.minecraft.common.menu; +import javax.annotation.Nonnull; + import commonnetwork.api.Dispatcher; import li.cil.ocreloaded.minecraft.common.block.ScreenBlock; import li.cil.ocreloaded.minecraft.common.entity.ScreenBlockEntity; @@ -10,7 +12,6 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.NotNull; public class ScreenMenu extends AbstractContainerMenu { @@ -25,12 +26,12 @@ public ScreenMenu(int id, Inventory inventory, FriendlyByteBuf data) { } @Override - public @NotNull ItemStack quickMoveStack(@NotNull Player var1, int var2) { + public @Nonnull ItemStack quickMoveStack(@Nonnull Player var1, int var2) { return ItemStack.EMPTY; } @Override - public boolean stillValid(@NotNull Player var1) { + public boolean stillValid(@Nonnull Player var1) { return inventory.stillValid(var1); } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/PowerPacket.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/PowerPacket.java index 7398829..1cd583c 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/PowerPacket.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/PowerPacket.java @@ -41,7 +41,9 @@ private static void handleClient(PacketContext ctx) { PowerPacket packet = ctx.message(); BlockPos position = packet.pos; - Level level = Minecraft.getInstance().player.level(); + Player player = Minecraft.getInstance().player; + if (player == null) return; + Level level = player.level(); if (!level.isLoaded(position)) return; if (level.getBlockEntity(position) instanceof CaseBlockEntity entity) entity.setPowered(packet.powerState); diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/ScreenPacket.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/ScreenPacket.java index e6d9efc..49c998a 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/ScreenPacket.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/ScreenPacket.java @@ -32,9 +32,10 @@ public static CustomPacketPayload.Type type() { public static void handle(PacketContext ctx) { ScreenPacket packet = ctx.message(); - Player player; - if (ctx.side().equals(Side.CLIENT)) player = Minecraft.getInstance().player; - else player = ctx.sender(); + Player player = ctx.side().equals(Side.CLIENT) ? + Minecraft.getInstance().player : + ctx.sender(); + if (player == null) return; Level level = player.level(); diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/SoundPacket.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/SoundPacket.java index 766018c..172e48c 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/SoundPacket.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/SoundPacket.java @@ -1,5 +1,7 @@ package li.cil.ocreloaded.minecraft.common.network.packets; +import java.nio.ByteBuffer; + import commonnetwork.networking.data.PacketContext; import commonnetwork.networking.data.Side; import io.netty.buffer.ByteBuf; @@ -15,10 +17,9 @@ import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; -import java.nio.ByteBuffer; - public record SoundPacket(BlockPos pos, int channel, byte[] deltaBuffer) { public static final ResourceLocation CHANNEL = ResourceLocation.fromNamespaceAndPath(OCReloadedCommon.MOD_ID, "sound_packet"); public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -36,11 +37,13 @@ public static CustomPacketPayload.Type type() { } public static void handle(PacketContext ctx) { - if (!ctx.side().equals(Side.CLIENT)) - return; - SoundPacket packet = ctx.message(); + if (!ctx.side().equals(Side.CLIENT)) return; - Level level = Minecraft.getInstance().player.level(); + Player player = Minecraft.getInstance().player; + if (player == null) return; + + SoundPacket packet = ctx.message(); + Level level = player.level(); if (!level.isLoaded(packet.pos)) return; if (packet.channel != BEEP_CHANNEL) { diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaCFactory.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaCFactory.java index d7aefcf..53b5f01 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaCFactory.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/server/machine/lua/LuaCFactory.java @@ -9,7 +9,6 @@ import java.util.List; import java.util.Optional; -import org.apache.commons.logging.Log; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,6 +64,7 @@ public boolean isAvailable(String architecture) { public Optional createFactory(String architecture) { if (!isAvailable(architecture)) return Optional.empty(); if (!ensureResourceCopied(architecture)) return Optional.empty(); + LoggerFactory.getLogger(getClass()).info("Loading arch {}", architecture); switch (architecture) { case "lua52": NativeSupport.getInstance().setLoader(() -> System.load(getTempName(architecture))); diff --git a/projects/NeoForge/build.gradle.kts b/projects/NeoForge/build.gradle.kts index 331af1c..6f595e2 100644 --- a/projects/NeoForge/build.gradle.kts +++ b/projects/NeoForge/build.gradle.kts @@ -1,6 +1,10 @@ +import com.matyrobbrt.registrationutils.gradle.RegExtension; +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + plugins { id("oc-neo-based") id("oc-loader") + id("com.matyrobbrt.mc.registrationutils") version "1.21.0-0.2.2" } neoForge { @@ -21,6 +25,10 @@ neoForge { } } +repositories { + mavenCentral() +} + dependencies { implementation(project(":Minecraft")) @@ -30,10 +38,30 @@ dependencies { jarJar(files("../../libs/OpenComputers-JNLua.jar", "../../libs/OpenComputers-LuaJ.jar")) implementation("mysticdrew:common-networking-neoforge:1.0.20-1.21.1") + + shade(libs.typesafeConfig) + shade(files("../../libs/OpenComputers-JNLua.jar", "../../libs/OpenComputers-LuaJ.jar")) } sourceSets.main { resources { srcDir(project(":Minecraft").sourceSets.main.get().resources.srcDirs) } +} + +tasks.withType { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + + configurations = listOf(project.configurations.getByName("shade")) + + from(sourceSets.main.get().output) + from(project(":Core").sourceSets.main.get().output) + from(project(":Minecraft").sourceSets.main.get().output) + + relocate("com.typesafe.config", "li.cil.ocreloaded.lib.config") + archiveClassifier.set("all") +} + +afterEvaluate { + extensions.getByType().configureJarTask(tasks.shadowJar.get()) } \ No newline at end of file From e5a466da76f3f3874b16d8ed99fa657ea232f440 Mon Sep 17 00:00:00 2001 From: Jason Gronn Date: Tue, 30 Sep 2025 23:07:13 -0400 Subject: [PATCH 08/10] Change how shading works --- .../ocreloaded/gradle/ShadingAttribute.java | 11 ++ buildSrc/src/main/kotlin/oc-base.gradle.kts | 68 +++++++++ buildSrc/src/main/kotlin/oc-common.gradle.kts | 8 +- buildSrc/src/main/kotlin/oc-loader.gradle.kts | 18 +++ projects/Core/build.gradle.kts | 6 +- projects/Fabric/build.gradle.kts | 26 +--- .../networking/FabricNetworkHandler.java | 142 ++++++++++++++++++ projects/Minecraft/build.gradle.kts | 4 +- projects/NeoForge/build.gradle.kts | 26 +--- .../neoforge/common/OCReloaded.java | 3 +- 10 files changed, 260 insertions(+), 52 deletions(-) create mode 100644 buildSrc/src/main/java/li/cil/ocreloaded/gradle/ShadingAttribute.java create mode 100644 buildSrc/src/main/kotlin/oc-base.gradle.kts create mode 100644 projects/Fabric/src/main/java/commonnetwork/networking/FabricNetworkHandler.java diff --git a/buildSrc/src/main/java/li/cil/ocreloaded/gradle/ShadingAttribute.java b/buildSrc/src/main/java/li/cil/ocreloaded/gradle/ShadingAttribute.java new file mode 100644 index 0000000..06f2d9c --- /dev/null +++ b/buildSrc/src/main/java/li/cil/ocreloaded/gradle/ShadingAttribute.java @@ -0,0 +1,11 @@ +package li.cil.ocreloaded.gradle; + +import org.gradle.api.Named; +import org.gradle.api.attributes.Attribute; + +public interface ShadingAttribute extends Named { + Attribute SHADING_ATTRIBUTE = Attribute.of(ShadingAttribute.class); + + String SHADED = "shaded"; + String STANDARD = "standard"; +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/oc-base.gradle.kts b/buildSrc/src/main/kotlin/oc-base.gradle.kts new file mode 100644 index 0000000..b852f44 --- /dev/null +++ b/buildSrc/src/main/kotlin/oc-base.gradle.kts @@ -0,0 +1,68 @@ +import li.cil.ocreloaded.gradle.ShadingAttribute; +import org.gradle.api.attributes.Usage; + +plugins { + id("java-library") + id("com.gradleup.shadow") +} + +val shadedUsage = objects.named(ShadingAttribute::class.java, ShadingAttribute.SHADED) +val standardUsage = objects.named(ShadingAttribute::class.java, ShadingAttribute.STANDARD) + +val shade by configurations.creating { + isCanBeResolved = true + isCanBeConsumed = false + + attributes { + attribute(ShadingAttribute.SHADING_ATTRIBUTE, shadedUsage) + attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage::class.java, Usage.JAVA_RUNTIME)) + } +} + +val shadeRuntimeElements by configurations.creating { + isCanBeConsumed = true + isCanBeResolved = false + extendsFrom(shade) + + attributes { + attribute(ShadingAttribute.SHADING_ATTRIBUTE, shadedUsage) + attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage::class.java, Usage.JAVA_RUNTIME)) + } +} + +configurations.named("implementation") { extendsFrom(shade) } + +configurations.named("runtimeElements") { + attributes { + attribute(ShadingAttribute.SHADING_ATTRIBUTE, standardUsage) + } +} + +val shadeApi by configurations.creating { + isCanBeResolved = true + isCanBeConsumed = false + + attributes { + attribute(ShadingAttribute.SHADING_ATTRIBUTE, shadedUsage) + attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage::class.java, Usage.JAVA_API)) + } +} + +configurations.named("api") { extendsFrom(shadeApi) } + +val shadeApiElements by configurations.creating { + isCanBeConsumed = true + isCanBeResolved = false + extendsFrom(shadeApi) + + attributes { + attribute(ShadingAttribute.SHADING_ATTRIBUTE, shadedUsage) + attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage::class.java, Usage.JAVA_API)) + } +} + +configurations.named("apiElements") { + attributes { + attribute(ShadingAttribute.SHADING_ATTRIBUTE, standardUsage) + } +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/oc-common.gradle.kts b/buildSrc/src/main/kotlin/oc-common.gradle.kts index 94e7075..922ad57 100644 --- a/buildSrc/src/main/kotlin/oc-common.gradle.kts +++ b/buildSrc/src/main/kotlin/oc-common.gradle.kts @@ -1,6 +1,5 @@ plugins { - id("java-library") - id("com.gradleup.shadow") + id("oc-base") } configurations { @@ -16,7 +15,4 @@ repositories { maven("https://maven.blamejared.com") { name = "BlameJared's maven" } -} - -val shade by configurations.creating -configurations["implementation"].extendsFrom(shade) \ No newline at end of file +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/oc-loader.gradle.kts b/buildSrc/src/main/kotlin/oc-loader.gradle.kts index 737d992..6887605 100644 --- a/buildSrc/src/main/kotlin/oc-loader.gradle.kts +++ b/buildSrc/src/main/kotlin/oc-loader.gradle.kts @@ -1,3 +1,5 @@ +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + plugins { id("oc-common") } @@ -25,4 +27,20 @@ tasks.named("processResources") { from(rootProject.file("libs/lua52")) { into("data/ocreloaded/libs/lua52") } +} + +tasks.withType { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + + configurations = listOf( + project.configurations.getByName("shade"), + project.configurations.getByName("shadeApi") + ) + + from(sourceSets.main.get().output) + from(project(":Core").sourceSets.main.get().output) + from(project(":Minecraft").sourceSets.main.get().output) + + relocate("com.typesafe.config", "li.cil.ocreloaded.lib.config") + archiveClassifier.set("all") } \ No newline at end of file diff --git a/projects/Core/build.gradle.kts b/projects/Core/build.gradle.kts index b244ce4..b96f01e 100644 --- a/projects/Core/build.gradle.kts +++ b/projects/Core/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("java-library") + id("oc-base") } repositories { @@ -9,6 +9,6 @@ repositories { dependencies { compileOnly(libs.slf4j) - api(libs.typesafeConfig) - api(files("../../libs/OpenComputers-JNLua.jar", "../../libs/OpenComputers-LuaJ.jar")) + shadeApi(libs.typesafeConfig) + shadeApi(files("../../libs/OpenComputers-JNLua.jar", "../../libs/OpenComputers-LuaJ.jar")) } \ No newline at end of file diff --git a/projects/Fabric/build.gradle.kts b/projects/Fabric/build.gradle.kts index 2a35734..5f2d1c1 100644 --- a/projects/Fabric/build.gradle.kts +++ b/projects/Fabric/build.gradle.kts @@ -1,5 +1,6 @@ -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar -import net.fabricmc.loom.task.RemapJarTask +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar; +import net.fabricmc.loom.task.RemapJarTask; +import com.matyrobbrt.registrationutils.gradle.RegExtension; evaluationDependsOn(":Minecraft") @@ -18,8 +19,7 @@ dependencies { modImplementation("net.fabricmc.fabric-api:fabric-api:${libs.versions.fabricApi.get()}") modImplementation("mysticdrew:common-networking-fabric:1.0.20-1.21.1") - implementation(project(":Core")) - implementation(project(":Minecraft")) + shadeApi(project(":Minecraft")) } sourceSets.main { @@ -28,20 +28,6 @@ sourceSets.main { } } -tasks.withType { - duplicatesStrategy = DuplicatesStrategy.EXCLUDE - from(project(":Core").sourceSets.main.get().output) - from(project(":Minecraft").sourceSets.main.get().output) - - dependencies { - include(dependency(libs.typesafeConfig)) - include(dependency(files("../../libs/OpenComputers-JNLua.jar", "../../libs/OpenComputers-LuaJ.jar"))) - } - - relocate("com.typesafe.config", "li.cil.ocreloaded.lib.config") - archiveClassifier.set("all") -} - tasks.withType { inputFile.set(tasks.shadowJar.get().archiveFile) archiveClassifier.set("") @@ -49,4 +35,8 @@ tasks.withType { tasks.build { dependsOn(tasks.remapJar) +} + +afterEvaluate { + extensions.getByType().configureJarTask(tasks.shadowJar.get()) } \ No newline at end of file diff --git a/projects/Fabric/src/main/java/commonnetwork/networking/FabricNetworkHandler.java b/projects/Fabric/src/main/java/commonnetwork/networking/FabricNetworkHandler.java new file mode 100644 index 0000000..c52ab38 --- /dev/null +++ b/projects/Fabric/src/main/java/commonnetwork/networking/FabricNetworkHandler.java @@ -0,0 +1,142 @@ +package commonnetwork.networking; + +import commonnetwork.Constants; +import commonnetwork.networking.data.CommonPacketWrapper; +import commonnetwork.networking.data.PacketContainer; +import commonnetwork.networking.data.PacketContext; +import commonnetwork.networking.data.Side; +import commonnetwork.networking.exceptions.RegistrationException; +import net.fabricmc.fabric.api.client.networking.v1.ClientConfigurationNetworking; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; +import net.fabricmc.fabric.api.networking.v1.ServerConfigurationNetworking; +import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; +import net.minecraft.network.Connection; +import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket; +import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket; +import net.minecraft.server.level.ServerPlayer; + +// https://github.com/mysticdrew/common-networking/blob/1.21.1/LICENSE +public class FabricNetworkHandler extends PacketRegistrationHandler +{ + + public FabricNetworkHandler(Side side) + { + super(side); + } + + @SuppressWarnings({ "deprecation" }) + protected void registerPacket(PacketContainer container) + { + try + { + if (container.packetType() == PacketContainer.PacketType.PLAY) + { + PayloadTypeRegistry.playC2S().register(container.getType(), container.getCodec()); + PayloadTypeRegistry.playS2C().register(container.getType(), container.getCodec()); + } + else + { + PayloadTypeRegistry.configurationC2S().register(container.getType(), container.getCodec()); + PayloadTypeRegistry.configurationS2C().register(container.getType(), container.getCodec()); + } + } + catch (IllegalArgumentException e) + { + // do nothing + } + + if (Side.CLIENT.equals(this.side)) + { + Constants.LOG.debug("Registering packet {} : {} on the: {}", container.type().id(), container.classType(), Side.CLIENT); + + if (container.packetType() == PacketContainer.PacketType.PLAY) + { + // play packets + ClientPlayNetworking.registerGlobalReceiver(container.getType(), + (ClientPlayNetworking.PlayPayloadHandler>) (payload, context) -> context.client().execute(() -> + container.handler().accept( + new PacketContext<>(payload.packet(), Side.CLIENT)))); + } + else + { + // configuration packets + ClientConfigurationNetworking.registerGlobalReceiver(container.getType(), + (ClientConfigurationNetworking.ConfigurationPayloadHandler>) (payload, context) -> context.client().execute(() -> + container.handler().accept( + new PacketContext<>(payload.packet(), Side.CLIENT)))); + } + } + + Constants.LOG.debug("Registering packet {} : {} on the: {}", container.type().id(), container.classType(), Side.SERVER); + if (container.packetType() == PacketContainer.PacketType.PLAY) + { + // play packets + ServerPlayNetworking.registerGlobalReceiver(container.getType(), + (ServerPlayNetworking.PlayPayloadHandler>) (payload, context) -> context.player().server.execute(() -> + container.handler().accept( + new PacketContext<>(context.player(), payload.packet(), Side.SERVER)))); + } + else + { + // configuration packets + ServerConfigurationNetworking.registerGlobalReceiver(container.getType(), + (ServerConfigurationNetworking.ConfigurationPacketHandler>) (payload, context) -> context.server().execute(() -> + container.handler().accept( + new PacketContext<>(null, payload.packet(), Side.SERVER)))); + } + + } + + @SuppressWarnings({ "deprecation", "unchecked" }) + @Override + public void send(T packet, Connection connection) + { + PacketContainer container = (PacketContainer) PACKET_MAP.get(packet.getClass()); + if (container != null) + { + if (this.side == Side.SERVER) + { + connection.send(new ClientboundCustomPayloadPacket(new CommonPacketWrapper<>(container, packet))); + } + else + { + connection.send(new ServerboundCustomPayloadPacket(new CommonPacketWrapper<>(container, packet))); + } + } + } + + @SuppressWarnings({ "unchecked", "deprecation" }) + public void sendToServer(T packet, boolean ignoreCheck) + { + PacketContainer container = (PacketContainer) PACKET_MAP.get(packet.getClass()); + if (container != null) + { + if (ignoreCheck || ClientPlayNetworking.canSend(container.type().id())) + { + ClientPlayNetworking.send(new CommonPacketWrapper<>(container, packet)); + } + } + else + { + throw new RegistrationException(packet.getClass() + "{} packet not registered on the client, packets need to be registered on both sides!"); + } + } + + @SuppressWarnings({ "unchecked", "deprecation" }) + public void sendToClient(T packet, ServerPlayer player, boolean ignoreCheck) + { + PacketContainer container = (PacketContainer) PACKET_MAP.get(packet.getClass()); + if (container != null) + { + if (ignoreCheck || ServerPlayNetworking.canSend(player, container.type().id())) + { + ServerPlayNetworking.send(player, new CommonPacketWrapper<>(container, packet)); + } + } + else + { + throw new RegistrationException(packet.getClass() + "{} packet not registered on the server, packets need to be registered on both sides!"); + } + } +} \ No newline at end of file diff --git a/projects/Minecraft/build.gradle.kts b/projects/Minecraft/build.gradle.kts index 17b47c1..578b667 100644 --- a/projects/Minecraft/build.gradle.kts +++ b/projects/Minecraft/build.gradle.kts @@ -7,8 +7,8 @@ neoForge { } dependencies { - api(project(":Core")) - implementation("mysticdrew:common-networking-common:1.0.20-1.21.1") + shadeApi(project(":Core")) + api("mysticdrew:common-networking-common:1.0.20-1.21.1") } tasks.register("copyResources") { diff --git a/projects/NeoForge/build.gradle.kts b/projects/NeoForge/build.gradle.kts index 6f595e2..65fb50d 100644 --- a/projects/NeoForge/build.gradle.kts +++ b/projects/NeoForge/build.gradle.kts @@ -1,5 +1,5 @@ import com.matyrobbrt.registrationutils.gradle.RegExtension; -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar; plugins { id("oc-neo-based") @@ -30,17 +30,12 @@ repositories { } dependencies { - implementation(project(":Minecraft")) + shadeApi(project(":Minecraft")) - "additionalRuntimeClasspath"(libs.typesafeConfig) - "additionalRuntimeClasspath"(files("../../libs/OpenComputers-JNLua.jar", "../../libs/OpenComputers-LuaJ.jar")) - jarJar(libs.typesafeConfig) - jarJar(files("../../libs/OpenComputers-JNLua.jar", "../../libs/OpenComputers-LuaJ.jar")) + "additionalRuntimeClasspath"(files(project.configurations.getByName("shade"))) + "additionalRuntimeClasspath"(files(project.configurations.getByName("shadeApi"))) implementation("mysticdrew:common-networking-neoforge:1.0.20-1.21.1") - - shade(libs.typesafeConfig) - shade(files("../../libs/OpenComputers-JNLua.jar", "../../libs/OpenComputers-LuaJ.jar")) } sourceSets.main { @@ -49,19 +44,6 @@ sourceSets.main { } } -tasks.withType { - duplicatesStrategy = DuplicatesStrategy.EXCLUDE - - configurations = listOf(project.configurations.getByName("shade")) - - from(sourceSets.main.get().output) - from(project(":Core").sourceSets.main.get().output) - from(project(":Minecraft").sourceSets.main.get().output) - - relocate("com.typesafe.config", "li.cil.ocreloaded.lib.config") - archiveClassifier.set("all") -} - afterEvaluate { extensions.getByType().configureJarTask(tasks.shadowJar.get()) } \ No newline at end of file diff --git a/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java index 2cf6b99..aae81fe 100644 --- a/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java +++ b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java @@ -14,7 +14,7 @@ public class OCReloaded { public static final String MOD_ID = "ocreloaded"; - public OCReloaded(IEventBus bus) { + public OCReloaded(IEventBus bus) throws ClassNotFoundException { CommonRegistered.initialize(); } @@ -22,4 +22,5 @@ public OCReloaded(IEventBus bus) { public static void serverStarted(ServerStartedEvent event) { CommonServerHooks.setup(event.getServer()); } + } \ No newline at end of file From c91ae23b38aa9d7ef18bd9581e90b19a1ec9a2ed Mon Sep 17 00:00:00 2001 From: Jason Gronn Date: Tue, 30 Sep 2025 23:57:38 -0400 Subject: [PATCH 09/10] Remove accidentally added file --- .../networking/FabricNetworkHandler.java | 142 ------------------ 1 file changed, 142 deletions(-) delete mode 100644 projects/Fabric/src/main/java/commonnetwork/networking/FabricNetworkHandler.java diff --git a/projects/Fabric/src/main/java/commonnetwork/networking/FabricNetworkHandler.java b/projects/Fabric/src/main/java/commonnetwork/networking/FabricNetworkHandler.java deleted file mode 100644 index c52ab38..0000000 --- a/projects/Fabric/src/main/java/commonnetwork/networking/FabricNetworkHandler.java +++ /dev/null @@ -1,142 +0,0 @@ -package commonnetwork.networking; - -import commonnetwork.Constants; -import commonnetwork.networking.data.CommonPacketWrapper; -import commonnetwork.networking.data.PacketContainer; -import commonnetwork.networking.data.PacketContext; -import commonnetwork.networking.data.Side; -import commonnetwork.networking.exceptions.RegistrationException; -import net.fabricmc.fabric.api.client.networking.v1.ClientConfigurationNetworking; -import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; -import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; -import net.fabricmc.fabric.api.networking.v1.ServerConfigurationNetworking; -import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; -import net.minecraft.network.Connection; -import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket; -import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket; -import net.minecraft.server.level.ServerPlayer; - -// https://github.com/mysticdrew/common-networking/blob/1.21.1/LICENSE -public class FabricNetworkHandler extends PacketRegistrationHandler -{ - - public FabricNetworkHandler(Side side) - { - super(side); - } - - @SuppressWarnings({ "deprecation" }) - protected void registerPacket(PacketContainer container) - { - try - { - if (container.packetType() == PacketContainer.PacketType.PLAY) - { - PayloadTypeRegistry.playC2S().register(container.getType(), container.getCodec()); - PayloadTypeRegistry.playS2C().register(container.getType(), container.getCodec()); - } - else - { - PayloadTypeRegistry.configurationC2S().register(container.getType(), container.getCodec()); - PayloadTypeRegistry.configurationS2C().register(container.getType(), container.getCodec()); - } - } - catch (IllegalArgumentException e) - { - // do nothing - } - - if (Side.CLIENT.equals(this.side)) - { - Constants.LOG.debug("Registering packet {} : {} on the: {}", container.type().id(), container.classType(), Side.CLIENT); - - if (container.packetType() == PacketContainer.PacketType.PLAY) - { - // play packets - ClientPlayNetworking.registerGlobalReceiver(container.getType(), - (ClientPlayNetworking.PlayPayloadHandler>) (payload, context) -> context.client().execute(() -> - container.handler().accept( - new PacketContext<>(payload.packet(), Side.CLIENT)))); - } - else - { - // configuration packets - ClientConfigurationNetworking.registerGlobalReceiver(container.getType(), - (ClientConfigurationNetworking.ConfigurationPayloadHandler>) (payload, context) -> context.client().execute(() -> - container.handler().accept( - new PacketContext<>(payload.packet(), Side.CLIENT)))); - } - } - - Constants.LOG.debug("Registering packet {} : {} on the: {}", container.type().id(), container.classType(), Side.SERVER); - if (container.packetType() == PacketContainer.PacketType.PLAY) - { - // play packets - ServerPlayNetworking.registerGlobalReceiver(container.getType(), - (ServerPlayNetworking.PlayPayloadHandler>) (payload, context) -> context.player().server.execute(() -> - container.handler().accept( - new PacketContext<>(context.player(), payload.packet(), Side.SERVER)))); - } - else - { - // configuration packets - ServerConfigurationNetworking.registerGlobalReceiver(container.getType(), - (ServerConfigurationNetworking.ConfigurationPacketHandler>) (payload, context) -> context.server().execute(() -> - container.handler().accept( - new PacketContext<>(null, payload.packet(), Side.SERVER)))); - } - - } - - @SuppressWarnings({ "deprecation", "unchecked" }) - @Override - public void send(T packet, Connection connection) - { - PacketContainer container = (PacketContainer) PACKET_MAP.get(packet.getClass()); - if (container != null) - { - if (this.side == Side.SERVER) - { - connection.send(new ClientboundCustomPayloadPacket(new CommonPacketWrapper<>(container, packet))); - } - else - { - connection.send(new ServerboundCustomPayloadPacket(new CommonPacketWrapper<>(container, packet))); - } - } - } - - @SuppressWarnings({ "unchecked", "deprecation" }) - public void sendToServer(T packet, boolean ignoreCheck) - { - PacketContainer container = (PacketContainer) PACKET_MAP.get(packet.getClass()); - if (container != null) - { - if (ignoreCheck || ClientPlayNetworking.canSend(container.type().id())) - { - ClientPlayNetworking.send(new CommonPacketWrapper<>(container, packet)); - } - } - else - { - throw new RegistrationException(packet.getClass() + "{} packet not registered on the client, packets need to be registered on both sides!"); - } - } - - @SuppressWarnings({ "unchecked", "deprecation" }) - public void sendToClient(T packet, ServerPlayer player, boolean ignoreCheck) - { - PacketContainer container = (PacketContainer) PACKET_MAP.get(packet.getClass()); - if (container != null) - { - if (ignoreCheck || ServerPlayNetworking.canSend(player, container.type().id())) - { - ServerPlayNetworking.send(player, new CommonPacketWrapper<>(container, packet)); - } - } - else - { - throw new RegistrationException(packet.getClass() + "{} packet not registered on the server, packets need to be registered on both sides!"); - } - } -} \ No newline at end of file From 3e37dc23924765b29b05900407d5694fe7404363 Mon Sep 17 00:00:00 2001 From: Jason Gronn Date: Wed, 1 Oct 2025 01:11:19 -0400 Subject: [PATCH 10/10] Remove dependency on network mod --- projects/Fabric/build.gradle.kts | 1 - .../networking/FabricNetworkHandler.java | 142 ------------------ .../fabric/common/CustomDataPacket.java | 24 +++ .../common/FabricPlatformNetworkHelper.java | 119 +++++++++++++++ ...raft.common.network.IPlatformNetworkHelper | 1 + projects/Minecraft/build.gradle.kts | 1 - .../common/entity/CaseBlockEntity.java | 6 +- .../common/entity/ScreenBlockEntity.java | 7 +- .../minecraft/common/menu/CaseMenu.java | 19 ++- .../minecraft/common/menu/ScreenMenu.java | 16 +- .../network/IPlatformNetworkHelper.java | 47 ++++++ .../minecraft/common/network/NetworkUtil.java | 16 +- .../common/network/packets/PowerPacket.java | 13 +- .../common/network/packets/ScreenPacket.java | 14 +- .../common/network/packets/SoundPacket.java | 6 +- projects/NeoForge/build.gradle.kts | 5 +- .../neoforge/common/CustomDataPacket.java | 24 +++ .../common/NeoPlatformNetworkHelper.java | 142 ++++++++++++++++++ .../neoforge/common/OCReloaded.java | 6 + ...raft.common.network.IPlatformNetworkHelper | 1 + 20 files changed, 421 insertions(+), 189 deletions(-) delete mode 100644 projects/Fabric/src/main/java/commonnetwork/networking/FabricNetworkHandler.java create mode 100644 projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/CustomDataPacket.java create mode 100644 projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/FabricPlatformNetworkHelper.java create mode 100644 projects/Fabric/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper create mode 100644 projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/IPlatformNetworkHelper.java create mode 100644 projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/CustomDataPacket.java create mode 100644 projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/NeoPlatformNetworkHelper.java create mode 100644 projects/NeoForge/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper diff --git a/projects/Fabric/build.gradle.kts b/projects/Fabric/build.gradle.kts index 5f2d1c1..5d8fcdc 100644 --- a/projects/Fabric/build.gradle.kts +++ b/projects/Fabric/build.gradle.kts @@ -17,7 +17,6 @@ dependencies { }) modImplementation("net.fabricmc:fabric-loader:${libs.versions.fabricLoader.get()}") modImplementation("net.fabricmc.fabric-api:fabric-api:${libs.versions.fabricApi.get()}") - modImplementation("mysticdrew:common-networking-fabric:1.0.20-1.21.1") shadeApi(project(":Minecraft")) } diff --git a/projects/Fabric/src/main/java/commonnetwork/networking/FabricNetworkHandler.java b/projects/Fabric/src/main/java/commonnetwork/networking/FabricNetworkHandler.java deleted file mode 100644 index c52ab38..0000000 --- a/projects/Fabric/src/main/java/commonnetwork/networking/FabricNetworkHandler.java +++ /dev/null @@ -1,142 +0,0 @@ -package commonnetwork.networking; - -import commonnetwork.Constants; -import commonnetwork.networking.data.CommonPacketWrapper; -import commonnetwork.networking.data.PacketContainer; -import commonnetwork.networking.data.PacketContext; -import commonnetwork.networking.data.Side; -import commonnetwork.networking.exceptions.RegistrationException; -import net.fabricmc.fabric.api.client.networking.v1.ClientConfigurationNetworking; -import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; -import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; -import net.fabricmc.fabric.api.networking.v1.ServerConfigurationNetworking; -import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; -import net.minecraft.network.Connection; -import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket; -import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket; -import net.minecraft.server.level.ServerPlayer; - -// https://github.com/mysticdrew/common-networking/blob/1.21.1/LICENSE -public class FabricNetworkHandler extends PacketRegistrationHandler -{ - - public FabricNetworkHandler(Side side) - { - super(side); - } - - @SuppressWarnings({ "deprecation" }) - protected void registerPacket(PacketContainer container) - { - try - { - if (container.packetType() == PacketContainer.PacketType.PLAY) - { - PayloadTypeRegistry.playC2S().register(container.getType(), container.getCodec()); - PayloadTypeRegistry.playS2C().register(container.getType(), container.getCodec()); - } - else - { - PayloadTypeRegistry.configurationC2S().register(container.getType(), container.getCodec()); - PayloadTypeRegistry.configurationS2C().register(container.getType(), container.getCodec()); - } - } - catch (IllegalArgumentException e) - { - // do nothing - } - - if (Side.CLIENT.equals(this.side)) - { - Constants.LOG.debug("Registering packet {} : {} on the: {}", container.type().id(), container.classType(), Side.CLIENT); - - if (container.packetType() == PacketContainer.PacketType.PLAY) - { - // play packets - ClientPlayNetworking.registerGlobalReceiver(container.getType(), - (ClientPlayNetworking.PlayPayloadHandler>) (payload, context) -> context.client().execute(() -> - container.handler().accept( - new PacketContext<>(payload.packet(), Side.CLIENT)))); - } - else - { - // configuration packets - ClientConfigurationNetworking.registerGlobalReceiver(container.getType(), - (ClientConfigurationNetworking.ConfigurationPayloadHandler>) (payload, context) -> context.client().execute(() -> - container.handler().accept( - new PacketContext<>(payload.packet(), Side.CLIENT)))); - } - } - - Constants.LOG.debug("Registering packet {} : {} on the: {}", container.type().id(), container.classType(), Side.SERVER); - if (container.packetType() == PacketContainer.PacketType.PLAY) - { - // play packets - ServerPlayNetworking.registerGlobalReceiver(container.getType(), - (ServerPlayNetworking.PlayPayloadHandler>) (payload, context) -> context.player().server.execute(() -> - container.handler().accept( - new PacketContext<>(context.player(), payload.packet(), Side.SERVER)))); - } - else - { - // configuration packets - ServerConfigurationNetworking.registerGlobalReceiver(container.getType(), - (ServerConfigurationNetworking.ConfigurationPacketHandler>) (payload, context) -> context.server().execute(() -> - container.handler().accept( - new PacketContext<>(null, payload.packet(), Side.SERVER)))); - } - - } - - @SuppressWarnings({ "deprecation", "unchecked" }) - @Override - public void send(T packet, Connection connection) - { - PacketContainer container = (PacketContainer) PACKET_MAP.get(packet.getClass()); - if (container != null) - { - if (this.side == Side.SERVER) - { - connection.send(new ClientboundCustomPayloadPacket(new CommonPacketWrapper<>(container, packet))); - } - else - { - connection.send(new ServerboundCustomPayloadPacket(new CommonPacketWrapper<>(container, packet))); - } - } - } - - @SuppressWarnings({ "unchecked", "deprecation" }) - public void sendToServer(T packet, boolean ignoreCheck) - { - PacketContainer container = (PacketContainer) PACKET_MAP.get(packet.getClass()); - if (container != null) - { - if (ignoreCheck || ClientPlayNetworking.canSend(container.type().id())) - { - ClientPlayNetworking.send(new CommonPacketWrapper<>(container, packet)); - } - } - else - { - throw new RegistrationException(packet.getClass() + "{} packet not registered on the client, packets need to be registered on both sides!"); - } - } - - @SuppressWarnings({ "unchecked", "deprecation" }) - public void sendToClient(T packet, ServerPlayer player, boolean ignoreCheck) - { - PacketContainer container = (PacketContainer) PACKET_MAP.get(packet.getClass()); - if (container != null) - { - if (ignoreCheck || ServerPlayNetworking.canSend(player, container.type().id())) - { - ServerPlayNetworking.send(player, new CommonPacketWrapper<>(container, packet)); - } - } - else - { - throw new RegistrationException(packet.getClass() + "{} packet not registered on the server, packets need to be registered on both sides!"); - } - } -} \ No newline at end of file diff --git a/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/CustomDataPacket.java b/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/CustomDataPacket.java new file mode 100644 index 0000000..c1a9b1d --- /dev/null +++ b/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/CustomDataPacket.java @@ -0,0 +1,24 @@ +package li.cil.ocreloaded.fabric.common; + +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; + +public class CustomDataPacket implements CustomPacketPayload { + + private Type type; + private T data; + + public CustomDataPacket(Type type, T data) { + this.type = type; + this.data = data; + } + + @Override + public Type type() { + return type; + } + + public T data() { + return data; + } + +} diff --git a/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/FabricPlatformNetworkHelper.java b/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/FabricPlatformNetworkHelper.java new file mode 100644 index 0000000..d377b84 --- /dev/null +++ b/projects/Fabric/src/main/java/li/cil/ocreloaded/fabric/common/FabricPlatformNetworkHelper.java @@ -0,0 +1,119 @@ +package li.cil.ocreloaded.fabric.common; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +import org.slf4j.LoggerFactory; + +import li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; +import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload.Type; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.player.Player; + +public class FabricPlatformNetworkHelper implements IPlatformNetworkHelper { + + private final Map, Type> typeMap = new HashMap<>(); + + @Override + public void sendToClients(Object packet, List players) { + Type type = typeMap.get(packet.getClass()); + LoggerFactory.getLogger(getClass()).info("SENDINg PACKET {}", type); + CustomDataPacket dataPacket = new CustomDataPacket<>(type, packet); + for (ServerPlayer player: players) { + ServerPlayNetworking.send(player, dataPacket); + } + } + + @Override + public void sendToClientsInLevel(Object packet, ServerLevel level) { + sendToClients(packet, level.players()); + } + + @Override + public void sendToServer(Object packet) { + Type type = typeMap.get(packet.getClass()); + LoggerFactory.getLogger(getClass()).info("SENDINg PACKET {}", type); + CustomDataPacket dataPacket = new CustomDataPacket<>(type, packet); + ClientPlayNetworking.send(dataPacket); + } + + @Override + @SuppressWarnings("unchecked") + public void registerPacket( + Type packetType, Class packetClass, + StreamCodec streamCodec, Consumer> packetHandler, + Side side + ) { + typeMap.put(packetClass, packetType); + + StreamCodec codec = StreamCodec.of((dest, src) -> { + streamCodec.encode(dest, ((CustomDataPacket) src).data()); + }, src -> { + return new CustomDataPacket(packetType, streamCodec.decode(src)); + }); + + if (side == Side.S2C || side == Side.BOTH) PayloadTypeRegistry.playS2C().register(packetType, codec); + if (side == Side.C2S || side == Side.BOTH) PayloadTypeRegistry.playC2S().register(packetType, codec); + + if (side == Side.C2S || side == Side.BOTH) registerServerReceiver(packetHandler, packetType); + if (side == Side.S2C || side == Side.BOTH) registerClientReceiver(packetHandler, packetType); + } + + private void registerServerReceiver(Consumer> packetHandler, Type packetType) { + ServerPlayNetworking.registerGlobalReceiver(packetType, (payload, context) -> { + packetHandler.accept(new PacketContext() { + + @Override + @SuppressWarnings("unchecked") + public T message() { + return ((CustomDataPacket) payload).data(); + } + + @Override + public Side side() { + return Side.C2S; + } + + @Override + public Player sender() { + return context.player(); + } + + }); + }); + } + + private void registerClientReceiver(Consumer> packetHandler, Type packetType) { + ClientPlayNetworking.registerGlobalReceiver(packetType, (payload, context) -> { + packetHandler.accept(new PacketContext() { + + @Override + @SuppressWarnings("unchecked") + public T message() { + return ((CustomDataPacket) payload).data(); + } + + @Override + public Side side() { + return Side.S2C; + } + + @Override + public Player sender() { + return context.player(); + } + + }); + }); + } + +} diff --git a/projects/Fabric/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper b/projects/Fabric/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper new file mode 100644 index 0000000..cccb3dd --- /dev/null +++ b/projects/Fabric/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper @@ -0,0 +1 @@ +li.cil.ocreloaded.fabric.common.FabricPlatformNetworkHelper \ No newline at end of file diff --git a/projects/Minecraft/build.gradle.kts b/projects/Minecraft/build.gradle.kts index 578b667..d3c262a 100644 --- a/projects/Minecraft/build.gradle.kts +++ b/projects/Minecraft/build.gradle.kts @@ -8,7 +8,6 @@ neoForge { dependencies { shadeApi(project(":Core")) - api("mysticdrew:common-networking-common:1.0.20-1.21.1") } tasks.register("copyResources") { diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/CaseBlockEntity.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/CaseBlockEntity.java index b9ce1a3..325e5ac 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/CaseBlockEntity.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/CaseBlockEntity.java @@ -12,11 +12,9 @@ import javax.annotation.Nonnull; -import li.cil.ocreloaded.minecraft.common.network.packets.SoundPacket; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import commonnetwork.api.Dispatcher; import io.netty.buffer.Unpooled; import li.cil.ocreloaded.core.component.ComputerComponent; import li.cil.ocreloaded.core.component.FileSystemComponent; @@ -39,6 +37,8 @@ import li.cil.ocreloaded.minecraft.common.component.ComponentNetworkUtil; import li.cil.ocreloaded.minecraft.common.item.ComponentItem; import li.cil.ocreloaded.minecraft.common.menu.CaseMenu; +import li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper; +import li.cil.ocreloaded.minecraft.common.network.packets.SoundPacket; import li.cil.ocreloaded.minecraft.common.persistence.NBTPersistenceHolder; import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; import li.cil.ocreloaded.minecraft.common.util.ItemList; @@ -290,7 +290,7 @@ private void beep(short frequency, short duration) { ChunkPos chunkPos = new ChunkPos(worldPosition); List chunkTrackingPlayers = ((ServerLevel) level).getPlayers(player -> player.getChunkTrackingView().contains(chunkPos)); - Dispatcher.sendToClients(SoundPacket.createBeepMessage(worldPosition, frequency, duration), chunkTrackingPlayers); + IPlatformNetworkHelper.INSTANCE.sendToClients(SoundPacket.createBeepMessage(worldPosition, frequency, duration), chunkTrackingPlayers); } } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ScreenBlockEntity.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ScreenBlockEntity.java index 4781679..2c05536 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ScreenBlockEntity.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/entity/ScreenBlockEntity.java @@ -3,8 +3,7 @@ import java.util.List; import javax.annotation.Nonnull; -import commonnetwork.api.Dispatcher; -import li.cil.ocreloaded.minecraft.common.network.packets.ScreenPacket; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,6 +18,8 @@ import li.cil.ocreloaded.minecraft.common.component.ComponentNetworkNode; import li.cil.ocreloaded.minecraft.common.component.ComponentNetworkUtil; import li.cil.ocreloaded.minecraft.common.item.GraphicsCardItem; +import li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper; +import li.cil.ocreloaded.minecraft.common.network.packets.ScreenPacket; import li.cil.ocreloaded.minecraft.common.network.packets.screen.NetworkedTextModeBufferProxy; import li.cil.ocreloaded.minecraft.common.network.packets.screen.ScreenNetworkInputMessages; import li.cil.ocreloaded.minecraft.common.persistence.NBTPersistenceHolder; @@ -110,7 +111,7 @@ public void tick() { NetworkedTextModeBufferProxy proxy = (NetworkedTextModeBufferProxy) screenBuffer; if (!proxy.hasChanges()) return; ByteBuf changeBuffer = proxy.getBuffer(); - Dispatcher.sendToClients(new ScreenPacket(worldPosition, ScreenPacket.TEXT_MODE_BUFFER_CHANNEL, changeBuffer.array()), chunkTrackingPlayers); + IPlatformNetworkHelper.INSTANCE.sendToClients(new ScreenPacket(worldPosition, ScreenPacket.TEXT_MODE_BUFFER_CHANNEL, changeBuffer.array()), chunkTrackingPlayers); } public void onKeyPressed(int charCode, int keyCode, Player player) { diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/CaseMenu.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/CaseMenu.java index fe37ec3..b6fa2f6 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/CaseMenu.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/CaseMenu.java @@ -1,10 +1,19 @@ package li.cil.ocreloaded.minecraft.common.menu; -import commonnetwork.api.Dispatcher; +import java.util.List; + +import javax.annotation.Nonnull; + import li.cil.ocreloaded.minecraft.common.assets.SharedTextures; import li.cil.ocreloaded.minecraft.common.container.BasicContainer; import li.cil.ocreloaded.minecraft.common.entity.CaseBlockEntity; -import li.cil.ocreloaded.minecraft.common.item.*; +import li.cil.ocreloaded.minecraft.common.item.CPUItem; +import li.cil.ocreloaded.minecraft.common.item.EepromItem; +import li.cil.ocreloaded.minecraft.common.item.FloppyDiskItem; +import li.cil.ocreloaded.minecraft.common.item.GraphicsCardItem; +import li.cil.ocreloaded.minecraft.common.item.HardDiskItem; +import li.cil.ocreloaded.minecraft.common.item.MemoryItem; +import li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper; import li.cil.ocreloaded.minecraft.common.network.packets.PowerPacket; import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; import net.minecraft.core.BlockPos; @@ -19,10 +28,6 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import java.util.List; - -import javax.annotation.Nonnull; - public class CaseMenu extends AbstractContainerMenu { private static final List> COMPONENT_SLOTS = List.of( @@ -116,7 +121,7 @@ public DataSlot getPower() { public void sendServerPowerState() { BlockPos targetBlockPos = blockEntity.getBlockPos(); - Dispatcher.sendToServer(new PowerPacket(targetBlockPos, power.get() == 1)); + IPlatformNetworkHelper.INSTANCE.sendToServer(new PowerPacket(targetBlockPos, power.get() == 1)); } private void addContainerSlots() { diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ScreenMenu.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ScreenMenu.java index 08f1776..a8d8b47 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ScreenMenu.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/menu/ScreenMenu.java @@ -2,9 +2,9 @@ import javax.annotation.Nonnull; -import commonnetwork.api.Dispatcher; import li.cil.ocreloaded.minecraft.common.block.ScreenBlock; import li.cil.ocreloaded.minecraft.common.entity.ScreenBlockEntity; +import li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper; import li.cil.ocreloaded.minecraft.common.network.packets.screen.ScreenNetworkInputMessages; import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; import net.minecraft.network.FriendlyByteBuf; @@ -40,31 +40,31 @@ public ScreenBlockEntity getBlockEntity() { } public void onKeyPressed(int charCode, int keyCode) { - Dispatcher.sendToServer(ScreenNetworkInputMessages.createKeyPressedMessage(blockEntity.getBlockPos(), charCode, keyCode)); + IPlatformNetworkHelper.INSTANCE.sendToServer(ScreenNetworkInputMessages.createKeyPressedMessage(blockEntity.getBlockPos(), charCode, keyCode)); } public void onKeyReleased(int keyCode) { - Dispatcher.sendToServer(ScreenNetworkInputMessages.createKeyReleasedMessage(blockEntity.getBlockPos(), keyCode)); + IPlatformNetworkHelper.INSTANCE.sendToServer(ScreenNetworkInputMessages.createKeyReleasedMessage(blockEntity.getBlockPos(), keyCode)); } public void onMousePressed(int button, double x, double y) { if (!allowMouseEvents()) return; - Dispatcher.sendToServer(ScreenNetworkInputMessages.createMouseMessage(ScreenNetworkInputMessages.MOUSE_PRESSED, blockEntity.getBlockPos(), button, x, y)); + IPlatformNetworkHelper.INSTANCE.sendToServer(ScreenNetworkInputMessages.createMouseMessage(ScreenNetworkInputMessages.MOUSE_PRESSED, blockEntity.getBlockPos(), button, x, y)); } public void onMouseReleased(int button, double x, double y) { if (!allowMouseEvents()) return; - Dispatcher.sendToServer(ScreenNetworkInputMessages.createMouseMessage(ScreenNetworkInputMessages.MOUSE_RELEASED, blockEntity.getBlockPos(), button, x, y)); + IPlatformNetworkHelper.INSTANCE.sendToServer(ScreenNetworkInputMessages.createMouseMessage(ScreenNetworkInputMessages.MOUSE_RELEASED, blockEntity.getBlockPos(), button, x, y)); } public void onMouseDragged(int button, double x, double y) { if (!allowMouseEvents()) return; - Dispatcher.sendToServer(ScreenNetworkInputMessages.createMouseMessage(ScreenNetworkInputMessages.MOUSE_DRAGGED, blockEntity.getBlockPos(), button, x, y)); + IPlatformNetworkHelper.INSTANCE.sendToServer(ScreenNetworkInputMessages.createMouseMessage(ScreenNetworkInputMessages.MOUSE_DRAGGED, blockEntity.getBlockPos(), button, x, y)); } public void onMouseScrolled(int button, double x, double y) { if (!allowMouseEvents()) return; - Dispatcher.sendToServer(ScreenNetworkInputMessages.createMouseMessage(ScreenNetworkInputMessages.MOUSE_SCROLLED, blockEntity.getBlockPos(), button, x, y)); + IPlatformNetworkHelper.INSTANCE.sendToServer(ScreenNetworkInputMessages.createMouseMessage(ScreenNetworkInputMessages.MOUSE_SCROLLED, blockEntity.getBlockPos(), button, x, y)); } private boolean allowMouseEvents() { @@ -72,6 +72,6 @@ private boolean allowMouseEvents() { } public void onKeyboardClipboard(String clipboard) { - Dispatcher.sendToServer(ScreenNetworkInputMessages.createClipboardPasteMessage(blockEntity.getBlockPos(), clipboard)); + IPlatformNetworkHelper.INSTANCE.sendToServer(ScreenNetworkInputMessages.createClipboardPasteMessage(blockEntity.getBlockPos(), clipboard)); } } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/IPlatformNetworkHelper.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/IPlatformNetworkHelper.java new file mode 100644 index 0000000..a483c72 --- /dev/null +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/IPlatformNetworkHelper.java @@ -0,0 +1,47 @@ +package li.cil.ocreloaded.minecraft.common.network; + +import java.util.List; +import java.util.ServiceLoader; +import java.util.function.Consumer; + +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload.Type; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.player.Player; + +public interface IPlatformNetworkHelper { + + public static IPlatformNetworkHelper INSTANCE = ServiceLoader.load(IPlatformNetworkHelper.class).findFirst().orElseThrow(); + + void registerPacket( + Type packetType, Class packetClass, + StreamCodec streamCodec, Consumer> packetHandler, + Side side + ); + + void sendToClients(Object packet, List players); + + void sendToClientsInLevel(Object packet, ServerLevel level); + + void sendToServer(Object packet); + + + interface PacketContext { + + T message(); + + Side side(); + + Player sender(); + + } + + enum Side { + C2S, S2C, BOTH; + } + + +} diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkUtil.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkUtil.java index 8ccaaa3..657ce4c 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkUtil.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/NetworkUtil.java @@ -1,19 +1,23 @@ package li.cil.ocreloaded.minecraft.common.network; -import commonnetwork.api.Network; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper.Side; import li.cil.ocreloaded.minecraft.common.network.packets.PowerPacket; import li.cil.ocreloaded.minecraft.common.network.packets.ScreenPacket; import li.cil.ocreloaded.minecraft.common.network.packets.SoundPacket; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class NetworkUtil { + public static final Logger LOGGER = LoggerFactory.getLogger(NetworkUtil.class); + private NetworkUtil() {} public static void initialize() { - Network.registerPacket(PowerPacket.type(), PowerPacket.class, PowerPacket.STREAM_CODEC, PowerPacket::handle); - Network.registerPacket(ScreenPacket.type(), ScreenPacket.class, ScreenPacket.STREAM_CODEC, ScreenPacket::handle); - Network.registerPacket(SoundPacket.type(), SoundPacket.class, SoundPacket.STREAM_CODEC, SoundPacket::handle); + IPlatformNetworkHelper.INSTANCE.registerPacket(PowerPacket.type(), PowerPacket.class, PowerPacket.STREAM_CODEC, PowerPacket::handle, Side.BOTH); + IPlatformNetworkHelper.INSTANCE.registerPacket(ScreenPacket.type(), ScreenPacket.class, ScreenPacket.STREAM_CODEC, ScreenPacket::handle, Side.BOTH); + IPlatformNetworkHelper.INSTANCE.registerPacket(SoundPacket.type(), SoundPacket.class, SoundPacket.STREAM_CODEC, SoundPacket::handle, Side.S2C); } + } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/PowerPacket.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/PowerPacket.java index 1cd583c..bac9f5f 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/PowerPacket.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/PowerPacket.java @@ -1,11 +1,11 @@ package li.cil.ocreloaded.minecraft.common.network.packets; -import commonnetwork.api.Dispatcher; -import commonnetwork.networking.data.PacketContext; -import commonnetwork.networking.data.Side; import li.cil.ocreloaded.minecraft.common.OCReloadedCommon; import li.cil.ocreloaded.minecraft.common.WorldUtil; import li.cil.ocreloaded.minecraft.common.entity.CaseBlockEntity; +import li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper; +import li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper.PacketContext; +import li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper.Side; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -31,10 +31,11 @@ public static CustomPacketPayload.Type type() { } public static void handle(PacketContext ctx) { - if (ctx.side().equals(Side.CLIENT)) + if (ctx.side().equals(Side.S2C)) { handleClient(ctx); - else + } else { handleServer(ctx); + } } private static void handleClient(PacketContext ctx) { @@ -60,7 +61,7 @@ private static void handleServer(PacketContext ctx) { if (level.getBlockEntity(packet.pos) instanceof CaseBlockEntity entity) { entity.setPowered(packet.powerState); - Dispatcher.sendToClientsInLevel(packet, (ServerLevel) level); + IPlatformNetworkHelper.INSTANCE.sendToClientsInLevel(packet, (ServerLevel) level); } } } diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/ScreenPacket.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/ScreenPacket.java index 49c998a..6b0fda1 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/ScreenPacket.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/ScreenPacket.java @@ -1,10 +1,10 @@ package li.cil.ocreloaded.minecraft.common.network.packets; -import commonnetwork.networking.data.PacketContext; -import commonnetwork.networking.data.Side; import li.cil.ocreloaded.core.graphics.TextModeBuffer; import li.cil.ocreloaded.minecraft.common.OCReloadedCommon; import li.cil.ocreloaded.minecraft.common.entity.ScreenBlockEntity; +import li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper.PacketContext; +import li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper.Side; import li.cil.ocreloaded.minecraft.common.network.NetworkUtil; import li.cil.ocreloaded.minecraft.common.network.packets.screen.NetworkedTextModeBufferProxy; import li.cil.ocreloaded.minecraft.common.network.packets.screen.ScreenNetworkInputMessages; @@ -20,7 +20,11 @@ public record ScreenPacket(BlockPos pos, int channel, byte[] deltaBuffer) { public static final ResourceLocation CHANNEL = ResourceLocation.fromNamespaceAndPath(OCReloadedCommon.MOD_ID, "screen_packet"); - public static final StreamCodec STREAM_CODEC = StreamCodec.composite(BlockPos.STREAM_CODEC, ScreenPacket::pos, ByteBufCodecs.INT, ScreenPacket::channel, ByteBufCodecs.BYTE_ARRAY, ScreenPacket::deltaBuffer, ScreenPacket::new); + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + BlockPos.STREAM_CODEC, ScreenPacket::pos, + ByteBufCodecs.INT, ScreenPacket::channel, + ByteBufCodecs.BYTE_ARRAY, ScreenPacket::deltaBuffer, + ScreenPacket::new); public static final int TEXT_MODE_BUFFER_CHANNEL = 0; public static final int INPUT_CHANNEL = 1; @@ -32,7 +36,7 @@ public static CustomPacketPayload.Type type() { public static void handle(PacketContext ctx) { ScreenPacket packet = ctx.message(); - Player player = ctx.side().equals(Side.CLIENT) ? + Player player = ctx.side().equals(Side.S2C) ? Minecraft.getInstance().player : ctx.sender(); if (player == null) return; @@ -42,7 +46,7 @@ public static void handle(PacketContext ctx) { if (!level.isLoaded(packet.pos)) return; if (!(level.getBlockEntity(packet.pos) instanceof ScreenBlockEntity entity)) return; - if (ctx.side().equals(Side.CLIENT)) { + if (ctx.side().equals(Side.S2C)) { if (packet.channel == TEXT_MODE_BUFFER_CHANNEL) writeScreenChanges(entity.getScreenBuffer(), packet.deltaBuffer); else nagAboutUnknownChannel(packet.channel); diff --git a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/SoundPacket.java b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/SoundPacket.java index 172e48c..5ffeaf8 100644 --- a/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/SoundPacket.java +++ b/projects/Minecraft/src/main/java/li/cil/ocreloaded/minecraft/common/network/packets/SoundPacket.java @@ -2,11 +2,11 @@ import java.nio.ByteBuffer; -import commonnetwork.networking.data.PacketContext; -import commonnetwork.networking.data.Side; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import li.cil.ocreloaded.minecraft.common.OCReloadedCommon; +import li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper.PacketContext; +import li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper.Side; import li.cil.ocreloaded.minecraft.common.network.NetworkUtil; import li.cil.ocreloaded.minecraft.common.registry.ClientBridge; import li.cil.ocreloaded.minecraft.common.sound.SoundPlayerProvider; @@ -37,7 +37,7 @@ public static CustomPacketPayload.Type type() { } public static void handle(PacketContext ctx) { - if (!ctx.side().equals(Side.CLIENT)) return; + if (!ctx.side().equals(Side.S2C)) return; Player player = Minecraft.getInstance().player; if (player == null) return; diff --git a/projects/NeoForge/build.gradle.kts b/projects/NeoForge/build.gradle.kts index 65fb50d..7fcf2cd 100644 --- a/projects/NeoForge/build.gradle.kts +++ b/projects/NeoForge/build.gradle.kts @@ -30,12 +30,9 @@ repositories { } dependencies { - shadeApi(project(":Minecraft")) - "additionalRuntimeClasspath"(files(project.configurations.getByName("shade"))) "additionalRuntimeClasspath"(files(project.configurations.getByName("shadeApi"))) - - implementation("mysticdrew:common-networking-neoforge:1.0.20-1.21.1") + shadeApi(project(":Minecraft")) } sourceSets.main { diff --git a/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/CustomDataPacket.java b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/CustomDataPacket.java new file mode 100644 index 0000000..35aad28 --- /dev/null +++ b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/CustomDataPacket.java @@ -0,0 +1,24 @@ +package li.cil.ocreloaded.neoforge.common; + +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; + +public class CustomDataPacket implements CustomPacketPayload { + + private Type type; + private T data; + + public CustomDataPacket(Type type, T data) { + this.type = type; + this.data = data; + } + + @Override + public Type type() { + return type; + } + + public T data() { + return data; + } + +} diff --git a/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/NeoPlatformNetworkHelper.java b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/NeoPlatformNetworkHelper.java new file mode 100644 index 0000000..9f713e4 --- /dev/null +++ b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/NeoPlatformNetworkHelper.java @@ -0,0 +1,142 @@ +package li.cil.ocreloaded.neoforge.common; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +import org.slf4j.LoggerFactory; + +import li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload.Type; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.player.Player; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.neoforge.network.PacketDistributor; +import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent; +import net.neoforged.neoforge.network.handling.IPayloadContext; +import net.neoforged.neoforge.network.registration.PayloadRegistrar; + +public class NeoPlatformNetworkHelper implements IPlatformNetworkHelper { + + private final Map, Type> typeMap = new HashMap<>(); + + private List> deferredPacketRegistrations = new ArrayList<>(); + + @Override + public void sendToClients(Object packet, List players) { + Type type = typeMap.get(packet.getClass()); + LoggerFactory.getLogger(getClass()).info("SENDINg PACKET {}", type); + CustomDataPacket dataPacket = new CustomDataPacket<>(type, packet); + for (ServerPlayer player: players) { + PacketDistributor.sendToPlayer(player, dataPacket); + } + } + + @Override + public void sendToClientsInLevel(Object packet, ServerLevel level) { + Type type = typeMap.get(packet.getClass()); + LoggerFactory.getLogger(getClass()).info("SENDINg PACKET {}", type); + CustomDataPacket dataPacket = new CustomDataPacket<>(type, packet); + PacketDistributor.sendToAllPlayers(dataPacket); + } + + @Override + public void sendToServer(Object packet) { + Type type = typeMap.get(packet.getClass()); + LoggerFactory.getLogger(getClass()).info("SENDINg PACKET {}", type); + CustomDataPacket dataPacket = new CustomDataPacket<>(type, packet); + PacketDistributor.sendToServer(dataPacket); + } + + @Override + public void registerPacket( + Type type, Class packetClass, + StreamCodec streamCodec, Consumer> packetHandler, + Side side + ) { + if (deferredPacketRegistrations == null) { + throw new IllegalStateException("Cannot register packet listeners after registration ends!"); + } + + deferredPacketRegistrations.add(new DeferredPacketRegistration<>(type, packetClass, streamCodec, packetHandler, side)); + } + + @SubscribeEvent + public void register(RegisterPayloadHandlersEvent event) { + final PayloadRegistrar registrar = event.registrar("1"); + + for (DeferredPacketRegistration registration: deferredPacketRegistrations) { + registerPayload(registrar, registration); + } + } + + @SuppressWarnings("unchecked") + private void registerPayload(PayloadRegistrar registrar, DeferredPacketRegistration registration) { + Type packetType = registration.packetType(); + + typeMap.put(registration.packetClass(), packetType); + + // TODO: Probably Wrong + StreamCodec streamCodec = (StreamCodec) registration.streamCodec; + StreamCodec codec = StreamCodec.of((dest, src) -> { + streamCodec.encode(dest, ((CustomDataPacket) src).data()); + }, src -> { + return new CustomDataPacket(packetType, streamCodec.decode(src)); + }); + + switch (registration.side) { + case BOTH: + registrar.playBidirectional(registration.packetType, codec, + (payload, context) -> handleMessage(payload, context, registration.packetHandler())); + break; + case C2S: + registrar.playToServer(registration.packetType, codec, + (payload, context) -> handleMessage(payload, context, registration.packetHandler())); + break; + case S2C: + registrar.playToClient(registration.packetType, codec, + (payload, context) -> handleMessage(payload, context, registration.packetHandler())); + break; + default: + throw new IllegalArgumentException("Not a valid side!"); + } + } + + void handleMessage(CustomPacketPayload payload, IPayloadContext context, Consumer> packetHandler) { + context.enqueueWork(() -> { + packetHandler.accept(new PacketContext() { + + @Override + @SuppressWarnings("unchecked") + public T message() { + return ((CustomDataPacket) payload).data(); + } + + @Override + public Side side() { + return context.player().level().isClientSide() ? Side.S2C : Side.C2S; + } + + @Override + public Player sender() { + return context.player(); + } + + }); + }); + }; + + private static record DeferredPacketRegistration( + Type packetType, Class packetClass, + StreamCodec streamCodec, Consumer> packetHandler, + Side side + ) {} + +} diff --git a/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java index aae81fe..22ad529 100644 --- a/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java +++ b/projects/NeoForge/src/main/java/li/cil/ocreloaded/neoforge/common/OCReloaded.java @@ -1,6 +1,7 @@ package li.cil.ocreloaded.neoforge.common; +import li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper; import li.cil.ocreloaded.minecraft.common.registry.CommonRegistered; import li.cil.ocreloaded.minecraft.server.CommonServerHooks; import net.neoforged.bus.api.IEventBus; @@ -12,9 +13,14 @@ @Mod(OCReloaded.MOD_ID) @EventBusSubscriber(modid = OCReloaded.MOD_ID) public class OCReloaded { + public static final String MOD_ID = "ocreloaded"; + private final NeoPlatformNetworkHelper networkHelper = (NeoPlatformNetworkHelper) IPlatformNetworkHelper.INSTANCE; + public OCReloaded(IEventBus bus) throws ClassNotFoundException { + bus.register(networkHelper); + CommonRegistered.initialize(); } diff --git a/projects/NeoForge/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper b/projects/NeoForge/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper new file mode 100644 index 0000000..53ca286 --- /dev/null +++ b/projects/NeoForge/src/main/resources/META-INF/services/li.cil.ocreloaded.minecraft.common.network.IPlatformNetworkHelper @@ -0,0 +1 @@ +li.cil.ocreloaded.neoforge.common.NeoPlatformNetworkHelper \ No newline at end of file