From 8e72212bf66ffb42227753c8312a94745a850795 Mon Sep 17 00:00:00 2001 From: HypherionMC Date: Wed, 10 May 2023 21:21:16 +0200 Subject: [PATCH] Code cleanup and refactoring before porting --- .idea/misc.xml | 3 + .../craterlib/CraterConstants.java | 10 + .../api/blockentity}/ISidedTickable.java | 13 +- .../craterlib/api/blockentity}/ITickable.java | 7 +- .../caps/CraterCapabilityHandler.java | 11 + .../blockentity}/caps/ICraterCapProvider.java | 4 +- .../creativetab}/CraterCreativeModeTab.java | 14 +- .../event/client/ColorRegistrationEvent.java | 49 ++++ .../api/rendering/CustomRenderType.java | 2 +- .../craterlib/api/rendering/DyableBlock.java | 2 +- .../craterlib/api/rendering/ItemDyable.java | 2 +- .../client/gui/config/CraterConfigScreen.java | 15 +- .../config/widgets/AbstractConfigWidget.java | 4 +- .../client/gui/config/widgets/BaseWidget.java | 4 +- .../config/widgets/InternalConfigButton.java | 7 +- .../client/gui/config/widgets/Option.java | 4 +- .../gui/config/widgets/SubConfigWidget.java | 9 +- .../gui/config/widgets/TextConfigOption.java | 4 +- .../gui/config/widgets/ToggleButton.java | 4 +- .../gui/config/widgets/WrappedEditBox.java | 8 +- .../client/gui/widgets/TimeSliderWidget.java | 3 +- .../client/registry/ClientRegistry.java | 60 +++++ .../client/rendering/ItemColorHandler.java | 22 +- .../common/blockentity/CraterBlockEntity.java | 9 +- .../FluidContainerBlockEntity.java | 16 +- .../common/item/BlockItemDyable.java | 14 +- .../common/item/DyableWaterBottle.java | 5 +- .../common/item/DyableWaterBucket.java | 5 +- .../particles/WrappedSimpleParticleType.java | 3 +- .../core}/config/ConfigController.java | 5 +- .../craterlib/core}/config/ModuleConfig.java | 6 +- .../config/annotations/NoConfigScreen.java | 3 +- .../core}/config/annotations/SubConfig.java | 3 +- .../core}/config/annotations/Syncable.java | 3 +- .../core}/config/annotations/Tooltip.java | 3 +- .../craterlib/core/event/CraterEvent.java | 27 ++ .../craterlib/core/event/CraterEventBus.java | 233 ++++++++++++++++++ .../core/event/CraterEventPriority.java | 13 + .../core/event/annot/CraterEventListener.java | 11 + .../CraterEventCancellationException.java | 9 + .../craterlib/core/event/package-info.java | 5 + .../core}/network/CraterNetworkHandler.java | 7 +- .../craterlib/core}/network/CraterPacket.java | 3 +- .../core}/network/PacketDirection.java | 3 +- .../core}/platform/ClientPlatform.java | 7 +- .../craterlib/core}/platform/Platform.java | 13 +- .../core}/platform/services/Environment.java | 3 +- .../core/platform/services/ILoaderHelper.java | 19 ++ .../platform/services/LibClientHelper.java | 46 ++++ .../platform/services/LibCommonHelper.java | 40 +++ .../platform/services/LibFluidHelper.java | 33 +++ .../systems/energy/CustomEnergyStorage.java | 3 +- .../systems/energy/ICraterEnergyStorage.java | 24 ++ .../core}/systems/fluid/CraterFluidTank.java | 10 +- .../core}/systems/fluid/FluidHolder.java | 8 +- .../systems/fluid/ICraterFluidHandler.java | 35 +++ .../systems/internal/CreativeTabRegistry.java | 12 +- .../systems/inventory/SimpleInventory.java | 4 +- .../core/systems/reg/package-info.java | 7 + .../mixin/colors/BlockColorsMixin.java | 11 +- .../mixin/colors/ItemColorsMixin.java | 10 +- .../craterlib/util/BlockStateUtils.java | 10 +- .../craterlib/util/ColorPropertyFunction.java | 5 +- .../craterlib/util/FluidUtils.java | 6 +- .../hypherionmc/craterlib/util/LangUtils.java | 6 +- .../hypherionmc/craterlib/util/MathUtils.java | 6 +- .../craterlib/util/OptifineUtils.java | 22 +- .../craterlib/util/RenderUtils.java | 6 +- .../craterlib/CraterConstants.java | 10 - .../blockentities/caps/CapabilityHandler.java | 11 - .../client/events/ColorRegistrationEvent.java | 44 ---- .../client/registry/ClientRegistry.java | 53 ---- .../common/block/ShapeShiftingBlock.java | 37 --- .../craterlib/events/CraterEventBus.java | 46 ---- .../hypherionmc/craterlib/events/Event.java | 37 --- .../craterlib/events/IEventExecutor.java | 10 - .../platform/services/ILoaderHelper.java | 19 -- .../platform/services/LibClientHelper.java | 46 ---- .../platform/services/LibCommonHelper.java | 41 --- .../platform/services/LibFluidHelper.java | 30 --- .../systems/energy/ICraterEnergyStorage.java | 21 -- .../systems/fluid/ICraterFluidHandler.java | 32 --- .../craterlib/systems/reg/package-info.java | 6 - .../src/main/resources/craterlib.mixins.json | 2 +- .../craterlib/CraterLibInitializer.java | 4 +- .../CraterLibModMenuIntegration.java | 11 +- .../client/CraterLibClientInitializer.java | 2 +- .../craterlib/client/FabricClientHelper.java | 13 +- .../client/gui/widgets/FluidStackWidget.java | 9 +- .../craterlib/common/FabricCommonHelper.java | 17 +- .../craterlib/common/FabricFluidHelper.java | 11 +- .../craterlib/common/FabricLoaderHelper.java | 11 +- .../craterlib/mixin/MinecraftMixin.java | 6 +- .../network/FabricNetworkHandler.java | 9 +- .../systems/fluid/FabricFluidUtils.java | 2 +- .../craterlib/systems/fluid/FluidTank.java | 4 +- ...erlib.core.platform.services.ILoaderHelper | 1 + ...lib.core.platform.services.LibClientHelper | 1 + ...lib.core.platform.services.LibCommonHelper | 1 + ...rlib.core.platform.services.LibFluidHelper | 1 + ....craterlib.platform.services.ILoaderHelper | 1 - ...raterlib.platform.services.LibClientHelper | 1 - ...raterlib.platform.services.LibCommonHelper | 1 - ...craterlib.platform.services.LibFluidHelper | 1 - .../resources/craterlib.fabric.mixins.json | 2 +- Fabric/src/main/resources/fabric.mod.json | 6 +- .../hypherionmc/craterlib/CraterLib.java | 2 +- .../craterlib/client/ForgeClientHelper.java | 12 +- .../client/gui/widgets/FluidStackWidget.java | 9 +- .../craterlib/common/ForgeCommonEvents.java | 8 +- .../craterlib/common/ForgeCommonHelper.java | 27 +- .../craterlib/common/ForgeFluidHelper.java | 11 +- .../craterlib/common/ForgeLoaderHelper.java | 12 +- .../craterlib/mixin/BlockEntityMixin.java | 28 +-- .../mixin/ConfigScreenHandlerMixin.java | 11 +- .../network/ForgeNetworkHandler.java | 10 +- .../systems/energy/ForgeEnergyReader.java | 3 +- .../systems/energy/ForgeEnergyWrapper.java | 4 +- .../systems/fluid/ForgeFluidReader.java | 4 +- .../fluid/ForgeFluidTankInteractor.java | 4 +- .../systems/fluid/ForgeFluidUtils.java | 2 +- .../systems/fluid/ForgeWrappedFluidTank.java | 4 +- .../inventory/ForgeInventoryWrapper.java | 4 +- ...erlib.core.platform.services.ILoaderHelper | 1 + ...lib.core.platform.services.LibClientHelper | 1 + ...lib.core.platform.services.LibCommonHelper | 1 + ...rlib.core.platform.services.LibFluidHelper | 1 + ....craterlib.platform.services.ILoaderHelper | 1 - ...raterlib.platform.services.LibClientHelper | 1 - ...raterlib.platform.services.LibCommonHelper | 1 - ...craterlib.platform.services.LibFluidHelper | 1 - .../resources/craterlib.forge.mixins.json | 2 +- README.md | 10 +- build.gradle | 2 +- 134 files changed, 975 insertions(+), 755 deletions(-) create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/CraterConstants.java rename Common/src/main/java/{me/hypherionmc/craterlib/api/blockentities => com/hypherionmc/craterlib/api/blockentity}/ISidedTickable.java (50%) rename Common/src/main/java/{me/hypherionmc/craterlib/api/blockentities => com/hypherionmc/craterlib/api/blockentity}/ITickable.java (59%) create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/api/blockentity/caps/CraterCapabilityHandler.java rename Common/src/main/java/{me/hypherionmc/craterlib/api/blockentities => com/hypherionmc/craterlib/api/blockentity}/caps/ICraterCapProvider.java (63%) rename Common/src/main/java/{me/hypherionmc/craterlib/api/inventory => com/hypherionmc/craterlib/api/creativetab}/CraterCreativeModeTab.java (80%) create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/api/event/client/ColorRegistrationEvent.java rename Common/src/main/java/{me => com}/hypherionmc/craterlib/api/rendering/CustomRenderType.java (84%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/api/rendering/DyableBlock.java (88%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/api/rendering/ItemDyable.java (85%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/client/gui/config/CraterConfigScreen.java (97%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/client/gui/config/widgets/AbstractConfigWidget.java (81%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/client/gui/config/widgets/BaseWidget.java (90%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/client/gui/config/widgets/InternalConfigButton.java (90%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/client/gui/config/widgets/Option.java (90%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/client/gui/config/widgets/SubConfigWidget.java (85%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/client/gui/config/widgets/TextConfigOption.java (86%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/client/gui/config/widgets/ToggleButton.java (80%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/client/gui/config/widgets/WrappedEditBox.java (82%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/client/gui/widgets/TimeSliderWidget.java (95%) create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/client/registry/ClientRegistry.java rename Common/src/main/java/{me => com}/hypherionmc/craterlib/client/rendering/ItemColorHandler.java (51%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/common/blockentity/CraterBlockEntity.java (81%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/common/blockentity/FluidContainerBlockEntity.java (75%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/common/item/BlockItemDyable.java (86%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/common/item/DyableWaterBottle.java (96%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/common/item/DyableWaterBucket.java (88%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/common/particles/WrappedSimpleParticleType.java (80%) rename Common/src/main/java/{me/hypherionmc/craterlib/common => com/hypherionmc/craterlib/core}/config/ConfigController.java (92%) rename Common/src/main/java/{me/hypherionmc/craterlib/common => com/hypherionmc/craterlib/core}/config/ModuleConfig.java (97%) rename Common/src/main/java/{me/hypherionmc/craterlib/common => com/hypherionmc/craterlib/core}/config/annotations/NoConfigScreen.java (75%) rename Common/src/main/java/{me/hypherionmc/craterlib/common => com/hypherionmc/craterlib/core}/config/annotations/SubConfig.java (82%) rename Common/src/main/java/{me/hypherionmc/craterlib/common => com/hypherionmc/craterlib/core}/config/annotations/Syncable.java (80%) rename Common/src/main/java/{me/hypherionmc/craterlib/common => com/hypherionmc/craterlib/core}/config/annotations/Tooltip.java (81%) create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/event/CraterEvent.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/event/CraterEventBus.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/event/CraterEventPriority.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/event/annot/CraterEventListener.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/event/exception/CraterEventCancellationException.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/event/package-info.java rename Common/src/main/java/{me/hypherionmc/craterlib => com/hypherionmc/craterlib/core}/network/CraterNetworkHandler.java (84%) rename Common/src/main/java/{me/hypherionmc/craterlib => com/hypherionmc/craterlib/core}/network/CraterPacket.java (90%) rename Common/src/main/java/{me/hypherionmc/craterlib => com/hypherionmc/craterlib/core}/network/PacketDirection.java (60%) rename Common/src/main/java/{me/hypherionmc/craterlib => com/hypherionmc/craterlib/core}/platform/ClientPlatform.java (75%) rename Common/src/main/java/{me/hypherionmc/craterlib => com/hypherionmc/craterlib/core}/platform/Platform.java (66%) rename Common/src/main/java/{me/hypherionmc/craterlib => com/hypherionmc/craterlib/core}/platform/services/Environment.java (57%) create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/ILoaderHelper.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibClientHelper.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibCommonHelper.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibFluidHelper.java rename Common/src/main/java/{me/hypherionmc/craterlib => com/hypherionmc/craterlib/core}/systems/energy/CustomEnergyStorage.java (97%) create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/systems/energy/ICraterEnergyStorage.java rename Common/src/main/java/{me/hypherionmc/craterlib => com/hypherionmc/craterlib/core}/systems/fluid/CraterFluidTank.java (95%) rename Common/src/main/java/{me/hypherionmc/craterlib => com/hypherionmc/craterlib/core}/systems/fluid/FluidHolder.java (88%) create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/systems/fluid/ICraterFluidHandler.java rename Common/src/main/java/{me/hypherionmc/craterlib => com/hypherionmc/craterlib/core}/systems/internal/CreativeTabRegistry.java (74%) rename Common/src/main/java/{me/hypherionmc/craterlib => com/hypherionmc/craterlib/core}/systems/inventory/SimpleInventory.java (95%) create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/systems/reg/package-info.java rename Common/src/main/java/{me => com}/hypherionmc/craterlib/mixin/colors/BlockColorsMixin.java (65%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/mixin/colors/ItemColorsMixin.java (68%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/util/BlockStateUtils.java (55%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/util/ColorPropertyFunction.java (89%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/util/FluidUtils.java (86%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/util/LangUtils.java (82%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/util/MathUtils.java (90%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/util/OptifineUtils.java (67%) rename Common/src/main/java/{me => com}/hypherionmc/craterlib/util/RenderUtils.java (94%) delete mode 100644 Common/src/main/java/me/hypherionmc/craterlib/CraterConstants.java delete mode 100644 Common/src/main/java/me/hypherionmc/craterlib/api/blockentities/caps/CapabilityHandler.java delete mode 100644 Common/src/main/java/me/hypherionmc/craterlib/client/events/ColorRegistrationEvent.java delete mode 100644 Common/src/main/java/me/hypherionmc/craterlib/client/registry/ClientRegistry.java delete mode 100644 Common/src/main/java/me/hypherionmc/craterlib/common/block/ShapeShiftingBlock.java delete mode 100644 Common/src/main/java/me/hypherionmc/craterlib/events/CraterEventBus.java delete mode 100644 Common/src/main/java/me/hypherionmc/craterlib/events/Event.java delete mode 100644 Common/src/main/java/me/hypherionmc/craterlib/events/IEventExecutor.java delete mode 100644 Common/src/main/java/me/hypherionmc/craterlib/platform/services/ILoaderHelper.java delete mode 100644 Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibClientHelper.java delete mode 100644 Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibCommonHelper.java delete mode 100644 Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibFluidHelper.java delete mode 100644 Common/src/main/java/me/hypherionmc/craterlib/systems/energy/ICraterEnergyStorage.java delete mode 100644 Common/src/main/java/me/hypherionmc/craterlib/systems/fluid/ICraterFluidHandler.java delete mode 100644 Common/src/main/java/me/hypherionmc/craterlib/systems/reg/package-info.java rename Fabric/src/main/java/{me => com}/hypherionmc/craterlib/CraterLibInitializer.java (77%) rename Fabric/src/main/java/{me => com}/hypherionmc/craterlib/CraterLibModMenuIntegration.java (70%) rename Fabric/src/main/java/{me => com}/hypherionmc/craterlib/client/CraterLibClientInitializer.java (89%) rename Fabric/src/main/java/{me => com}/hypherionmc/craterlib/client/FabricClientHelper.java (91%) rename Fabric/src/main/java/{me => com}/hypherionmc/craterlib/client/gui/widgets/FluidStackWidget.java (91%) rename Fabric/src/main/java/{me => com}/hypherionmc/craterlib/common/FabricCommonHelper.java (86%) rename Fabric/src/main/java/{me => com}/hypherionmc/craterlib/common/FabricFluidHelper.java (85%) rename Fabric/src/main/java/{me => com}/hypherionmc/craterlib/common/FabricLoaderHelper.java (85%) rename Fabric/src/main/java/{me => com}/hypherionmc/craterlib/mixin/MinecraftMixin.java (89%) rename Fabric/src/main/java/{me => com}/hypherionmc/craterlib/network/FabricNetworkHandler.java (90%) rename Fabric/src/main/java/{me => com}/hypherionmc/craterlib/systems/fluid/FabricFluidUtils.java (88%) rename Fabric/src/main/java/{me => com}/hypherionmc/craterlib/systems/fluid/FluidTank.java (91%) create mode 100644 Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.ILoaderHelper create mode 100644 Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibClientHelper create mode 100644 Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibCommonHelper create mode 100644 Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibFluidHelper delete mode 100644 Fabric/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.ILoaderHelper delete mode 100644 Fabric/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibClientHelper delete mode 100644 Fabric/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibCommonHelper delete mode 100644 Fabric/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibFluidHelper rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/CraterLib.java (79%) rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/client/ForgeClientHelper.java (88%) rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/client/gui/widgets/FluidStackWidget.java (94%) rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/common/ForgeCommonEvents.java (87%) rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/common/ForgeCommonHelper.java (79%) rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/common/ForgeFluidHelper.java (79%) rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/common/ForgeLoaderHelper.java (84%) rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/mixin/BlockEntityMixin.java (65%) rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/mixin/ConfigScreenHandlerMixin.java (81%) rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/network/ForgeNetworkHandler.java (91%) rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/systems/energy/ForgeEnergyReader.java (86%) rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/systems/energy/ForgeEnergyWrapper.java (88%) rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/systems/fluid/ForgeFluidReader.java (88%) rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/systems/fluid/ForgeFluidTankInteractor.java (90%) rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/systems/fluid/ForgeFluidUtils.java (95%) rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/systems/fluid/ForgeWrappedFluidTank.java (93%) rename Forge/src/main/java/{me => com}/hypherionmc/craterlib/systems/inventory/ForgeInventoryWrapper.java (94%) create mode 100644 Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.ILoaderHelper create mode 100644 Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibClientHelper create mode 100644 Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibCommonHelper create mode 100644 Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibFluidHelper delete mode 100644 Forge/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.ILoaderHelper delete mode 100644 Forge/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibClientHelper delete mode 100644 Forge/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibCommonHelper delete mode 100644 Forge/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibFluidHelper diff --git a/.idea/misc.xml b/.idea/misc.xml index 88a2c85..121ee87 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -9,6 +9,9 @@ + + + diff --git a/Common/src/main/java/com/hypherionmc/craterlib/CraterConstants.java b/Common/src/main/java/com/hypherionmc/craterlib/CraterConstants.java new file mode 100644 index 0000000..93edffc --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/CraterConstants.java @@ -0,0 +1,10 @@ +package com.hypherionmc.craterlib; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class CraterConstants { + public static final String MOD_ID = "craterlib"; + public static final String MOD_NAME = "CraterLib"; + public static final Logger LOG = LoggerFactory.getLogger(MOD_NAME); +} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/api/blockentities/ISidedTickable.java b/Common/src/main/java/com/hypherionmc/craterlib/api/blockentity/ISidedTickable.java similarity index 50% rename from Common/src/main/java/me/hypherionmc/craterlib/api/blockentities/ISidedTickable.java rename to Common/src/main/java/com/hypherionmc/craterlib/api/blockentity/ISidedTickable.java index fb7ed76..91a9038 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/api/blockentities/ISidedTickable.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/blockentity/ISidedTickable.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.api.blockentities; +package com.hypherionmc.craterlib.api.blockentity; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; @@ -11,14 +11,7 @@ import net.minecraft.world.level.block.state.BlockState; */ public interface ISidedTickable { - /** - * Server Tick Event - */ - public void serverTick(Level level, BlockPos pos, BlockState state, BlockEntity blockEntity); - - /** - * Client Tick Event - */ - public void clientTick(Level level, BlockPos pos, BlockState state, BlockEntity blockEntity); + void serverTick(Level level, BlockPos pos, BlockState state, BlockEntity blockEntity); + void clientTick(Level level, BlockPos pos, BlockState state, BlockEntity blockEntity); } diff --git a/Common/src/main/java/me/hypherionmc/craterlib/api/blockentities/ITickable.java b/Common/src/main/java/com/hypherionmc/craterlib/api/blockentity/ITickable.java similarity index 59% rename from Common/src/main/java/me/hypherionmc/craterlib/api/blockentities/ITickable.java rename to Common/src/main/java/com/hypherionmc/craterlib/api/blockentity/ITickable.java index 157502a..605eff8 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/api/blockentities/ITickable.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/blockentity/ITickable.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.api.blockentities; +package com.hypherionmc.craterlib.api.blockentity; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; @@ -11,9 +11,6 @@ import net.minecraft.world.level.block.state.BlockState; */ public interface ITickable { - /** - * The Tick Event. Can be either Server or Client Sided - */ - public void tick(Level level, BlockPos pos, BlockState state, BlockEntity blockEntity); + void tick(Level level, BlockPos pos, BlockState state, BlockEntity blockEntity); } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/api/blockentity/caps/CraterCapabilityHandler.java b/Common/src/main/java/com/hypherionmc/craterlib/api/blockentity/caps/CraterCapabilityHandler.java new file mode 100644 index 0000000..70cf116 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/blockentity/caps/CraterCapabilityHandler.java @@ -0,0 +1,11 @@ +package com.hypherionmc.craterlib.api.blockentity.caps; + +/** + * @author HypherionSA + * Wrapper class for Forge capabilities to remove duplicate code from modules + */ +public enum CraterCapabilityHandler { + ENERGY, + ITEM, + FLUID +} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/api/blockentities/caps/ICraterCapProvider.java b/Common/src/main/java/com/hypherionmc/craterlib/api/blockentity/caps/ICraterCapProvider.java similarity index 63% rename from Common/src/main/java/me/hypherionmc/craterlib/api/blockentities/caps/ICraterCapProvider.java rename to Common/src/main/java/com/hypherionmc/craterlib/api/blockentity/caps/ICraterCapProvider.java index 389e7ca..4f49dea 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/api/blockentities/caps/ICraterCapProvider.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/blockentity/caps/ICraterCapProvider.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.api.blockentities.caps; +package com.hypherionmc.craterlib.api.blockentity.caps; import net.minecraft.core.Direction; import org.jetbrains.annotations.Nullable; @@ -11,6 +11,6 @@ import java.util.Optional; */ public interface ICraterCapProvider { - public Optional getCapability(CapabilityHandler handler, @Nullable Direction side); + Optional getCapability(CraterCapabilityHandler handler, @Nullable Direction side); } diff --git a/Common/src/main/java/me/hypherionmc/craterlib/api/inventory/CraterCreativeModeTab.java b/Common/src/main/java/com/hypherionmc/craterlib/api/creativetab/CraterCreativeModeTab.java similarity index 80% rename from Common/src/main/java/me/hypherionmc/craterlib/api/inventory/CraterCreativeModeTab.java rename to Common/src/main/java/com/hypherionmc/craterlib/api/creativetab/CraterCreativeModeTab.java index 0dd8c64..a459e1a 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/api/inventory/CraterCreativeModeTab.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/creativetab/CraterCreativeModeTab.java @@ -1,6 +1,6 @@ -package me.hypherionmc.craterlib.api.inventory; +package com.hypherionmc.craterlib.api.creativetab; -import me.hypherionmc.craterlib.systems.internal.CreativeTabRegistry; +import com.hypherionmc.craterlib.core.systems.internal.CreativeTabRegistry; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.CreativeModeTabs; @@ -8,10 +8,6 @@ import net.minecraft.world.item.ItemStack; import java.util.function.Supplier; -/** - * @author HypherionSA - * Extention to allow mods to add their own creative tabs, without relying on loader events - */ public class CraterCreativeModeTab implements Supplier { private final ResourceLocation resourceLocation; @@ -28,7 +24,7 @@ public class CraterCreativeModeTab implements Supplier { } public ResourceLocation getResourceLocation() { - return this.resourceLocation; + return resourceLocation; } public Supplier getIcon() { @@ -52,12 +48,12 @@ public class CraterCreativeModeTab implements Supplier { this.location = location; } - public Builder setIcon(Supplier icon) { + public CraterCreativeModeTab.Builder setIcon(Supplier icon) { stack = icon; return this; } - public Builder backgroundSuffix(String backgroundSuffix) { + public CraterCreativeModeTab.Builder backgroundSuffix(String backgroundSuffix) { this.backgroundSuffix = backgroundSuffix; return this; } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/api/event/client/ColorRegistrationEvent.java b/Common/src/main/java/com/hypherionmc/craterlib/api/event/client/ColorRegistrationEvent.java new file mode 100644 index 0000000..f7fd9c4 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/event/client/ColorRegistrationEvent.java @@ -0,0 +1,49 @@ +package com.hypherionmc.craterlib.api.event.client; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import net.minecraft.client.color.block.BlockColors; +import net.minecraft.client.color.item.ItemColors; + +/** + * @author HypherionSA + * A wrapped event to allow Block and Item Color Registration + */ +public class ColorRegistrationEvent { + + public static class Blocks extends CraterEvent { + + private final BlockColors colors; + + public Blocks(BlockColors colors) { + this.colors = colors; + } + + public BlockColors getColors() { + return colors; + } + + @Override + public boolean canCancel() { + return false; + } + } + + public static class Items extends CraterEvent { + + private final ItemColors colors; + + public Items(ItemColors colors) { + this.colors = colors; + } + + public ItemColors getColors() { + return colors; + } + + @Override + public boolean canCancel() { + return false; + } + } + +} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/api/rendering/CustomRenderType.java b/Common/src/main/java/com/hypherionmc/craterlib/api/rendering/CustomRenderType.java similarity index 84% rename from Common/src/main/java/me/hypherionmc/craterlib/api/rendering/CustomRenderType.java rename to Common/src/main/java/com/hypherionmc/craterlib/api/rendering/CustomRenderType.java index 29c5524..35ee632 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/api/rendering/CustomRenderType.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/rendering/CustomRenderType.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.api.rendering; +package com.hypherionmc.craterlib.api.rendering; import net.minecraft.client.renderer.RenderType; diff --git a/Common/src/main/java/me/hypherionmc/craterlib/api/rendering/DyableBlock.java b/Common/src/main/java/com/hypherionmc/craterlib/api/rendering/DyableBlock.java similarity index 88% rename from Common/src/main/java/me/hypherionmc/craterlib/api/rendering/DyableBlock.java rename to Common/src/main/java/com/hypherionmc/craterlib/api/rendering/DyableBlock.java index b68c449..75df66c 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/api/rendering/DyableBlock.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/rendering/DyableBlock.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.api.rendering; +package com.hypherionmc.craterlib.api.rendering; import net.minecraft.client.color.block.BlockColor; import net.minecraft.world.item.DyeColor; diff --git a/Common/src/main/java/me/hypherionmc/craterlib/api/rendering/ItemDyable.java b/Common/src/main/java/com/hypherionmc/craterlib/api/rendering/ItemDyable.java similarity index 85% rename from Common/src/main/java/me/hypherionmc/craterlib/api/rendering/ItemDyable.java rename to Common/src/main/java/com/hypherionmc/craterlib/api/rendering/ItemDyable.java index 31aedb5..616e286 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/api/rendering/ItemDyable.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/rendering/ItemDyable.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.api.rendering; +package com.hypherionmc.craterlib.api.rendering; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; diff --git a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/CraterConfigScreen.java b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/CraterConfigScreen.java similarity index 97% rename from Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/CraterConfigScreen.java rename to Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/CraterConfigScreen.java index 70f6098..1323f9e 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/CraterConfigScreen.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/CraterConfigScreen.java @@ -1,12 +1,12 @@ -package me.hypherionmc.craterlib.client.gui.config; +package com.hypherionmc.craterlib.client.gui.config; +import com.hypherionmc.craterlib.CraterConstants; +import com.hypherionmc.craterlib.client.gui.config.widgets.*; +import com.hypherionmc.craterlib.core.config.ModuleConfig; +import com.hypherionmc.craterlib.core.config.annotations.SubConfig; +import com.hypherionmc.craterlib.core.config.annotations.Tooltip; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; -import me.hypherionmc.craterlib.CraterConstants; -import me.hypherionmc.craterlib.client.gui.config.widgets.*; -import me.hypherionmc.craterlib.common.config.ModuleConfig; -import me.hypherionmc.craterlib.common.config.annotations.SubConfig; -import me.hypherionmc.craterlib.common.config.annotations.Tooltip; import me.hypherionmc.moonconfig.core.conversion.SpecComment; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiComponent; @@ -33,7 +33,6 @@ import java.util.function.Supplier; /** * @author HypherionSA - * @date 03/07/2022 */ public class CraterConfigScreen extends Screen { public static final float SCROLLBAR_BOTTOM_COLOR = .5f; @@ -43,7 +42,6 @@ public class CraterConfigScreen extends Screen { private final Screen parent; private final List> options = new ArrayList<>(); private final ModuleConfig config; - private final Object subConfig; public double scrollerAmount; private boolean dragging; @@ -51,7 +49,6 @@ public class CraterConfigScreen extends Screen { super(Component.translatable("cl." + config.getClass().getSimpleName().toLowerCase() + ".title")); this.parent = parent; this.config = config; - this.subConfig = subConfig; if (subConfig != null) { setupScreenFromConfig(subConfig, subConfig.getClass()); } else { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/AbstractConfigWidget.java b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/AbstractConfigWidget.java similarity index 81% rename from Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/AbstractConfigWidget.java rename to Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/AbstractConfigWidget.java index 0915523..91bdfa3 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/AbstractConfigWidget.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/AbstractConfigWidget.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.client.gui.config.widgets; +package com.hypherionmc.craterlib.client.gui.config.widgets; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; @@ -7,7 +7,7 @@ import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.EditBox; /** Copied from Cloth Config Lite - * https://github.com/shedaniel/cloth-config-lite/blob/1.17/src/main/java/me/shedaniel/clothconfiglite/impl/option/AbstractWidgetOption.java + * ... */ public class AbstractConfigWidget extends BaseWidget { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/BaseWidget.java b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/BaseWidget.java similarity index 90% rename from Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/BaseWidget.java rename to Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/BaseWidget.java index 9d15d5e..ed0e763 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/BaseWidget.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/BaseWidget.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.client.gui.config.widgets; +package com.hypherionmc.craterlib.client.gui.config.widgets; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.ChatFormatting; @@ -11,7 +11,7 @@ import net.minecraft.network.chat.TextColor; /** * Copied from Cloth Config Lite - * https://github.com/shedaniel/cloth-config-lite/blob/1.17/src/main/java/me/shedaniel/clothconfiglite/impl/option/BaseOption.java + * ... */ public class BaseWidget extends Option { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/InternalConfigButton.java b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/InternalConfigButton.java similarity index 90% rename from Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/InternalConfigButton.java rename to Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/InternalConfigButton.java index 45875ad..c4cf1e8 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/InternalConfigButton.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/InternalConfigButton.java @@ -1,13 +1,16 @@ -package me.hypherionmc.craterlib.client.gui.config.widgets; +package com.hypherionmc.craterlib.client.gui.config.widgets; +import com.hypherionmc.craterlib.client.gui.config.CraterConfigScreen; import com.mojang.blaze3d.vertex.PoseStack; -import me.hypherionmc.craterlib.client.gui.config.CraterConfigScreen; import net.minecraft.client.gui.components.AbstractButton; import net.minecraft.client.gui.narration.NarratedElementType; import net.minecraft.client.gui.narration.NarrationElementOutput; import net.minecraft.network.chat.Component; import org.jetbrains.annotations.NotNull; +/** + * @author HypherionSA + */ public class InternalConfigButton extends AbstractButton { CraterConfigScreen screen; diff --git a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/Option.java b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/Option.java similarity index 90% rename from Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/Option.java rename to Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/Option.java index 9fa04ee..25d6b13 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/Option.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/Option.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.client.gui.config.widgets; +package com.hypherionmc.craterlib.client.gui.config.widgets; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; @@ -16,7 +16,7 @@ import java.util.function.Supplier; /** * Copied from Cloth Config Lite - * https://github.com/shedaniel/cloth-config-lite/blob/1.17/src/main/java/me/shedaniel/clothconfiglite/impl/option/Option.java + * ... */ public abstract class Option extends AbstractContainerEventHandler { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/SubConfigWidget.java b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/SubConfigWidget.java similarity index 85% rename from Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/SubConfigWidget.java rename to Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/SubConfigWidget.java index d3e60fe..c284781 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/SubConfigWidget.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/SubConfigWidget.java @@ -1,14 +1,17 @@ -package me.hypherionmc.craterlib.client.gui.config.widgets; +package com.hypherionmc.craterlib.client.gui.config.widgets; +import com.hypherionmc.craterlib.client.gui.config.CraterConfigScreen; +import com.hypherionmc.craterlib.core.config.ModuleConfig; import com.mojang.blaze3d.vertex.PoseStack; -import me.hypherionmc.craterlib.client.gui.config.CraterConfigScreen; -import me.hypherionmc.craterlib.common.config.ModuleConfig; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; +/** + * @author HypherionSA + */ public class SubConfigWidget extends AbstractConfigWidget { private final Object subConfig; diff --git a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/TextConfigOption.java b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/TextConfigOption.java similarity index 86% rename from Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/TextConfigOption.java rename to Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/TextConfigOption.java index ec55e04..464e35c 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/TextConfigOption.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/TextConfigOption.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.client.gui.config.widgets; +package com.hypherionmc.craterlib.client.gui.config.widgets; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; @@ -8,7 +8,7 @@ import java.util.function.Function; /** * Copied from Cloth Config Lite - * https://github.com/shedaniel/cloth-config-lite/blob/1.17/src/main/java/me/shedaniel/clothconfiglite/impl/option/TextFieldOption.java + * ... */ public class TextConfigOption extends AbstractConfigWidget { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/ToggleButton.java b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/ToggleButton.java similarity index 80% rename from Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/ToggleButton.java rename to Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/ToggleButton.java index b2774d2..d32b0ea 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/ToggleButton.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/ToggleButton.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.client.gui.config.widgets; +package com.hypherionmc.craterlib.client.gui.config.widgets; import net.minecraft.client.gui.components.Button; import net.minecraft.network.chat.Component; @@ -8,7 +8,7 @@ import java.util.function.Function; /** * Copied from Cloth Config Lite - * https://github.com/shedaniel/cloth-config-lite/blob/1.17/src/main/java/me/shedaniel/clothconfiglite/impl/option/ToggleOption.java + * ... */ public class ToggleButton extends AbstractConfigWidget { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/WrappedEditBox.java b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/WrappedEditBox.java similarity index 82% rename from Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/WrappedEditBox.java rename to Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/WrappedEditBox.java index 03c6f45..13c026f 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/config/widgets/WrappedEditBox.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/WrappedEditBox.java @@ -1,14 +1,18 @@ -package me.hypherionmc.craterlib.client.gui.config.widgets; +package com.hypherionmc.craterlib.client.gui.config.widgets; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.network.chat.Component; +import org.jetbrains.annotations.NotNull; +/** + * @author HypherionSA + */ public class WrappedEditBox extends EditBox { - public WrappedEditBox(Font font, int i, int j, int k, int l, Component component) { + public WrappedEditBox(Font font, int i, int j, int k, int l, @NotNull Component component) { super(font, i, j, k, l, component); } diff --git a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/widgets/TimeSliderWidget.java b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/widgets/TimeSliderWidget.java similarity index 95% rename from Common/src/main/java/me/hypherionmc/craterlib/client/gui/widgets/TimeSliderWidget.java rename to Common/src/main/java/com/hypherionmc/craterlib/client/gui/widgets/TimeSliderWidget.java index ac5d8e7..7d5c60d 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/widgets/TimeSliderWidget.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/widgets/TimeSliderWidget.java @@ -1,9 +1,10 @@ -package me.hypherionmc.craterlib.client.gui.widgets; +package com.hypherionmc.craterlib.client.gui.widgets; import net.minecraft.client.gui.components.AbstractSliderButton; import net.minecraft.network.chat.Component; /** + * @author HypherionSA * A custom slider widget used for Time. Mostly used by the Hyper Lighting Smoke Machine */ public class TimeSliderWidget extends AbstractSliderButton { diff --git a/Common/src/main/java/com/hypherionmc/craterlib/client/registry/ClientRegistry.java b/Common/src/main/java/com/hypherionmc/craterlib/client/registry/ClientRegistry.java new file mode 100644 index 0000000..191877f --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/registry/ClientRegistry.java @@ -0,0 +1,60 @@ +package com.hypherionmc.craterlib.client.registry; + +import com.hypherionmc.craterlib.api.rendering.DyableBlock; +import com.hypherionmc.craterlib.api.rendering.ItemDyable; +import com.hypherionmc.craterlib.client.rendering.ItemColorHandler; +import com.hypherionmc.craterlib.core.platform.ClientPlatform; +import me.hypherionmc.craterlib.systems.reg.RegistrationProvider; +import net.minecraft.client.color.block.BlockColors; +import net.minecraft.client.color.item.ItemColors; +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import org.jetbrains.annotations.NotNull; + +/** + * @author HypherionSA + * Helper for registering Block and Item color handlers + */ +public class ClientRegistry { + + /** + * Register Block Color Handlers + * + * @param colors Existing block colors obtained from {@link com.hypherionmc.craterlib.api.event.client.ColorRegistrationEvent} + * @param blocks The blocks registered for the module + */ + public static void registerBlockColors(@NotNull BlockColors colors, @NotNull RegistrationProvider blocks) { + blocks.getEntries().forEach(blockRegistryObject -> { + if (blockRegistryObject.get() instanceof DyableBlock dyableBlock) { + colors.register(dyableBlock.dyeHandler(), (Block) dyableBlock); + } + }); + } + + /** + * Register Item Color Handlers + * + * @param colors Existing item colors obtained from {@link com.hypherionmc.craterlib.api.event.client.ColorRegistrationEvent} + * @param items The items registered for the module + */ + public static void registerItemColors(@NotNull ItemColors colors, @NotNull RegistrationProvider items) { + items.getEntries().forEach(itemRegistryObject -> { + if (itemRegistryObject.get() instanceof ItemDyable itemDyable) { + colors.register(new ItemColorHandler(), (Item) itemDyable); + } + }); + } + + /** + * Register a {@link net.minecraft.client.renderer.blockentity.BlockEntityRenderer} for a BlockEntity + * @param blockEntityType The BlockEntity the renderer belongs to + * @param blockEntityRendererFactory The renderer factory + */ + public static void registerBlockEntityRenderer(@NotNull BlockEntityType blockEntityType, @NotNull BlockEntityRendererProvider blockEntityRendererFactory) { + ClientPlatform.CLIENT_HELPER.registerBlockEntityRenderer(blockEntityType, blockEntityRendererFactory); + } + +} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/client/rendering/ItemColorHandler.java b/Common/src/main/java/com/hypherionmc/craterlib/client/rendering/ItemColorHandler.java similarity index 51% rename from Common/src/main/java/me/hypherionmc/craterlib/client/rendering/ItemColorHandler.java rename to Common/src/main/java/com/hypherionmc/craterlib/client/rendering/ItemColorHandler.java index c48c3a9..8d0de97 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/client/rendering/ItemColorHandler.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/rendering/ItemColorHandler.java @@ -1,33 +1,35 @@ -package me.hypherionmc.craterlib.client.rendering; +package com.hypherionmc.craterlib.client.rendering; -import me.hypherionmc.craterlib.api.rendering.ItemDyable; -import me.hypherionmc.craterlib.util.RenderUtils; +import com.hypherionmc.craterlib.api.rendering.ItemDyable; +import com.hypherionmc.craterlib.util.RenderUtils; import net.minecraft.client.color.item.ItemColor; import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.NotNull; /** + * @author HypherionSA * Helper Class for Dyable Items implementing a simple color handler */ public class ItemColorHandler implements ItemColor { /*** * Get the color for the Item/ItemStack - * @param stack - * @param tintIndex - * @return + * @param stack The ItemStack to read the color from + * @param tintIndex No Comment + * @return Integer value of the color */ @Override - public int getColor(ItemStack stack, int tintIndex) { + public int getColor(@NotNull ItemStack stack, int tintIndex) { return this.getColorFromStack(stack); } /** * Get the color for the specific items stack, or return BLACK (0) * - * @param stack - * @return + * @param stack The ItemStack to read the color from + * @return Integer value of the color */ - private int getColorFromStack(ItemStack stack) { + private int getColorFromStack(@NotNull ItemStack stack) { if (stack.getItem() instanceof ItemDyable itemDyable) { return RenderUtils.renderColorFromDye(itemDyable.getColor(stack)); } diff --git a/Common/src/main/java/me/hypherionmc/craterlib/common/blockentity/CraterBlockEntity.java b/Common/src/main/java/com/hypherionmc/craterlib/common/blockentity/CraterBlockEntity.java similarity index 81% rename from Common/src/main/java/me/hypherionmc/craterlib/common/blockentity/CraterBlockEntity.java rename to Common/src/main/java/com/hypherionmc/craterlib/common/blockentity/CraterBlockEntity.java index e6f9da6..dcb1692 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/common/blockentity/CraterBlockEntity.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/common/blockentity/CraterBlockEntity.java @@ -1,7 +1,7 @@ -package me.hypherionmc.craterlib.common.blockentity; +package com.hypherionmc.craterlib.common.blockentity; -import me.hypherionmc.craterlib.api.blockentities.caps.CapabilityHandler; -import me.hypherionmc.craterlib.api.blockentities.caps.ICraterCapProvider; +import com.hypherionmc.craterlib.api.blockentity.caps.CraterCapabilityHandler; +import com.hypherionmc.craterlib.api.blockentity.caps.ICraterCapProvider; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -15,7 +15,6 @@ import java.util.Optional; /** * @author HypherionSA - * @date 24/09/2022 * A Wrapped Block Entity to incorporate CraterLib's universal capability provider */ public class CraterBlockEntity extends BlockEntity implements ICraterCapProvider { @@ -43,7 +42,7 @@ public class CraterBlockEntity extends BlockEntity implements ICraterCapProvider } @Override - public Optional getCapability(CapabilityHandler handler, @Nullable Direction side) { + public Optional getCapability(CraterCapabilityHandler handler, @Nullable Direction side) { return Optional.empty(); } } diff --git a/Common/src/main/java/me/hypherionmc/craterlib/common/blockentity/FluidContainerBlockEntity.java b/Common/src/main/java/com/hypherionmc/craterlib/common/blockentity/FluidContainerBlockEntity.java similarity index 75% rename from Common/src/main/java/me/hypherionmc/craterlib/common/blockentity/FluidContainerBlockEntity.java rename to Common/src/main/java/com/hypherionmc/craterlib/common/blockentity/FluidContainerBlockEntity.java index bfb8e94..e80d931 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/common/blockentity/FluidContainerBlockEntity.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/common/blockentity/FluidContainerBlockEntity.java @@ -1,8 +1,8 @@ -package me.hypherionmc.craterlib.common.blockentity; +package com.hypherionmc.craterlib.common.blockentity; -import me.hypherionmc.craterlib.api.blockentities.caps.CapabilityHandler; -import me.hypherionmc.craterlib.platform.Platform; -import me.hypherionmc.craterlib.systems.fluid.CraterFluidTank; +import com.hypherionmc.craterlib.api.blockentity.caps.CraterCapabilityHandler; +import com.hypherionmc.craterlib.core.platform.Platform; +import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -13,6 +13,10 @@ import org.jetbrains.annotations.Nullable; import java.util.Optional; +/** + * @author HypherionSA + * A wrapped BlockEntity containing a fluid tank + */ public class FluidContainerBlockEntity extends CraterBlockEntity { public final CraterFluidTank fluidTank; @@ -41,8 +45,8 @@ public class FluidContainerBlockEntity extends CraterBlockEntity { } @Override - public Optional getCapability(CapabilityHandler handler, @Nullable Direction side) { - if (handler == CapabilityHandler.FLUID) { + public Optional getCapability(CraterCapabilityHandler handler, @Nullable Direction side) { + if (handler == CraterCapabilityHandler.FLUID) { return (Optional) Optional.of(fluidTank); } return super.getCapability(handler, side); diff --git a/Common/src/main/java/me/hypherionmc/craterlib/common/item/BlockItemDyable.java b/Common/src/main/java/com/hypherionmc/craterlib/common/item/BlockItemDyable.java similarity index 86% rename from Common/src/main/java/me/hypherionmc/craterlib/common/item/BlockItemDyable.java rename to Common/src/main/java/com/hypherionmc/craterlib/common/item/BlockItemDyable.java index 3643849..c6afc26 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/common/item/BlockItemDyable.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/common/item/BlockItemDyable.java @@ -1,10 +1,10 @@ -package me.hypherionmc.craterlib.common.item; +package com.hypherionmc.craterlib.common.item; -import me.hypherionmc.craterlib.api.rendering.DyableBlock; -import me.hypherionmc.craterlib.api.rendering.ItemDyable; -import me.hypherionmc.craterlib.platform.ClientPlatform; -import me.hypherionmc.craterlib.platform.Platform; -import me.hypherionmc.craterlib.platform.services.Environment; +import com.hypherionmc.craterlib.api.rendering.DyableBlock; +import com.hypherionmc.craterlib.api.rendering.ItemDyable; +import com.hypherionmc.craterlib.core.platform.ClientPlatform; +import com.hypherionmc.craterlib.core.platform.Platform; +import com.hypherionmc.craterlib.core.platform.services.Environment; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.item.BlockItem; @@ -19,6 +19,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** + * @author HypherionSA * Base Item for Blocks that implement @link {DyableBlock}. */ public class BlockItemDyable extends BlockItem implements ItemDyable { @@ -33,7 +34,6 @@ public class BlockItemDyable extends BlockItem implements ItemDyable { /** * Get the Item Color from the block - * * @return */ @Override diff --git a/Common/src/main/java/me/hypherionmc/craterlib/common/item/DyableWaterBottle.java b/Common/src/main/java/com/hypherionmc/craterlib/common/item/DyableWaterBottle.java similarity index 96% rename from Common/src/main/java/me/hypherionmc/craterlib/common/item/DyableWaterBottle.java rename to Common/src/main/java/com/hypherionmc/craterlib/common/item/DyableWaterBottle.java index d489d71..f2f38b6 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/common/item/DyableWaterBottle.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/common/item/DyableWaterBottle.java @@ -1,6 +1,6 @@ -package me.hypherionmc.craterlib.common.item; +package com.hypherionmc.craterlib.common.item; -import me.hypherionmc.craterlib.api.rendering.ItemDyable; +import com.hypherionmc.craterlib.api.rendering.ItemDyable; import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.server.level.ServerPlayer; import net.minecraft.stats.Stats; @@ -18,6 +18,7 @@ import net.minecraft.world.level.gameevent.GameEvent; import java.util.List; /** + * @author HypherionSA * Custom Water Bottle item that supports Dye and can be used as Dye */ public class DyableWaterBottle extends DyeItem implements ItemDyable { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/common/item/DyableWaterBucket.java b/Common/src/main/java/com/hypherionmc/craterlib/common/item/DyableWaterBucket.java similarity index 88% rename from Common/src/main/java/me/hypherionmc/craterlib/common/item/DyableWaterBucket.java rename to Common/src/main/java/com/hypherionmc/craterlib/common/item/DyableWaterBucket.java index 218308e..ccf8681 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/common/item/DyableWaterBucket.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/common/item/DyableWaterBucket.java @@ -1,12 +1,13 @@ -package me.hypherionmc.craterlib.common.item; +package com.hypherionmc.craterlib.common.item; -import me.hypherionmc.craterlib.api.rendering.ItemDyable; +import com.hypherionmc.craterlib.api.rendering.ItemDyable; import net.minecraft.world.item.BucketItem; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.material.Fluid; /** + * @author HypherionSA * A custom water bucket that supports Dye Colors */ public class DyableWaterBucket extends BucketItem implements ItemDyable { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/common/particles/WrappedSimpleParticleType.java b/Common/src/main/java/com/hypherionmc/craterlib/common/particles/WrappedSimpleParticleType.java similarity index 80% rename from Common/src/main/java/me/hypherionmc/craterlib/common/particles/WrappedSimpleParticleType.java rename to Common/src/main/java/com/hypherionmc/craterlib/common/particles/WrappedSimpleParticleType.java index 70d4fd4..4114d75 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/common/particles/WrappedSimpleParticleType.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/common/particles/WrappedSimpleParticleType.java @@ -1,8 +1,9 @@ -package me.hypherionmc.craterlib.common.particles; +package com.hypherionmc.craterlib.common.particles; import net.minecraft.core.particles.SimpleParticleType; /** + * @author HypherionSA * Helper Class for exposing a hidden constructor in the vanilla particle type */ public class WrappedSimpleParticleType extends SimpleParticleType { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/common/config/ConfigController.java b/Common/src/main/java/com/hypherionmc/craterlib/core/config/ConfigController.java similarity index 92% rename from Common/src/main/java/me/hypherionmc/craterlib/common/config/ConfigController.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/config/ConfigController.java index 7099961..1909a96 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/common/config/ConfigController.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/config/ConfigController.java @@ -1,12 +1,13 @@ -package me.hypherionmc.craterlib.common.config; +package com.hypherionmc.craterlib.core.config; -import me.hypherionmc.craterlib.CraterConstants; +import com.hypherionmc.craterlib.CraterConstants; import me.hypherionmc.moonconfig.core.file.FileWatcher; import java.io.Serializable; import java.util.HashMap; /** + * @author HypherionSA * Controls Config File Reloads and Events */ public final class ConfigController implements Serializable { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/common/config/ModuleConfig.java b/Common/src/main/java/com/hypherionmc/craterlib/core/config/ModuleConfig.java similarity index 97% rename from Common/src/main/java/me/hypherionmc/craterlib/common/config/ModuleConfig.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/config/ModuleConfig.java index 717897e..d1a7a19 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/common/config/ModuleConfig.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/config/ModuleConfig.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.common.config; +package com.hypherionmc.craterlib.core.config; import me.hypherionmc.moonconfig.core.CommentedConfig; import me.hypherionmc.moonconfig.core.Config; @@ -8,7 +8,9 @@ import me.hypherionmc.moonconfig.core.file.CommentedFileConfig; import java.io.File; /** - * Base Config class containing the save, upgrading and loading logic. All config classes must extend this class + * @author HypherionSA + * Base Config class containing the save, upgrading and loading logic. + * All config classes must extend this class */ public class ModuleConfig { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/common/config/annotations/NoConfigScreen.java b/Common/src/main/java/com/hypherionmc/craterlib/core/config/annotations/NoConfigScreen.java similarity index 75% rename from Common/src/main/java/me/hypherionmc/craterlib/common/config/annotations/NoConfigScreen.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/config/annotations/NoConfigScreen.java index 89ac2b3..4288ee0 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/common/config/annotations/NoConfigScreen.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/config/annotations/NoConfigScreen.java @@ -1,11 +1,10 @@ -package me.hypherionmc.craterlib.common.config.annotations; +package com.hypherionmc.craterlib.core.config.annotations; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** * @author HypherionSA - * @date 06/08/2022 * Allows Modules to disable Automatic Config Screens */ @Retention(RetentionPolicy.RUNTIME) diff --git a/Common/src/main/java/me/hypherionmc/craterlib/common/config/annotations/SubConfig.java b/Common/src/main/java/com/hypherionmc/craterlib/core/config/annotations/SubConfig.java similarity index 82% rename from Common/src/main/java/me/hypherionmc/craterlib/common/config/annotations/SubConfig.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/config/annotations/SubConfig.java index e0d9445..e3ec808 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/common/config/annotations/SubConfig.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/config/annotations/SubConfig.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.common.config.annotations; +package com.hypherionmc.craterlib.core.config.annotations; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -7,7 +7,6 @@ import java.lang.annotation.Target; /** * @author HypherionSA - * @date 03/07/2022 * Used to determine if a Config section should be rendered as a separate screen */ @Retention(RetentionPolicy.RUNTIME) diff --git a/Common/src/main/java/me/hypherionmc/craterlib/common/config/annotations/Syncable.java b/Common/src/main/java/com/hypherionmc/craterlib/core/config/annotations/Syncable.java similarity index 80% rename from Common/src/main/java/me/hypherionmc/craterlib/common/config/annotations/Syncable.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/config/annotations/Syncable.java index c30852c..838b35b 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/common/config/annotations/Syncable.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/config/annotations/Syncable.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.common.config.annotations; +package com.hypherionmc.craterlib.core.config.annotations; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -6,6 +6,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** + * @author HypherionSA * //TODO Currently unused, but to be used with Config Syncing in the future */ @Retention(RetentionPolicy.RUNTIME) diff --git a/Common/src/main/java/me/hypherionmc/craterlib/common/config/annotations/Tooltip.java b/Common/src/main/java/com/hypherionmc/craterlib/core/config/annotations/Tooltip.java similarity index 81% rename from Common/src/main/java/me/hypherionmc/craterlib/common/config/annotations/Tooltip.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/config/annotations/Tooltip.java index dd8e9ea..538471c 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/common/config/annotations/Tooltip.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/config/annotations/Tooltip.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.common.config.annotations; +package com.hypherionmc.craterlib.core.config.annotations; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -7,7 +7,6 @@ import java.lang.annotation.Target; /** * @author HypherionSA - * @date 03/07/2022 * Provides tooltips to the config GUI */ @Retention(RetentionPolicy.RUNTIME) diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/event/CraterEvent.java b/Common/src/main/java/com/hypherionmc/craterlib/core/event/CraterEvent.java new file mode 100644 index 0000000..4889ae3 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/event/CraterEvent.java @@ -0,0 +1,27 @@ +package com.hypherionmc.craterlib.core.event; + +import com.hypherionmc.craterlib.core.event.exception.CraterEventCancellationException; + +public abstract class CraterEvent { + + private boolean canceled = false; + + public abstract boolean canCancel(); + + public void cancelEvent() { + try { + if (!this.canCancel()) { + throw new CraterEventCancellationException("Tried to cancel non-cancelable event: " + this.getClass().getName()); + } + + this.canceled = true; + } catch (Exception e) { + e.printStackTrace(); + } + } + + public boolean wasCancelled() { + return this.canceled; + } + +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/event/CraterEventBus.java b/Common/src/main/java/com/hypherionmc/craterlib/core/event/CraterEventBus.java new file mode 100644 index 0000000..6251859 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/event/CraterEventBus.java @@ -0,0 +1,233 @@ +package com.hypherionmc.craterlib.core.event; + +import com.hypherionmc.craterlib.CraterConstants; +import com.hypherionmc.craterlib.core.event.annot.CraterEventListener; +import org.slf4j.Logger; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.*; +import java.util.function.Consumer; + +public final class CraterEventBus { + + private static final Logger LOGGER = CraterConstants.LOG; + + public static final CraterEventBus INSTANCE = new CraterEventBus(); + private final Map, List> events = new HashMap<>(); + + public void postEvent(CraterEvent event) { + if (eventsRegisteredForType(event.getClass())) { + List l = new ArrayList<>(events.get(event.getClass())); + l.sort((o1, o2) -> Integer.compare(o2.priority, o1.priority)); + + for (ListenerContainer c : l) { + c.notifyListener(event); + } + } + } + + public void registerEventListener(Class clazz) { + this.registerListenerMethods(this.getEventMethodsOf(clazz)); + } + + public void registerEventListener(Object object) { + this.registerListenerMethods(this.getEventMethodsOf(object)); + } + + private void registerListenerMethods(List methods) { + for (EventMethod m : methods) { + Consumer listener = (event) -> { + try { + m.method.invoke(m.parentObject, event); + } catch (Exception e) { + throw new RuntimeException(); + } + }; + + ListenerContainer container = new ListenerContainer(m.eventType, listener, m.priority); + container.listenerParentClassName = m.parentClass.getName(); + container.listenerMethodName = m.method.getName(); + this.registerListener(container); + } + } + + private List getEventMethodsOf(Object objectOrClass) { + List l = new ArrayList<>(); + try { + if (objectOrClass != null) { + boolean isClass = (objectOrClass instanceof Class); + Class c = isClass ? (Class) objectOrClass : objectOrClass.getClass(); + for (Method m : c.getMethods()) { + if (isClass && Modifier.isStatic(m.getModifiers())) { + EventMethod em = EventMethod.tryCreateFrom(new AnalyzedMethod(m, c)); + if (em != null) l.add(em); + } + if (!isClass && !Modifier.isStatic(m.getModifiers())) { + EventMethod em = EventMethod.tryCreateFrom(new AnalyzedMethod(m, objectOrClass)); + if (em != null) l.add(em); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return l; + } + + public void registerListener(Consumer listener, Class eventType) { + this.registerListener(listener, eventType, 0); + } + + public void registerListener(Consumer listener, Class eventType, int priority) { + this.registerListener(new ListenerContainer(eventType, listener, priority)); + } + + private void registerListener(ListenerContainer listenerContainer) { + try { + if (!eventsRegisteredForType(listenerContainer.eventType)) { + events.put(listenerContainer.eventType, new ArrayList<>()); + } + events.get(listenerContainer.eventType).add(listenerContainer); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public boolean eventsRegisteredForType(Class eventType) { + if (eventType == null) { + return false; + } + return this.events.containsKey(eventType); + } + + protected final static class ListenerContainer { + + private final Consumer listener; + private final Class eventType; + private final int priority; + private String listenerParentClassName = "[unknown]"; + private String listenerMethodName = "[unknown]"; + + private ListenerContainer(Class eventType, Consumer listener, int priority) { + this.eventType = eventType; + this.listener = listener; + this.priority = priority; + } + + private void notifyListener(CraterEvent event) { + try { + this.listener.accept(event); + } catch (Exception e) { + LOGGER.error("##################################"); + LOGGER.error("Failed to notify event listener!"); + LOGGER.error("Event Type: " + this.eventType.getName()); + LOGGER.error("Listener Parent Class Name: " + this.listenerParentClassName); + LOGGER.error("Listener Method Name In Parent Class: " + this.listenerMethodName); + LOGGER.error("##################################"); + e.printStackTrace(); + } + } + } + + protected static class AnalyzedMethod { + + protected Method method; + protected Object parentObject; + protected Class parentClass; + protected boolean isStatic; + protected List annotations = new ArrayList<>(); + + protected AnalyzedMethod() { + } + + protected AnalyzedMethod(Method method, Object parentObjectOrClass) { + this.method = method; + this.parentObject = parentObjectOrClass; + this.parentClass = this.tryGetParentClass(); + this.isStatic = Modifier.isStatic(method.getModifiers()); + collectMethodAnnotations(this.isStatic ? null : this.parentObject.getClass(), this.method, this.annotations); + } + + protected Class tryGetParentClass() { + if (this.parentObject instanceof Class) { + return (Class) this.parentObject; + } + return this.parentObject.getClass(); + } + + protected static void collectMethodAnnotations(Class c, Method m, List addToList) { + try { + addToList.addAll(Arrays.asList(m.getAnnotations())); + if (!Modifier.isStatic(m.getModifiers()) && (c != null)) { + Class sc = c.getSuperclass(); + if (sc != null) { + try { + Method sm = sc.getMethod(m.getName(), m.getParameterTypes()); + collectMethodAnnotations(sc, sm, addToList); + } catch (Exception ignored) {} + } + } + } catch (Exception ignored) {} + } + + } + + protected static class EventMethod extends AnalyzedMethod { + + protected final int priority; + protected final Class eventType; + + protected static EventMethod tryCreateFrom(AnalyzedMethod method) { + EventMethod em = new EventMethod(method); + return (em.eventType != null) ? em : null; + } + + protected EventMethod(AnalyzedMethod method) { + + super(); + this.method = method.method; + this.parentObject = method.parentObject; + this.parentClass = method.parentClass; + this.isStatic = method.isStatic; + this.annotations = method.annotations; + + this.priority = this.tryGetPriority(); + this.eventType = this.tryGetEventType(); + + } + + protected Class tryGetEventType() { + try { + if (this.method != null) { + Class[] params = this.method.getParameterTypes(); + if (params.length > 0) { + Class firstParam = params[0]; + if (CraterEvent.class.isAssignableFrom(firstParam)) { + return (Class) firstParam; + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + protected int tryGetPriority() { + try { + for (Annotation a : this.annotations) { + if (a instanceof CraterEventListener craterEventListener) { + return craterEventListener.priority(); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return 0; + } + + } + +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/event/CraterEventPriority.java b/Common/src/main/java/com/hypherionmc/craterlib/core/event/CraterEventPriority.java new file mode 100644 index 0000000..723b1cd --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/event/CraterEventPriority.java @@ -0,0 +1,13 @@ +package com.hypherionmc.craterlib.core.event; + +public class CraterEventPriority { + + public static final int LOWEST = -3; + public static final int LOWER = -2; + public static final int LOW = -1; + public static final int NORMAL = 0; + public static final int HIGH = 1; + public static final int HIGHER = 2; + public static final int HIGHEST = 3; + +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/event/annot/CraterEventListener.java b/Common/src/main/java/com/hypherionmc/craterlib/core/event/annot/CraterEventListener.java new file mode 100644 index 0000000..fb5291d --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/event/annot/CraterEventListener.java @@ -0,0 +1,11 @@ +package com.hypherionmc.craterlib.core.event.annot; + +import com.hypherionmc.craterlib.core.event.CraterEventPriority; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) +public @interface CraterEventListener { + int priority() default CraterEventPriority.NORMAL; +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/event/exception/CraterEventCancellationException.java b/Common/src/main/java/com/hypherionmc/craterlib/core/event/exception/CraterEventCancellationException.java new file mode 100644 index 0000000..cf63609 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/event/exception/CraterEventCancellationException.java @@ -0,0 +1,9 @@ +package com.hypherionmc.craterlib.core.event.exception; + +public class CraterEventCancellationException extends Exception { + + public CraterEventCancellationException(String msg) { + super(msg); + } + +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/event/package-info.java b/Common/src/main/java/com/hypherionmc/craterlib/core/event/package-info.java new file mode 100644 index 0000000..5ec1749 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/event/package-info.java @@ -0,0 +1,5 @@ +/** + * The event system code in this package is based on, and adapted from Acara (https://github.com/Keksuccino/acara/) + * and is licensed under MIT by Keksuccino + */ +package com.hypherionmc.craterlib.core.event; \ No newline at end of file diff --git a/Common/src/main/java/me/hypherionmc/craterlib/network/CraterNetworkHandler.java b/Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterNetworkHandler.java similarity index 84% rename from Common/src/main/java/me/hypherionmc/craterlib/network/CraterNetworkHandler.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterNetworkHandler.java index bf0c527..f79717b 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/network/CraterNetworkHandler.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterNetworkHandler.java @@ -1,7 +1,7 @@ -package me.hypherionmc.craterlib.network; +package com.hypherionmc.craterlib.core.network; -import me.hypherionmc.craterlib.platform.ClientPlatform; -import me.hypherionmc.craterlib.platform.Platform; +import com.hypherionmc.craterlib.core.platform.ClientPlatform; +import com.hypherionmc.craterlib.core.platform.Platform; import net.minecraft.network.protocol.Packet; import net.minecraft.server.level.ServerPlayer; @@ -9,7 +9,6 @@ import java.util.function.Supplier; /** * @author HypherionSA - * @date 24/09/2022 */ public interface CraterNetworkHandler { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/network/CraterPacket.java b/Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterPacket.java similarity index 90% rename from Common/src/main/java/me/hypherionmc/craterlib/network/CraterPacket.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterPacket.java index ea8b4f1..77be846 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/network/CraterPacket.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterPacket.java @@ -1,11 +1,10 @@ -package me.hypherionmc.craterlib.network; +package com.hypherionmc.craterlib.core.network; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.entity.player.Player; /** * @author HypherionSA - * @date 24/09/2022 */ public interface CraterPacket> { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/network/PacketDirection.java b/Common/src/main/java/com/hypherionmc/craterlib/core/network/PacketDirection.java similarity index 60% rename from Common/src/main/java/me/hypherionmc/craterlib/network/PacketDirection.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/network/PacketDirection.java index 06c9393..f26eb0b 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/network/PacketDirection.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/network/PacketDirection.java @@ -1,8 +1,7 @@ -package me.hypherionmc.craterlib.network; +package com.hypherionmc.craterlib.core.network; /** * @author HypherionSA - * @date 24/09/2022 */ public enum PacketDirection { TO_SERVER, diff --git a/Common/src/main/java/me/hypherionmc/craterlib/platform/ClientPlatform.java b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/ClientPlatform.java similarity index 75% rename from Common/src/main/java/me/hypherionmc/craterlib/platform/ClientPlatform.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/platform/ClientPlatform.java index 3265b6e..d30f690 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/platform/ClientPlatform.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/ClientPlatform.java @@ -1,13 +1,12 @@ -package me.hypherionmc.craterlib.platform; +package com.hypherionmc.craterlib.core.platform; -import me.hypherionmc.craterlib.CraterConstants; -import me.hypherionmc.craterlib.platform.services.LibClientHelper; +import com.hypherionmc.craterlib.CraterConstants; +import com.hypherionmc.craterlib.core.platform.services.LibClientHelper; import java.util.ServiceLoader; /** * @author HypherionSA - * @date 25/09/2022 */ public class ClientPlatform { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/platform/Platform.java b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/Platform.java similarity index 66% rename from Common/src/main/java/me/hypherionmc/craterlib/platform/Platform.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/platform/Platform.java index dec7091..e99a6e0 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/platform/Platform.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/Platform.java @@ -1,12 +1,15 @@ -package me.hypherionmc.craterlib.platform; +package com.hypherionmc.craterlib.core.platform; -import me.hypherionmc.craterlib.CraterConstants; -import me.hypherionmc.craterlib.platform.services.ILoaderHelper; -import me.hypherionmc.craterlib.platform.services.LibCommonHelper; -import me.hypherionmc.craterlib.platform.services.LibFluidHelper; +import com.hypherionmc.craterlib.CraterConstants; +import com.hypherionmc.craterlib.core.platform.services.ILoaderHelper; +import com.hypherionmc.craterlib.core.platform.services.LibCommonHelper; +import com.hypherionmc.craterlib.core.platform.services.LibFluidHelper; import java.util.ServiceLoader; +/** + * @author HypherionSA + */ public class Platform { public static final ILoaderHelper LOADER = load(ILoaderHelper.class); diff --git a/Common/src/main/java/me/hypherionmc/craterlib/platform/services/Environment.java b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/Environment.java similarity index 57% rename from Common/src/main/java/me/hypherionmc/craterlib/platform/services/Environment.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/Environment.java index 07d97e2..d837498 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/platform/services/Environment.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/Environment.java @@ -1,8 +1,7 @@ -package me.hypherionmc.craterlib.platform.services; +package com.hypherionmc.craterlib.core.platform.services; /** * @author HypherionSA - * @date 24/09/2022 */ public enum Environment { CLIENT, diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/ILoaderHelper.java b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/ILoaderHelper.java new file mode 100644 index 0000000..29362d4 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/ILoaderHelper.java @@ -0,0 +1,19 @@ +package com.hypherionmc.craterlib.core.platform.services; + +import java.io.File; + +/** + * @author HypherionSA + * Helper class to provide information about the ModLoader + */ +public interface ILoaderHelper { + + boolean isFabric(); + String getGameVersion(); + File getGameFolder(); + File getConfigFolder(); + File getModsFolder(); + Environment getEnvironment(); + boolean isModLoaded(String modid); + boolean isDevEnv(); +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibClientHelper.java b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibClientHelper.java new file mode 100644 index 0000000..6a13d50 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibClientHelper.java @@ -0,0 +1,46 @@ +package com.hypherionmc.craterlib.core.platform.services; + +import com.hypherionmc.craterlib.common.item.BlockItemDyable; +import com.hypherionmc.craterlib.core.network.CraterPacket; +import me.hypherionmc.craterlib.systems.reg.RegistryObject; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.network.Connection; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.function.Function; + +/** + * @author HypherionSA + */ +public interface LibClientHelper { + + void registerItemProperty(@NotNull BlockItemDyable item, @NotNull String property); + + void registerCustomRenderTypes( + @NotNull Collection> blocks, + @NotNull Collection> items + ); + + Minecraft getClientInstance(); + + Player getClientPlayer(); + + Level getClientLevel(); + + Connection getClientConnection(); + + void registerClientReceiver(@NotNull ResourceLocation channelName, @NotNull Function> factory); + + void registerBlockEntityRenderer(@NotNull BlockEntityType blockEntityType, @NotNull BlockEntityRendererProvider blockEntityRendererFactory); + +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibCommonHelper.java b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibCommonHelper.java new file mode 100644 index 0000000..885f749 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibCommonHelper.java @@ -0,0 +1,40 @@ +package com.hypherionmc.craterlib.core.platform.services; + +import com.hypherionmc.craterlib.api.blockentity.caps.CraterCapabilityHandler; +import com.hypherionmc.craterlib.core.network.CraterNetworkHandler; +import com.hypherionmc.craterlib.core.network.CraterPacket; +import net.minecraft.core.Direction; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.level.block.entity.BlockEntity; +import org.apache.commons.lang3.function.TriFunction; + +import javax.annotation.Nullable; +import java.util.Optional; +import java.util.function.Consumer; +import java.util.function.Function; + +/** + * @author HypherionSA + */ +public interface LibCommonHelper { + + CraterNetworkHandler createPacketHandler(String modid); + + MinecraftServer getMCServer(); + + void openMenu(ServerPlayer player, MenuProvider menu, @Nullable Consumer initialData); + + MenuType createMenuType(TriFunction constructor); + + /* FABRIC ONLY */ + void registerServerReceiver(ResourceLocation channelName, Function> factory); + + Optional getCapabilityHandler(BlockEntity entity, Direction side, CraterCapabilityHandler capability); +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibFluidHelper.java b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibFluidHelper.java new file mode 100644 index 0000000..42c1308 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibFluidHelper.java @@ -0,0 +1,33 @@ +package com.hypherionmc.craterlib.core.platform.services; + +import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank; +import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder; +import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.material.Fluid; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * @author HypherionSA + */ +public interface LibFluidHelper { + + CraterFluidTank createFluidTank(int capacity); + + CraterFluidTank createFluidTank(int capacity, Fluid... validFluids); + + boolean interactWithFluidHandler(Player player, InteractionHand hand, ICraterFluidHandler fluidHandler); + + boolean interactWithFluidHandler(@NotNull Player player, @NotNull InteractionHand hand, @NotNull Level level, @NotNull BlockPos pos, @Nullable Direction side); + + TextureAtlasSprite getFluidTexture(FluidHolder fluidHolder); + + int getFluidColor(Fluid fluid); + +} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/systems/energy/CustomEnergyStorage.java b/Common/src/main/java/com/hypherionmc/craterlib/core/systems/energy/CustomEnergyStorage.java similarity index 97% rename from Common/src/main/java/me/hypherionmc/craterlib/systems/energy/CustomEnergyStorage.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/systems/energy/CustomEnergyStorage.java index 572cdf2..8c873d7 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/systems/energy/CustomEnergyStorage.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/systems/energy/CustomEnergyStorage.java @@ -1,8 +1,9 @@ -package me.hypherionmc.craterlib.systems.energy; +package com.hypherionmc.craterlib.core.systems.energy; import net.minecraft.nbt.CompoundTag; /*** + * @author HypherionSA * Loosely based on the Forge Energy System */ public class CustomEnergyStorage implements ICraterEnergyStorage { diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/systems/energy/ICraterEnergyStorage.java b/Common/src/main/java/com/hypherionmc/craterlib/core/systems/energy/ICraterEnergyStorage.java new file mode 100644 index 0000000..dd16e67 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/systems/energy/ICraterEnergyStorage.java @@ -0,0 +1,24 @@ +package com.hypherionmc.craterlib.core.systems.energy; + +import net.minecraft.nbt.CompoundTag; + +/** + * @author HypherionSA + */ +public interface ICraterEnergyStorage { + + default CompoundTag writeNBT(CompoundTag tag) { return tag; } + default void readNBT(CompoundTag tag) {} + + int receiveEnergy(int toReceive, boolean test); + int extractEnergy(int toExtract, boolean test); + + int getPowerLevel(); + + int getMaxInput(); + + int getMaxOutput(); + + int getPowerCapacity(); + +} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/systems/fluid/CraterFluidTank.java b/Common/src/main/java/com/hypherionmc/craterlib/core/systems/fluid/CraterFluidTank.java similarity index 95% rename from Common/src/main/java/me/hypherionmc/craterlib/systems/fluid/CraterFluidTank.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/systems/fluid/CraterFluidTank.java index a1cfa07..3921e5d 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/systems/fluid/CraterFluidTank.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/systems/fluid/CraterFluidTank.java @@ -1,12 +1,14 @@ -package me.hypherionmc.craterlib.systems.fluid; +package com.hypherionmc.craterlib.core.systems.fluid; -import me.hypherionmc.craterlib.util.FluidUtils; +import com.hypherionmc.craterlib.util.FluidUtils; import net.minecraft.nbt.CompoundTag; -import java.util.function.Consumer; import java.util.function.Predicate; -import java.util.function.Supplier; +/** + * @author HypherionSA + * A cross Modloader FluidTank implementation + */ public class CraterFluidTank implements ICraterFluidHandler { private final int capacity; diff --git a/Common/src/main/java/me/hypherionmc/craterlib/systems/fluid/FluidHolder.java b/Common/src/main/java/com/hypherionmc/craterlib/core/systems/fluid/FluidHolder.java similarity index 88% rename from Common/src/main/java/me/hypherionmc/craterlib/systems/fluid/FluidHolder.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/systems/fluid/FluidHolder.java index 92b081e..21c211b 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/systems/fluid/FluidHolder.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/systems/fluid/FluidHolder.java @@ -1,12 +1,16 @@ -package me.hypherionmc.craterlib.systems.fluid; +package com.hypherionmc.craterlib.core.systems.fluid; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.Fluids; import org.jetbrains.annotations.NotNull; +/** + * @author HypherionSA + * Cross Modloader "FluidStack" implementation + */ public class FluidHolder { - private Fluid fluid; + private final Fluid fluid; private int amount; public FluidHolder(FluidHolder holder) { diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/systems/fluid/ICraterFluidHandler.java b/Common/src/main/java/com/hypherionmc/craterlib/core/systems/fluid/ICraterFluidHandler.java new file mode 100644 index 0000000..2f56fc9 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/systems/fluid/ICraterFluidHandler.java @@ -0,0 +1,35 @@ +package com.hypherionmc.craterlib.core.systems.fluid; + +import net.minecraft.nbt.CompoundTag; + +/** + * @author HypherionSA + * Cross modloader fluid handler implementation + */ +public interface ICraterFluidHandler { + + enum FluidAction { + EXECUTE, + SIMULATE; + + public boolean simulate() { + return this == SIMULATE; + } + + public boolean execute() { + return this == EXECUTE; + } + } + + int insert(FluidHolder fluidHolder, CraterFluidTank.FluidAction action); + FluidHolder extract(FluidHolder fluidHolder, CraterFluidTank.FluidAction action); + FluidHolder extract(int amount, CraterFluidTank.FluidAction action); + boolean isTankEmpty(); + FluidHolder getFluidInTank(); + int getTankLevel(); + int getTankCapacity(); + + default CompoundTag writeToNBT(CompoundTag tag) { return tag; } + + default void readFromNBT(CompoundTag tag) {}; +} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/systems/internal/CreativeTabRegistry.java b/Common/src/main/java/com/hypherionmc/craterlib/core/systems/internal/CreativeTabRegistry.java similarity index 74% rename from Common/src/main/java/me/hypherionmc/craterlib/systems/internal/CreativeTabRegistry.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/systems/internal/CreativeTabRegistry.java index c3db7d6..eb25d37 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/systems/internal/CreativeTabRegistry.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/systems/internal/CreativeTabRegistry.java @@ -1,15 +1,17 @@ -package me.hypherionmc.craterlib.systems.internal; +package com.hypherionmc.craterlib.core.systems.internal; -import me.hypherionmc.craterlib.api.inventory.CraterCreativeModeTab; +import com.hypherionmc.craterlib.api.creativetab.CraterCreativeModeTab; import net.minecraft.world.level.ItemLike; import org.apache.commons.lang3.tuple.Pair; -import org.jetbrains.annotations.ApiStatus; import java.util.ArrayList; import java.util.List; import java.util.function.Supplier; -@ApiStatus.Internal +/** + * @author HypherionSA + * A helper class to make registering creative tabs easier across modloaders + */ public class CreativeTabRegistry { private static final List TABS = new ArrayList<>(); @@ -25,7 +27,7 @@ public class CreativeTabRegistry { TABS.add(tab); } - public static List getTABS() { + public static List getTabs() { return TABS; } diff --git a/Common/src/main/java/me/hypherionmc/craterlib/systems/inventory/SimpleInventory.java b/Common/src/main/java/com/hypherionmc/craterlib/core/systems/inventory/SimpleInventory.java similarity index 95% rename from Common/src/main/java/me/hypherionmc/craterlib/systems/inventory/SimpleInventory.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/systems/inventory/SimpleInventory.java index 0287162..b578828 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/systems/inventory/SimpleInventory.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/systems/inventory/SimpleInventory.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.systems.inventory; +package com.hypherionmc.craterlib.core.systems.inventory; import com.google.common.base.Preconditions; import net.minecraft.core.NonNullList; @@ -11,7 +11,7 @@ import net.minecraft.world.item.ItemStack; /** * @author HypherionSA - * @date 24/09/2022 + * A crossmodloader inventory implementation */ public class SimpleInventory implements Clearable { diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/systems/reg/package-info.java b/Common/src/main/java/com/hypherionmc/craterlib/core/systems/reg/package-info.java new file mode 100644 index 0000000..ff0deab --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/systems/reg/package-info.java @@ -0,0 +1,7 @@ +/** + * So, if you got here, most probably you want to see the registration system of this mod. + * Well, you are in the wrong place. + * This mod uses RegistrationUtils for + * all its registration needs. + */ +package com.hypherionmc.craterlib.core.systems.reg; diff --git a/Common/src/main/java/me/hypherionmc/craterlib/mixin/colors/BlockColorsMixin.java b/Common/src/main/java/com/hypherionmc/craterlib/mixin/colors/BlockColorsMixin.java similarity index 65% rename from Common/src/main/java/me/hypherionmc/craterlib/mixin/colors/BlockColorsMixin.java rename to Common/src/main/java/com/hypherionmc/craterlib/mixin/colors/BlockColorsMixin.java index 798f931..b7ba9e3 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/mixin/colors/BlockColorsMixin.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/mixin/colors/BlockColorsMixin.java @@ -1,7 +1,7 @@ -package me.hypherionmc.craterlib.mixin.colors; +package com.hypherionmc.craterlib.mixin.colors; -import me.hypherionmc.craterlib.client.events.ColorRegistrationEvent; -import me.hypherionmc.craterlib.events.CraterEventBus; +import com.hypherionmc.craterlib.api.event.client.ColorRegistrationEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; import net.minecraft.client.color.block.BlockColors; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -10,7 +10,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; /** * @author HypherionSA - * @date 17/06/2022 * Mixin to accommodate Block Color Registration across multiple Modloaders */ @Mixin(BlockColors.class) @@ -18,11 +17,11 @@ public class BlockColorsMixin { /** * Inject into Vanilla code to fire off our event - * @param cir */ @Inject(method = "createDefault", at = @At("RETURN")) private static void injectBlockColors(CallbackInfoReturnable cir) { - CraterEventBus.post(new ColorRegistrationEvent.BLOCKS(cir.getReturnValue())); + ColorRegistrationEvent.Blocks blockEvent = new ColorRegistrationEvent.Blocks(cir.getReturnValue()); + CraterEventBus.INSTANCE.postEvent(blockEvent); } } diff --git a/Common/src/main/java/me/hypherionmc/craterlib/mixin/colors/ItemColorsMixin.java b/Common/src/main/java/com/hypherionmc/craterlib/mixin/colors/ItemColorsMixin.java similarity index 68% rename from Common/src/main/java/me/hypherionmc/craterlib/mixin/colors/ItemColorsMixin.java rename to Common/src/main/java/com/hypherionmc/craterlib/mixin/colors/ItemColorsMixin.java index a4dba23..79f5f0f 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/mixin/colors/ItemColorsMixin.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/mixin/colors/ItemColorsMixin.java @@ -1,7 +1,7 @@ -package me.hypherionmc.craterlib.mixin.colors; +package com.hypherionmc.craterlib.mixin.colors; -import me.hypherionmc.craterlib.client.events.ColorRegistrationEvent; -import me.hypherionmc.craterlib.events.CraterEventBus; +import com.hypherionmc.craterlib.api.event.client.ColorRegistrationEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; import net.minecraft.client.color.block.BlockColors; import net.minecraft.client.color.item.ItemColors; import org.spongepowered.asm.mixin.Mixin; @@ -11,7 +11,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; /** * @author HypherionSA - * @date 17/06/2022 * Mixin to accommodate Item Color Registration across multiple Modloaders */ @Mixin(ItemColors.class) @@ -23,7 +22,8 @@ public class ItemColorsMixin { */ @Inject(method = "createDefault", at = @At("RETURN")) private static void injectItemColors(BlockColors $$0, CallbackInfoReturnable cir) { - CraterEventBus.post(new ColorRegistrationEvent.ITEMS(cir.getReturnValue())); + ColorRegistrationEvent.Items itemColorEvent = new ColorRegistrationEvent.Items(cir.getReturnValue()); + CraterEventBus.INSTANCE.postEvent(itemColorEvent); } } diff --git a/Common/src/main/java/me/hypherionmc/craterlib/util/BlockStateUtils.java b/Common/src/main/java/com/hypherionmc/craterlib/util/BlockStateUtils.java similarity index 55% rename from Common/src/main/java/me/hypherionmc/craterlib/util/BlockStateUtils.java rename to Common/src/main/java/com/hypherionmc/craterlib/util/BlockStateUtils.java index dc333d9..a364334 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/util/BlockStateUtils.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/util/BlockStateUtils.java @@ -1,17 +1,21 @@ -package me.hypherionmc.craterlib.util; +package com.hypherionmc.craterlib.util; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import java.util.function.ToIntFunction; +/** + * @author HypherionSA + * Helper class to create light levels from BlockState values + */ public class BlockStateUtils { - public static ToIntFunction createLightLevelFromLitBlockState(int litLevel) { + public static ToIntFunction lightLevelFromLitBlockState(int litLevel) { return state -> state.getValue(BlockStateProperties.LIT) ? litLevel : 0; } - public static ToIntFunction createLightLevelFromPoweredBlockState(int litLevel) { + public static ToIntFunction lightLevelFromPoweredBlockState(int litLevel) { return state -> state.getValue(BlockStateProperties.POWERED) ? litLevel : 0; } diff --git a/Common/src/main/java/me/hypherionmc/craterlib/util/ColorPropertyFunction.java b/Common/src/main/java/com/hypherionmc/craterlib/util/ColorPropertyFunction.java similarity index 89% rename from Common/src/main/java/me/hypherionmc/craterlib/util/ColorPropertyFunction.java rename to Common/src/main/java/com/hypherionmc/craterlib/util/ColorPropertyFunction.java index adfe18f..437b91d 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/util/ColorPropertyFunction.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/util/ColorPropertyFunction.java @@ -1,6 +1,6 @@ -package me.hypherionmc.craterlib.util; +package com.hypherionmc.craterlib.util; -import me.hypherionmc.craterlib.common.item.BlockItemDyable; +import com.hypherionmc.craterlib.common.item.BlockItemDyable; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.item.ClampedItemPropertyFunction; import net.minecraft.util.Mth; @@ -11,7 +11,6 @@ import org.jetbrains.annotations.Nullable; /** * @author HypherionSA - * @date 03/07/2022 */ public class ColorPropertyFunction implements ClampedItemPropertyFunction { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/util/FluidUtils.java b/Common/src/main/java/com/hypherionmc/craterlib/util/FluidUtils.java similarity index 86% rename from Common/src/main/java/me/hypherionmc/craterlib/util/FluidUtils.java rename to Common/src/main/java/com/hypherionmc/craterlib/util/FluidUtils.java index bb2dd3c..d79be3e 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/util/FluidUtils.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/util/FluidUtils.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.util; +package com.hypherionmc.craterlib.util; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.CompoundTag; @@ -7,6 +7,10 @@ import net.minecraft.world.item.DyeColor; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.Fluids; +/** + * @author HypherionSA + * Utility class for interacting with fluids across modloaders + */ public class FluidUtils { public static int fluidColorFromDye(DyeColor color) { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/util/LangUtils.java b/Common/src/main/java/com/hypherionmc/craterlib/util/LangUtils.java similarity index 82% rename from Common/src/main/java/me/hypherionmc/craterlib/util/LangUtils.java rename to Common/src/main/java/com/hypherionmc/craterlib/util/LangUtils.java index 25e3699..fbba2ec 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/util/LangUtils.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/util/LangUtils.java @@ -1,8 +1,12 @@ -package me.hypherionmc.craterlib.util; +package com.hypherionmc.craterlib.util; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; +/** + * @author HypherionSA + * Utility class to handle Translation Keys and Formatting + */ public class LangUtils { public static Component getTooltipTitle(String key) { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/util/MathUtils.java b/Common/src/main/java/com/hypherionmc/craterlib/util/MathUtils.java similarity index 90% rename from Common/src/main/java/me/hypherionmc/craterlib/util/MathUtils.java rename to Common/src/main/java/com/hypherionmc/craterlib/util/MathUtils.java index 83bcfa5..318e92b 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/util/MathUtils.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/util/MathUtils.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.util; +package com.hypherionmc.craterlib.util; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -6,6 +6,10 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; +/** + * @author HypherionSA + * Utility class to handle various mathematical functions + */ public class MathUtils { public static VoxelShape rotateShape(Direction from, Direction to, VoxelShape shape) { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/util/OptifineUtils.java b/Common/src/main/java/com/hypherionmc/craterlib/util/OptifineUtils.java similarity index 67% rename from Common/src/main/java/me/hypherionmc/craterlib/util/OptifineUtils.java rename to Common/src/main/java/com/hypherionmc/craterlib/util/OptifineUtils.java index bddc658..9b9e31f 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/util/OptifineUtils.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/util/OptifineUtils.java @@ -1,30 +1,32 @@ -package me.hypherionmc.craterlib.util; +package com.hypherionmc.craterlib.util; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +/** + * @author HypherionSA + * Utility class for Optifine compatibility + */ public class OptifineUtils { - private static boolean hasOptifine = false; + private static final boolean hasOptifine = checkOptifine(); - public static void checkOptifine() { + private static boolean checkOptifine() { try { - Class ofConfigClass = Class.forName("net.optifine.Config"); - hasOptifine = true; - return; + Class ofConfigClass = Class.forName("net.optifine.Config"); + return true; } catch (ClassNotFoundException e) { // Optifine is probably not present. Ignore the error - hasOptifine = false; - return; + return false; } catch (Exception e) { e.printStackTrace(); } - hasOptifine = false; + return false; } public static boolean isRenderRegions() { try { - Class ofConfigClass = Class.forName("net.optifine.Config"); + Class ofConfigClass = Class.forName("net.optifine.Config"); Method rrField = ofConfigClass.getMethod("isRenderRegions"); return (boolean) rrField.invoke(null); } catch (ClassNotFoundException | InvocationTargetException | NoSuchMethodException | diff --git a/Common/src/main/java/me/hypherionmc/craterlib/util/RenderUtils.java b/Common/src/main/java/com/hypherionmc/craterlib/util/RenderUtils.java similarity index 94% rename from Common/src/main/java/me/hypherionmc/craterlib/util/RenderUtils.java rename to Common/src/main/java/com/hypherionmc/craterlib/util/RenderUtils.java index be98707..88e3c12 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/util/RenderUtils.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/util/RenderUtils.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.util; +package com.hypherionmc.craterlib.util; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; @@ -7,6 +7,10 @@ import org.joml.Vector4f; import java.awt.*; +/** + * @author HypherionSA + * Utility class for various rendering functions + */ public class RenderUtils { public static Vector4f colorIntToRGBA(int color) { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/CraterConstants.java b/Common/src/main/java/me/hypherionmc/craterlib/CraterConstants.java deleted file mode 100644 index 12b9a36..0000000 --- a/Common/src/main/java/me/hypherionmc/craterlib/CraterConstants.java +++ /dev/null @@ -1,10 +0,0 @@ -package me.hypherionmc.craterlib; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class CraterConstants { - public static final String MOD_ID = "craterlib"; - public static final String MOD_NAME = "CraterLib"; - public static final Logger LOG = LogManager.getLogger(MOD_NAME); -} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/api/blockentities/caps/CapabilityHandler.java b/Common/src/main/java/me/hypherionmc/craterlib/api/blockentities/caps/CapabilityHandler.java deleted file mode 100644 index 38896fa..0000000 --- a/Common/src/main/java/me/hypherionmc/craterlib/api/blockentities/caps/CapabilityHandler.java +++ /dev/null @@ -1,11 +0,0 @@ -package me.hypherionmc.craterlib.api.blockentities.caps; - -/** - * @author HypherionSA - * Wrapper Class for Forge Capabilities to remove duplicate code from Modules - */ -public enum CapabilityHandler { - ENERGY, - ITEM, - FLUID -} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/client/events/ColorRegistrationEvent.java b/Common/src/main/java/me/hypherionmc/craterlib/client/events/ColorRegistrationEvent.java deleted file mode 100644 index bd8f6b7..0000000 --- a/Common/src/main/java/me/hypherionmc/craterlib/client/events/ColorRegistrationEvent.java +++ /dev/null @@ -1,44 +0,0 @@ -package me.hypherionmc.craterlib.client.events; - -import me.hypherionmc.craterlib.events.Event; -import net.minecraft.client.color.block.BlockColors; -import net.minecraft.client.color.item.ItemColors; - -/** - * @author HypherionSA - * @date 17/06/2022 - * A wrapped event to allow Block and Item Color Registration - */ -public class ColorRegistrationEvent { - - public static class BLOCKS extends Event { - - private BlockColors colors; - - public BLOCKS() {} - - public BLOCKS(BlockColors colors) { - this.colors = colors; - } - - public BlockColors getColors() { - return colors; - } - } - - public static class ITEMS extends Event { - - private ItemColors colors; - - public ITEMS() {} - - public ITEMS(ItemColors colors) { - this.colors = colors; - } - - public ItemColors getColors() { - return colors; - } - } - -} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/client/registry/ClientRegistry.java b/Common/src/main/java/me/hypherionmc/craterlib/client/registry/ClientRegistry.java deleted file mode 100644 index 60fa814..0000000 --- a/Common/src/main/java/me/hypherionmc/craterlib/client/registry/ClientRegistry.java +++ /dev/null @@ -1,53 +0,0 @@ -package me.hypherionmc.craterlib.client.registry; - -import me.hypherionmc.craterlib.api.rendering.DyableBlock; -import me.hypherionmc.craterlib.api.rendering.ItemDyable; -import me.hypherionmc.craterlib.client.rendering.ItemColorHandler; -import me.hypherionmc.craterlib.platform.ClientPlatform; -import me.hypherionmc.craterlib.systems.reg.RegistrationProvider; -import net.minecraft.client.color.block.BlockColors; -import net.minecraft.client.color.item.ItemColors; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityType; - -/** - * Helper for registering Block and Item color handlers - */ -public class ClientRegistry { - - /** - * Register Block Color Handlers - * - * @param colors - * @param blocks - */ - public static void registerBlockColors(BlockColors colors, RegistrationProvider blocks) { - blocks.getEntries().forEach(blockRegistryObject -> { - if (blockRegistryObject.get() instanceof DyableBlock dyableBlock) { - colors.register(dyableBlock.dyeHandler(), (Block) dyableBlock); - } - }); - } - - /** - * Register Item Color Handlers - * - * @param colors - * @param items - */ - public static void registerItemColors(ItemColors colors, RegistrationProvider items) { - items.getEntries().forEach(itemRegistryObject -> { - if (itemRegistryObject.get() instanceof ItemDyable itemDyable) { - colors.register(new ItemColorHandler(), (Item) itemDyable); - } - }); - } - - public static void registerBlockEntityRenderer(BlockEntityType blockEntityType, BlockEntityRendererProvider blockEntityRendererFactory) { - ClientPlatform.CLIENT_HELPER.registerBlockEntityRenderer(blockEntityType, blockEntityRendererFactory); - } - -} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/common/block/ShapeShiftingBlock.java b/Common/src/main/java/me/hypherionmc/craterlib/common/block/ShapeShiftingBlock.java deleted file mode 100644 index fdcc451..0000000 --- a/Common/src/main/java/me/hypherionmc/craterlib/common/block/ShapeShiftingBlock.java +++ /dev/null @@ -1,37 +0,0 @@ -package me.hypherionmc.craterlib.common.block; - -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.Shapes; -import net.minecraft.world.phys.shapes.VoxelShape; - -public abstract class ShapeShiftingBlock extends Block { - - public ShapeShiftingBlock(Properties properties) { - super(properties); - } - - abstract protected VoxelShape getVoxelShape(BlockState state); - - protected static VoxelShape mergeShapes(VoxelShape shape, VoxelShape shape2) { - return Shapes.or(shape, shape2); - } - - @Override - public VoxelShape getCollisionShape(BlockState state, BlockGetter levelReader, BlockPos blockPos, CollisionContext collisionContext) { - return getVoxelShape(state); - } - - @Override - public VoxelShape getShape(BlockState state, BlockGetter levelReader, BlockPos blockPos, CollisionContext collisionContext) { - return getVoxelShape(state); - } - - @Override - public VoxelShape getInteractionShape(BlockState state, BlockGetter levelReader, BlockPos blockPos) { - return getVoxelShape(state); - } -} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/events/CraterEventBus.java b/Common/src/main/java/me/hypherionmc/craterlib/events/CraterEventBus.java deleted file mode 100644 index c12f5bc..0000000 --- a/Common/src/main/java/me/hypherionmc/craterlib/events/CraterEventBus.java +++ /dev/null @@ -1,46 +0,0 @@ -package me.hypherionmc.craterlib.events; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ConcurrentHashMap; - -/** - * @author HypherionSA - * @date 21/06/2022 - * Event Bus handler for CraterLib Events - */ -public class CraterEventBus { - - /** List of registered events **/ - private static final ConcurrentHashMap, List>> map = new ConcurrentHashMap<>(); - - /** - * Register an event to be processed - * @param clazz a Class implementing @link{Event} - * @param handler - The callback for when the Event is Fired - * @param - */ - public static void register(Class clazz, IEventExecutor handler) { - if (!map.containsKey(clazz)) map.put(clazz, new ArrayList<>()); - map.get(clazz).add(handler); - } - - /** - * Used internally to fire events - * @param event The type of event that will be fired - * @return True or False based on if the event is cancelled or not - */ - public static boolean post(Event event) { - Class clazz = event.getClass(); - if (map.containsKey(clazz)) { - List> handlers = map.get(clazz); - for (IEventExecutor handler : handlers) { - handler.execute(event); - if (event.isCancelled()) { - return false; - } - } - } - return true; - } -} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/events/Event.java b/Common/src/main/java/me/hypherionmc/craterlib/events/Event.java deleted file mode 100644 index 0e0ed2b..0000000 --- a/Common/src/main/java/me/hypherionmc/craterlib/events/Event.java +++ /dev/null @@ -1,37 +0,0 @@ -package me.hypherionmc.craterlib.events; - -/** - * @author HypherionSA - * @date 21/06/2022 - * CraterLib universal event - */ -public class Event { - private boolean cancelled; - - /** - * Can the event be cancelled. Override this method to control the behaviour - * @return - */ - public boolean isCancellable() { - return false; - } - - /** - * Cancel the event - * @param canceled True to cancel the event - */ - public void setCancelled(boolean canceled) { - if (!this.isCancellable()) { - throw new RuntimeException("Cannot cancel event " + this); - } - this.cancelled = canceled; - } - - /** - * Used Internally to check if the event is cancelled - * @return - */ - public boolean isCancelled() { - return cancelled; - } -} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/events/IEventExecutor.java b/Common/src/main/java/me/hypherionmc/craterlib/events/IEventExecutor.java deleted file mode 100644 index 3a7a167..0000000 --- a/Common/src/main/java/me/hypherionmc/craterlib/events/IEventExecutor.java +++ /dev/null @@ -1,10 +0,0 @@ -package me.hypherionmc.craterlib.events; - -/** - * @author HypherionSA - * @date 21/06/2022 - */ -@FunctionalInterface -public interface IEventExecutor { - void execute(T event); -} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/platform/services/ILoaderHelper.java b/Common/src/main/java/me/hypherionmc/craterlib/platform/services/ILoaderHelper.java deleted file mode 100644 index 3754eb7..0000000 --- a/Common/src/main/java/me/hypherionmc/craterlib/platform/services/ILoaderHelper.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.hypherionmc.craterlib.platform.services; - -import java.io.File; - -/** - * Helper class to provide information about the ModLoader - */ -public interface ILoaderHelper { - - public boolean isFabric(); - public boolean isForge(); - public String getGameVersion(); - public File getGameFolder(); - public File getConfigFolder(); - public File getModsFolder(); - public Environment getEnvironment(); - public boolean isModLoaded(String modid); - public boolean isDevEnv(); -} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibClientHelper.java b/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibClientHelper.java deleted file mode 100644 index bbc5faf..0000000 --- a/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibClientHelper.java +++ /dev/null @@ -1,46 +0,0 @@ -package me.hypherionmc.craterlib.platform.services; - -import me.hypherionmc.craterlib.common.item.BlockItemDyable; -import me.hypherionmc.craterlib.network.CraterPacket; -import me.hypherionmc.craterlib.systems.reg.RegistryObject; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.network.Connection; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityType; - -import java.util.Collection; -import java.util.function.Function; - -/** - * @author HypherionSA - * @date 16/06/2022 - */ -public interface LibClientHelper { - - public void registerItemProperty(BlockItemDyable item, String property); - - public void registerCustomRenderTypes( - Collection> blocks, - Collection> items - ); - - public Minecraft getClientInstance(); - - public Player getClientPlayer(); - - public Level getClientLevel(); - - public Connection getClientConnection(); - - public void registerClientReceiver(ResourceLocation channelName, Function> factory); - - public void registerBlockEntityRenderer(BlockEntityType blockEntityType, BlockEntityRendererProvider blockEntityRendererFactory); - -} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibCommonHelper.java b/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibCommonHelper.java deleted file mode 100644 index 5bb7ccd..0000000 --- a/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibCommonHelper.java +++ /dev/null @@ -1,41 +0,0 @@ -package me.hypherionmc.craterlib.platform.services; - -import me.hypherionmc.craterlib.api.blockentities.caps.CapabilityHandler; -import me.hypherionmc.craterlib.network.CraterNetworkHandler; -import me.hypherionmc.craterlib.network.CraterPacket; -import net.minecraft.core.Direction; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.MenuProvider; -import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.inventory.AbstractContainerMenu; -import net.minecraft.world.inventory.MenuType; -import net.minecraft.world.level.block.entity.BlockEntity; -import org.apache.commons.lang3.function.TriFunction; - -import javax.annotation.Nullable; -import java.util.Optional; -import java.util.function.Consumer; -import java.util.function.Function; - -/** - * @author HypherionSA - * @date 24/09/2022 - */ -public interface LibCommonHelper { - - public CraterNetworkHandler createPacketHandler(String modid); - - public MinecraftServer getMCServer(); - - public void openMenu(ServerPlayer player, MenuProvider menu, @Nullable Consumer initialData); - - public MenuType createMenuType(TriFunction constructor); - - /* FABRIC ONLY */ - public void registerServerReceiver(ResourceLocation channelName, Function> factory); - - public Optional getCapabilityHandler(BlockEntity entity, Direction side, CapabilityHandler capability); -} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibFluidHelper.java b/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibFluidHelper.java deleted file mode 100644 index d6b5a80..0000000 --- a/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibFluidHelper.java +++ /dev/null @@ -1,30 +0,0 @@ -package me.hypherionmc.craterlib.platform.services; - -import me.hypherionmc.craterlib.systems.fluid.CraterFluidTank; -import me.hypherionmc.craterlib.systems.fluid.FluidHolder; -import me.hypherionmc.craterlib.systems.fluid.ICraterFluidHandler; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.material.Fluid; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public interface LibFluidHelper { - - public CraterFluidTank createFluidTank(int capacity); - - public CraterFluidTank createFluidTank(int capacity, Fluid... validFluids); - - public boolean interactWithFluidHandler(Player player, InteractionHand hand, ICraterFluidHandler fluidHandler); - - public boolean interactWithFluidHandler(@NotNull Player player, @NotNull InteractionHand hand, @NotNull Level level, @NotNull BlockPos pos, @Nullable Direction side); - - public TextureAtlasSprite getFluidTexture(FluidHolder fluidHolder); - - public int getFluidColor(Fluid fluid); - -} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/systems/energy/ICraterEnergyStorage.java b/Common/src/main/java/me/hypherionmc/craterlib/systems/energy/ICraterEnergyStorage.java deleted file mode 100644 index 2d40fe8..0000000 --- a/Common/src/main/java/me/hypherionmc/craterlib/systems/energy/ICraterEnergyStorage.java +++ /dev/null @@ -1,21 +0,0 @@ -package me.hypherionmc.craterlib.systems.energy; - -import net.minecraft.nbt.CompoundTag; - -public interface ICraterEnergyStorage { - - public default CompoundTag writeNBT(CompoundTag tag) { return tag; } - public default void readNBT(CompoundTag tag) {} - - public int receiveEnergy(int toReceive, boolean test); - public int extractEnergy(int toExtract, boolean test); - - public int getPowerLevel(); - - public int getMaxInput(); - - public int getMaxOutput(); - - public int getPowerCapacity(); - -} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/systems/fluid/ICraterFluidHandler.java b/Common/src/main/java/me/hypherionmc/craterlib/systems/fluid/ICraterFluidHandler.java deleted file mode 100644 index ee4cef8..0000000 --- a/Common/src/main/java/me/hypherionmc/craterlib/systems/fluid/ICraterFluidHandler.java +++ /dev/null @@ -1,32 +0,0 @@ -package me.hypherionmc.craterlib.systems.fluid; - -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.material.Fluid; - -public interface ICraterFluidHandler { - - enum FluidAction { - EXECUTE, - SIMULATE; - - public boolean simulate() { - return this == SIMULATE; - } - - public boolean execute() { - return this == EXECUTE; - } - } - - public int insert(FluidHolder fluidHolder, CraterFluidTank.FluidAction action); - public FluidHolder extract(FluidHolder fluidHolder, CraterFluidTank.FluidAction action); - public FluidHolder extract(int amount, CraterFluidTank.FluidAction action); - public boolean isTankEmpty(); - public FluidHolder getFluidInTank(); - public int getTankLevel(); - public int getTankCapacity(); - - public default CompoundTag writeToNBT(CompoundTag tag) { return tag; } - - public default void readFromNBT(CompoundTag tag) {}; -} diff --git a/Common/src/main/java/me/hypherionmc/craterlib/systems/reg/package-info.java b/Common/src/main/java/me/hypherionmc/craterlib/systems/reg/package-info.java deleted file mode 100644 index 7943c47..0000000 --- a/Common/src/main/java/me/hypherionmc/craterlib/systems/reg/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * So, if you got here, most probably you want to see the registration system of this mod. - * Well, you are in the wrong place. This mod uses RegistrationUtils for - * all its registration needs. - */ -package me.hypherionmc.craterlib.systems.reg; diff --git a/Common/src/main/resources/craterlib.mixins.json b/Common/src/main/resources/craterlib.mixins.json index 3075b8f..0750ff6 100644 --- a/Common/src/main/resources/craterlib.mixins.json +++ b/Common/src/main/resources/craterlib.mixins.json @@ -1,7 +1,7 @@ { "required": true, "minVersion": "0.8", - "package": "me.hypherionmc.craterlib.mixin", + "package": "com.hypherionmc.craterlib.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ ], diff --git a/Fabric/src/main/java/me/hypherionmc/craterlib/CraterLibInitializer.java b/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibInitializer.java similarity index 77% rename from Fabric/src/main/java/me/hypherionmc/craterlib/CraterLibInitializer.java rename to Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibInitializer.java index 62d4c49..aa8b109 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/CraterLibInitializer.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibInitializer.java @@ -1,6 +1,6 @@ -package me.hypherionmc.craterlib; +package com.hypherionmc.craterlib; -import me.hypherionmc.craterlib.common.FabricCommonHelper; +import com.hypherionmc.craterlib.common.FabricCommonHelper; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; diff --git a/Fabric/src/main/java/me/hypherionmc/craterlib/CraterLibModMenuIntegration.java b/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java similarity index 70% rename from Fabric/src/main/java/me/hypherionmc/craterlib/CraterLibModMenuIntegration.java rename to Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java index 81b42a9..6615352 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/CraterLibModMenuIntegration.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java @@ -1,18 +1,17 @@ -package me.hypherionmc.craterlib; +package com.hypherionmc.craterlib; +import com.hypherionmc.craterlib.client.gui.config.CraterConfigScreen; +import com.hypherionmc.craterlib.core.config.ConfigController; +import com.hypherionmc.craterlib.core.config.ModuleConfig; +import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; -import me.hypherionmc.craterlib.client.gui.config.CraterConfigScreen; -import me.hypherionmc.craterlib.common.config.ConfigController; -import me.hypherionmc.craterlib.common.config.ModuleConfig; -import me.hypherionmc.craterlib.common.config.annotations.NoConfigScreen; import java.util.HashMap; import java.util.Map; /** * @author HypherionSA - * @date 06/08/2022 */ public class CraterLibModMenuIntegration implements ModMenuApi { diff --git a/Fabric/src/main/java/me/hypherionmc/craterlib/client/CraterLibClientInitializer.java b/Fabric/src/main/java/com/hypherionmc/craterlib/client/CraterLibClientInitializer.java similarity index 89% rename from Fabric/src/main/java/me/hypherionmc/craterlib/client/CraterLibClientInitializer.java rename to Fabric/src/main/java/com/hypherionmc/craterlib/client/CraterLibClientInitializer.java index 3ed237c..b4f4522 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/client/CraterLibClientInitializer.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/client/CraterLibClientInitializer.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.client; +package com.hypherionmc.craterlib.client; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; diff --git a/Fabric/src/main/java/me/hypherionmc/craterlib/client/FabricClientHelper.java b/Fabric/src/main/java/com/hypherionmc/craterlib/client/FabricClientHelper.java similarity index 91% rename from Fabric/src/main/java/me/hypherionmc/craterlib/client/FabricClientHelper.java rename to Fabric/src/main/java/com/hypherionmc/craterlib/client/FabricClientHelper.java index 9f7f48b..023f9c8 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/client/FabricClientHelper.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/client/FabricClientHelper.java @@ -1,11 +1,11 @@ -package me.hypherionmc.craterlib.client; +package com.hypherionmc.craterlib.client; -import me.hypherionmc.craterlib.api.rendering.CustomRenderType; -import me.hypherionmc.craterlib.common.item.BlockItemDyable; -import me.hypherionmc.craterlib.network.CraterPacket; -import me.hypherionmc.craterlib.platform.services.LibClientHelper; +import com.hypherionmc.craterlib.api.rendering.CustomRenderType; +import com.hypherionmc.craterlib.common.item.BlockItemDyable; +import com.hypherionmc.craterlib.core.network.CraterPacket; +import com.hypherionmc.craterlib.core.platform.services.LibClientHelper; +import com.hypherionmc.craterlib.util.ColorPropertyFunction; import me.hypherionmc.craterlib.systems.reg.RegistryObject; -import me.hypherionmc.craterlib.util.ColorPropertyFunction; import net.fabricmc.api.EnvType; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; @@ -33,7 +33,6 @@ import java.util.function.Function; /** * @author HypherionSA - * @date 16/06/2022 */ public class FabricClientHelper implements LibClientHelper { diff --git a/Fabric/src/main/java/me/hypherionmc/craterlib/client/gui/widgets/FluidStackWidget.java b/Fabric/src/main/java/com/hypherionmc/craterlib/client/gui/widgets/FluidStackWidget.java similarity index 91% rename from Fabric/src/main/java/me/hypherionmc/craterlib/client/gui/widgets/FluidStackWidget.java rename to Fabric/src/main/java/com/hypherionmc/craterlib/client/gui/widgets/FluidStackWidget.java index 33d66cd..dcb9a54 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/client/gui/widgets/FluidStackWidget.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/client/gui/widgets/FluidStackWidget.java @@ -1,12 +1,11 @@ -package me.hypherionmc.craterlib.client.gui.widgets; +package com.hypherionmc.craterlib.client.gui.widgets; +import com.hypherionmc.craterlib.systems.fluid.FluidTank; +import com.hypherionmc.craterlib.util.RenderUtils; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; -import me.hypherionmc.craterlib.systems.fluid.FluidTank; -import me.hypherionmc.craterlib.util.RenderUtils; import net.fabricmc.fabric.api.transfer.v1.client.fluid.FluidVariantRendering; import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.narration.NarrationElementOutput; import net.minecraft.client.gui.screens.Screen; @@ -19,7 +18,7 @@ import org.jetbrains.annotations.NotNull; import java.util.function.Supplier; /** - * Modified from https://github.com/SleepyTrousers/EnderIO-Rewrite/blob/dev/1.18.x/enderio-machines/src/main/java/com/enderio/machines/client/FluidStackWidget.java + * Modified from ... */ public class FluidStackWidget extends AbstractWidget { diff --git a/Fabric/src/main/java/me/hypherionmc/craterlib/common/FabricCommonHelper.java b/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCommonHelper.java similarity index 86% rename from Fabric/src/main/java/me/hypherionmc/craterlib/common/FabricCommonHelper.java rename to Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCommonHelper.java index 078b32e..5d61d5b 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/common/FabricCommonHelper.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCommonHelper.java @@ -1,11 +1,11 @@ -package me.hypherionmc.craterlib.common; +package com.hypherionmc.craterlib.common; -import me.hypherionmc.craterlib.api.blockentities.caps.CapabilityHandler; -import me.hypherionmc.craterlib.api.blockentities.caps.ICraterCapProvider; -import me.hypherionmc.craterlib.network.CraterNetworkHandler; -import me.hypherionmc.craterlib.network.CraterPacket; -import me.hypherionmc.craterlib.network.FabricNetworkHandler; -import me.hypherionmc.craterlib.platform.services.LibCommonHelper; +import com.hypherionmc.craterlib.api.blockentity.caps.CraterCapabilityHandler; +import com.hypherionmc.craterlib.api.blockentity.caps.ICraterCapProvider; +import com.hypherionmc.craterlib.core.network.CraterNetworkHandler; +import com.hypherionmc.craterlib.core.network.CraterPacket; +import com.hypherionmc.craterlib.core.platform.services.LibCommonHelper; +import com.hypherionmc.craterlib.network.FabricNetworkHandler; import net.fabricmc.fabric.api.networking.v1.PacketSender; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerFactory; @@ -32,7 +32,6 @@ import java.util.function.Function; /** * @author HypherionSA - * @date 24/09/2022 */ public class FabricCommonHelper implements LibCommonHelper { @@ -85,7 +84,7 @@ public class FabricCommonHelper implements LibCommonHelper { } @Override - public Optional getCapabilityHandler(BlockEntity entity, Direction side, CapabilityHandler capability) { + public Optional getCapabilityHandler(BlockEntity entity, Direction side, CraterCapabilityHandler capability) { if (entity instanceof ICraterCapProvider capProvider) { return capProvider.getCapability(capability, side); } diff --git a/Fabric/src/main/java/me/hypherionmc/craterlib/common/FabricFluidHelper.java b/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricFluidHelper.java similarity index 85% rename from Fabric/src/main/java/me/hypherionmc/craterlib/common/FabricFluidHelper.java rename to Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricFluidHelper.java index 0df1f81..812ea8a 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/common/FabricFluidHelper.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricFluidHelper.java @@ -1,9 +1,12 @@ -package me.hypherionmc.craterlib.common; +package com.hypherionmc.craterlib.common; -import me.hypherionmc.craterlib.platform.services.LibFluidHelper; -import me.hypherionmc.craterlib.systems.fluid.*; +import com.hypherionmc.craterlib.core.platform.services.LibFluidHelper; +import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank; +import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder; +import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler; +import com.hypherionmc.craterlib.systems.fluid.FabricFluidUtils; +import com.hypherionmc.craterlib.systems.fluid.FluidTank; import net.fabricmc.fabric.api.transfer.v1.client.fluid.FluidVariantRendering; -import net.fabricmc.fabric.api.transfer.v1.fluid.FluidConstants; import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; import net.fabricmc.fabric.impl.transfer.fluid.FluidVariantImpl; import net.fabricmc.fabric.mixin.transfer.BucketItemAccessor; diff --git a/Fabric/src/main/java/me/hypherionmc/craterlib/common/FabricLoaderHelper.java b/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricLoaderHelper.java similarity index 85% rename from Fabric/src/main/java/me/hypherionmc/craterlib/common/FabricLoaderHelper.java rename to Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricLoaderHelper.java index 81d4aa9..44b0414 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/common/FabricLoaderHelper.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricLoaderHelper.java @@ -1,7 +1,7 @@ -package me.hypherionmc.craterlib.common; +package com.hypherionmc.craterlib.common; -import me.hypherionmc.craterlib.platform.services.Environment; -import me.hypherionmc.craterlib.platform.services.ILoaderHelper; +import com.hypherionmc.craterlib.core.platform.services.Environment; +import com.hypherionmc.craterlib.core.platform.services.ILoaderHelper; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.SharedConstants; import net.minecraft.client.Minecraft; @@ -19,11 +19,6 @@ public class FabricLoaderHelper implements ILoaderHelper { return true; } - @Override - public boolean isForge() { - return false; - } - @Override public String getGameVersion() { return SharedConstants.VERSION_STRING; diff --git a/Fabric/src/main/java/me/hypherionmc/craterlib/mixin/MinecraftMixin.java b/Fabric/src/main/java/com/hypherionmc/craterlib/mixin/MinecraftMixin.java similarity index 89% rename from Fabric/src/main/java/me/hypherionmc/craterlib/mixin/MinecraftMixin.java rename to Fabric/src/main/java/com/hypherionmc/craterlib/mixin/MinecraftMixin.java index 0d2194a..7d1939b 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/mixin/MinecraftMixin.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/mixin/MinecraftMixin.java @@ -1,6 +1,6 @@ -package me.hypherionmc.craterlib.mixin; +package com.hypherionmc.craterlib.mixin; -import me.hypherionmc.craterlib.systems.internal.CreativeTabRegistry; +import com.hypherionmc.craterlib.core.systems.internal.CreativeTabRegistry; import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; import net.minecraft.client.Minecraft; @@ -18,7 +18,7 @@ public class MinecraftMixin { @Inject(method = "", at = @At("RETURN")) private void injectCraterLateInit(GameConfig gameConfig, CallbackInfo ci) { - CreativeTabRegistry.getTABS().forEach(tab -> { + CreativeTabRegistry.getTabs().forEach(tab -> { CreativeModeTab finalTab = FabricItemGroup.builder(tab.getResourceLocation()) .title(Component.translatable("itemGroup." + tab.getResourceLocation().toString().replace(":", ".") diff --git a/Fabric/src/main/java/me/hypherionmc/craterlib/network/FabricNetworkHandler.java b/Fabric/src/main/java/com/hypherionmc/craterlib/network/FabricNetworkHandler.java similarity index 90% rename from Fabric/src/main/java/me/hypherionmc/craterlib/network/FabricNetworkHandler.java rename to Fabric/src/main/java/com/hypherionmc/craterlib/network/FabricNetworkHandler.java index 4a9dddf..f5a98e1 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/network/FabricNetworkHandler.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/network/FabricNetworkHandler.java @@ -1,8 +1,11 @@ -package me.hypherionmc.craterlib.network; +package com.hypherionmc.craterlib.network; import com.google.common.collect.Maps; -import me.hypherionmc.craterlib.platform.ClientPlatform; -import me.hypherionmc.craterlib.platform.Platform; +import com.hypherionmc.craterlib.core.network.CraterNetworkHandler; +import com.hypherionmc.craterlib.core.network.CraterPacket; +import com.hypherionmc.craterlib.core.network.PacketDirection; +import com.hypherionmc.craterlib.core.platform.ClientPlatform; +import com.hypherionmc.craterlib.core.platform.Platform; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; diff --git a/Fabric/src/main/java/me/hypherionmc/craterlib/systems/fluid/FabricFluidUtils.java b/Fabric/src/main/java/com/hypherionmc/craterlib/systems/fluid/FabricFluidUtils.java similarity index 88% rename from Fabric/src/main/java/me/hypherionmc/craterlib/systems/fluid/FabricFluidUtils.java rename to Fabric/src/main/java/com/hypherionmc/craterlib/systems/fluid/FabricFluidUtils.java index 6e4dc12..608f769 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/systems/fluid/FabricFluidUtils.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/systems/fluid/FabricFluidUtils.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.systems.fluid; +package com.hypherionmc.craterlib.systems.fluid; import net.fabricmc.fabric.api.transfer.v1.client.fluid.FluidVariantRendering; import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; diff --git a/Fabric/src/main/java/me/hypherionmc/craterlib/systems/fluid/FluidTank.java b/Fabric/src/main/java/com/hypherionmc/craterlib/systems/fluid/FluidTank.java similarity index 91% rename from Fabric/src/main/java/me/hypherionmc/craterlib/systems/fluid/FluidTank.java rename to Fabric/src/main/java/com/hypherionmc/craterlib/systems/fluid/FluidTank.java index 30b9a9f..5f1f6f0 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/systems/fluid/FluidTank.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/systems/fluid/FluidTank.java @@ -1,5 +1,7 @@ -package me.hypherionmc.craterlib.systems.fluid; +package com.hypherionmc.craterlib.systems.fluid; +import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank; +import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder; import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; import net.fabricmc.fabric.api.transfer.v1.storage.Storage; import net.fabricmc.fabric.api.transfer.v1.storage.StoragePreconditions; diff --git a/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.ILoaderHelper b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.ILoaderHelper new file mode 100644 index 0000000..9a1fb33 --- /dev/null +++ b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.ILoaderHelper @@ -0,0 +1 @@ +com.hypherionmc.craterlib.common.FabricLoaderHelper diff --git a/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibClientHelper b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibClientHelper new file mode 100644 index 0000000..412f0fd --- /dev/null +++ b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibClientHelper @@ -0,0 +1 @@ +com.hypherionmc.craterlib.client.FabricClientHelper diff --git a/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibCommonHelper b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibCommonHelper new file mode 100644 index 0000000..30fe0fa --- /dev/null +++ b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibCommonHelper @@ -0,0 +1 @@ +com.hypherionmc.craterlib.common.FabricCommonHelper diff --git a/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibFluidHelper b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibFluidHelper new file mode 100644 index 0000000..274cb27 --- /dev/null +++ b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibFluidHelper @@ -0,0 +1 @@ +com.hypherionmc.craterlib.common.FabricFluidHelper diff --git a/Fabric/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.ILoaderHelper b/Fabric/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.ILoaderHelper deleted file mode 100644 index 128f2ed..0000000 --- a/Fabric/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.ILoaderHelper +++ /dev/null @@ -1 +0,0 @@ -me.hypherionmc.craterlib.common.FabricLoaderHelper diff --git a/Fabric/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibClientHelper b/Fabric/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibClientHelper deleted file mode 100644 index a0b514c..0000000 --- a/Fabric/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibClientHelper +++ /dev/null @@ -1 +0,0 @@ -me.hypherionmc.craterlib.client.FabricClientHelper diff --git a/Fabric/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibCommonHelper b/Fabric/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibCommonHelper deleted file mode 100644 index 41f2b3f..0000000 --- a/Fabric/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibCommonHelper +++ /dev/null @@ -1 +0,0 @@ -me.hypherionmc.craterlib.common.FabricCommonHelper diff --git a/Fabric/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibFluidHelper b/Fabric/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibFluidHelper deleted file mode 100644 index e1141ed..0000000 --- a/Fabric/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibFluidHelper +++ /dev/null @@ -1 +0,0 @@ -me.hypherionmc.craterlib.common.FabricFluidHelper diff --git a/Fabric/src/main/resources/craterlib.fabric.mixins.json b/Fabric/src/main/resources/craterlib.fabric.mixins.json index d84e77f..957b695 100644 --- a/Fabric/src/main/resources/craterlib.fabric.mixins.json +++ b/Fabric/src/main/resources/craterlib.fabric.mixins.json @@ -1,7 +1,7 @@ { "required": true, "minVersion": "0.8", - "package": "me.hypherionmc.craterlib.mixin", + "package": "com.hypherionmc.craterlib.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ ], diff --git a/Fabric/src/main/resources/fabric.mod.json b/Fabric/src/main/resources/fabric.mod.json index 276c53c..d65ced0 100644 --- a/Fabric/src/main/resources/fabric.mod.json +++ b/Fabric/src/main/resources/fabric.mod.json @@ -17,13 +17,13 @@ "environment": "*", "entrypoints": { "main": [ - "me.hypherionmc.craterlib.CraterLibInitializer" + "com.hypherionmc.craterlib.CraterLibInitializer" ], "client": [ - "me.hypherionmc.craterlib.client.CraterLibClientInitializer" + "com.hypherionmc.craterlib.client.CraterLibClientInitializer" ], "modmenu": [ - "me.hypherionmc.craterlib.CraterLibModMenuIntegration" + "com.hypherionmc.craterlib.CraterLibModMenuIntegration" ] }, "mixins": [ diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/CraterLib.java b/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java similarity index 79% rename from Forge/src/main/java/me/hypherionmc/craterlib/CraterLib.java rename to Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java index 7034e07..320d505 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/CraterLib.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib; +package com.hypherionmc.craterlib; import net.minecraftforge.fml.common.Mod; diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/client/ForgeClientHelper.java b/Forge/src/main/java/com/hypherionmc/craterlib/client/ForgeClientHelper.java similarity index 88% rename from Forge/src/main/java/me/hypherionmc/craterlib/client/ForgeClientHelper.java rename to Forge/src/main/java/com/hypherionmc/craterlib/client/ForgeClientHelper.java index ac1d407..11f8188 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/client/ForgeClientHelper.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/client/ForgeClientHelper.java @@ -1,11 +1,11 @@ -package me.hypherionmc.craterlib.client; +package com.hypherionmc.craterlib.client; -import me.hypherionmc.craterlib.api.rendering.CustomRenderType; -import me.hypherionmc.craterlib.common.item.BlockItemDyable; -import me.hypherionmc.craterlib.network.CraterPacket; -import me.hypherionmc.craterlib.platform.services.LibClientHelper; +import com.hypherionmc.craterlib.api.rendering.CustomRenderType; +import com.hypherionmc.craterlib.common.item.BlockItemDyable; +import com.hypherionmc.craterlib.core.network.CraterPacket; +import com.hypherionmc.craterlib.core.platform.services.LibClientHelper; +import com.hypherionmc.craterlib.util.ColorPropertyFunction; import me.hypherionmc.craterlib.systems.reg.RegistryObject; -import me.hypherionmc.craterlib.util.ColorPropertyFunction; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/client/gui/widgets/FluidStackWidget.java b/Forge/src/main/java/com/hypherionmc/craterlib/client/gui/widgets/FluidStackWidget.java similarity index 94% rename from Forge/src/main/java/me/hypherionmc/craterlib/client/gui/widgets/FluidStackWidget.java rename to Forge/src/main/java/com/hypherionmc/craterlib/client/gui/widgets/FluidStackWidget.java index 7ba182e..e49b35e 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/client/gui/widgets/FluidStackWidget.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/client/gui/widgets/FluidStackWidget.java @@ -1,9 +1,4 @@ -package me.hypherionmc.craterlib.client.gui.widgets; - -/** - * @author HypherionSA - * @date 03/07/2022 - */ +package com.hypherionmc.craterlib.client.gui.widgets; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; @@ -25,7 +20,7 @@ import org.jetbrains.annotations.NotNull; import java.util.function.Supplier; -/** Copied from https://github.com/SleepyTrousers/EnderIO-Rewrite/blob/dev/1.18.x/enderio-machines/src/main/java/com/enderio/machines/client/FluidStackWidget.java*/ +/** Copied from ...*/ public class FluidStackWidget extends AbstractWidget { private final Screen displayOn; diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeCommonEvents.java b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCommonEvents.java similarity index 87% rename from Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeCommonEvents.java rename to Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCommonEvents.java index 5cbd075..398dd01 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeCommonEvents.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCommonEvents.java @@ -1,7 +1,7 @@ -package me.hypherionmc.craterlib.common; +package com.hypherionmc.craterlib.common; -import me.hypherionmc.craterlib.CraterConstants; -import me.hypherionmc.craterlib.systems.internal.CreativeTabRegistry; +import com.hypherionmc.craterlib.CraterConstants; +import com.hypherionmc.craterlib.core.systems.internal.CreativeTabRegistry; import net.minecraft.network.chat.Component; import net.minecraft.world.item.CreativeModeTab; import net.minecraftforge.event.CreativeModeTabEvent; @@ -15,7 +15,7 @@ public class ForgeCommonEvents { public static void registerTabs(CreativeModeTabEvent.Register event) { CraterConstants.LOG.info("Registering Creative Tabs"); - CreativeTabRegistry.getTABS().forEach(tab -> { + CreativeTabRegistry.getTabs().forEach(tab -> { CreativeModeTab creativeModeTab = event.registerCreativeModeTab(tab.getResourceLocation(), builder -> { builder.title( Component.translatable("itemGroup." + diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeCommonHelper.java b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCommonHelper.java similarity index 79% rename from Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeCommonHelper.java rename to Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCommonHelper.java index 16d44c3..1b8a0b9 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeCommonHelper.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCommonHelper.java @@ -1,14 +1,14 @@ -package me.hypherionmc.craterlib.common; +package com.hypherionmc.craterlib.common; -import me.hypherionmc.craterlib.api.blockentities.caps.CapabilityHandler; -import me.hypherionmc.craterlib.api.blockentities.caps.ICraterCapProvider; -import me.hypherionmc.craterlib.network.CraterNetworkHandler; -import me.hypherionmc.craterlib.network.CraterPacket; -import me.hypherionmc.craterlib.network.ForgeNetworkHandler; -import me.hypherionmc.craterlib.platform.services.LibCommonHelper; -import me.hypherionmc.craterlib.systems.energy.ForgeEnergyReader; -import me.hypherionmc.craterlib.systems.fluid.ForgeFluidReader; -import me.hypherionmc.craterlib.systems.fluid.ICraterFluidHandler; +import com.hypherionmc.craterlib.api.blockentity.caps.CraterCapabilityHandler; +import com.hypherionmc.craterlib.api.blockentity.caps.ICraterCapProvider; +import com.hypherionmc.craterlib.core.network.CraterNetworkHandler; +import com.hypherionmc.craterlib.core.network.CraterPacket; +import com.hypherionmc.craterlib.core.platform.services.LibCommonHelper; +import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler; +import com.hypherionmc.craterlib.network.ForgeNetworkHandler; +import com.hypherionmc.craterlib.systems.energy.ForgeEnergyReader; +import com.hypherionmc.craterlib.systems.fluid.ForgeFluidReader; import net.minecraft.core.Direction; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; @@ -36,7 +36,6 @@ import java.util.function.Function; /** * @author HypherionSA - * @date 24/09/2022 */ public class ForgeCommonHelper implements LibCommonHelper { @@ -74,15 +73,15 @@ public class ForgeCommonHelper implements LibCommonHelper { } @Override - public Optional getCapabilityHandler(BlockEntity entity, Direction side, CapabilityHandler capability) { - if (capability == CapabilityHandler.ENERGY) { + public Optional getCapabilityHandler(BlockEntity entity, Direction side, CraterCapabilityHandler capability) { + if (capability == CraterCapabilityHandler.ENERGY) { AtomicReference energyReference = new AtomicReference<>(); entity.getCapability(ForgeCapabilities.ENERGY, side).ifPresent(storage -> energyReference.set(new ForgeEnergyReader(storage))); return energyReference.get() != null ? (Optional) Optional.of(energyReference.get()) : Optional.empty(); } - if (capability == CapabilityHandler.FLUID) { + if (capability == CraterCapabilityHandler.FLUID) { AtomicReference craterFluidHandler = new AtomicReference<>(); entity.getCapability(ForgeCapabilities.FLUID_HANDLER, side).ifPresent(iFluidHandler -> craterFluidHandler.set(new ForgeFluidReader(iFluidHandler))); diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeFluidHelper.java b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeFluidHelper.java similarity index 79% rename from Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeFluidHelper.java rename to Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeFluidHelper.java index 5cbecb1..005e5ac 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeFluidHelper.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeFluidHelper.java @@ -1,7 +1,12 @@ -package me.hypherionmc.craterlib.common; +package com.hypherionmc.craterlib.common; -import me.hypherionmc.craterlib.platform.services.LibFluidHelper; -import me.hypherionmc.craterlib.systems.fluid.*; +import com.hypherionmc.craterlib.core.platform.services.LibFluidHelper; +import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank; +import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder; +import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler; +import com.hypherionmc.craterlib.systems.fluid.ForgeFluidTankInteractor; +import com.hypherionmc.craterlib.systems.fluid.ForgeFluidUtils; +import com.hypherionmc.craterlib.systems.fluid.ForgeWrappedFluidTank; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeLoaderHelper.java b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeLoaderHelper.java similarity index 84% rename from Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeLoaderHelper.java rename to Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeLoaderHelper.java index e407b9a..b72df49 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeLoaderHelper.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeLoaderHelper.java @@ -1,7 +1,7 @@ -package me.hypherionmc.craterlib.common; +package com.hypherionmc.craterlib.common; -import me.hypherionmc.craterlib.platform.services.Environment; -import me.hypherionmc.craterlib.platform.services.ILoaderHelper; +import com.hypherionmc.craterlib.core.platform.services.Environment; +import com.hypherionmc.craterlib.core.platform.services.ILoaderHelper; import net.minecraft.SharedConstants; import net.minecraft.client.Minecraft; import net.minecraftforge.fml.ModList; @@ -12,7 +12,6 @@ import java.io.File; /** * @author HypherionSA - * @date 07/08/2022 */ public class ForgeLoaderHelper implements ILoaderHelper { @@ -23,11 +22,6 @@ public class ForgeLoaderHelper implements ILoaderHelper { return false; } - @Override - public boolean isForge() { - return true; - } - @Override public String getGameVersion() { return SharedConstants.VERSION_STRING; diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/mixin/BlockEntityMixin.java b/Forge/src/main/java/com/hypherionmc/craterlib/mixin/BlockEntityMixin.java similarity index 65% rename from Forge/src/main/java/me/hypherionmc/craterlib/mixin/BlockEntityMixin.java rename to Forge/src/main/java/com/hypherionmc/craterlib/mixin/BlockEntityMixin.java index 4e5c153..e786846 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/mixin/BlockEntityMixin.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/mixin/BlockEntityMixin.java @@ -1,15 +1,14 @@ -package me.hypherionmc.craterlib.mixin; +package com.hypherionmc.craterlib.mixin; -import me.hypherionmc.craterlib.api.blockentities.caps.CapabilityHandler; -import me.hypherionmc.craterlib.api.blockentities.caps.ICraterCapProvider; -import me.hypherionmc.craterlib.common.blockentity.CraterBlockEntity; -import me.hypherionmc.craterlib.systems.energy.CustomEnergyStorage; -import me.hypherionmc.craterlib.systems.energy.ForgeEnergyWrapper; -import me.hypherionmc.craterlib.systems.fluid.CraterFluidTank; -import me.hypherionmc.craterlib.systems.fluid.ForgeWrappedFluidTank; -import me.hypherionmc.craterlib.systems.fluid.ICraterFluidHandler; -import me.hypherionmc.craterlib.systems.inventory.ForgeInventoryWrapper; -import me.hypherionmc.craterlib.systems.inventory.SimpleInventory; +import com.hypherionmc.craterlib.api.blockentity.caps.CraterCapabilityHandler; +import com.hypherionmc.craterlib.api.blockentity.caps.ICraterCapProvider; +import com.hypherionmc.craterlib.common.blockentity.CraterBlockEntity; +import com.hypherionmc.craterlib.core.systems.energy.CustomEnergyStorage; +import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler; +import com.hypherionmc.craterlib.core.systems.inventory.SimpleInventory; +import com.hypherionmc.craterlib.systems.energy.ForgeEnergyWrapper; +import com.hypherionmc.craterlib.systems.fluid.ForgeWrappedFluidTank; +import com.hypherionmc.craterlib.systems.inventory.ForgeInventoryWrapper; import net.minecraft.core.Direction; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ForgeCapabilities; @@ -24,7 +23,6 @@ import java.util.Optional; /** * @author HypherionSA - * @date 24/09/2022 */ @Mixin(CraterBlockEntity.class) public class BlockEntityMixin implements ICapabilityProvider { @@ -34,21 +32,21 @@ public class BlockEntityMixin implements ICapabilityProvider { ICraterCapProvider capProvider = (ICraterCapProvider) this; if (cap == ForgeCapabilities.ENERGY) { - Optional forgeCap = capProvider.getCapability(CapabilityHandler.ENERGY, side); + Optional forgeCap = capProvider.getCapability(CraterCapabilityHandler.ENERGY, side); if (forgeCap.isPresent()) { return LazyOptional.of(() -> new ForgeEnergyWrapper(forgeCap.get())).cast(); } } if (cap == ForgeCapabilities.ITEM_HANDLER) { - Optional inventory = capProvider.getCapability(CapabilityHandler.ITEM, side); + Optional inventory = capProvider.getCapability(CraterCapabilityHandler.ITEM, side); if (inventory.isPresent()) { return LazyOptional.of(() -> new SidedInvWrapper(new ForgeInventoryWrapper(inventory.get()), side)).cast(); } } if (cap == ForgeCapabilities.FLUID_HANDLER) { - Optional fluidTank = capProvider.getCapability(CapabilityHandler.FLUID, side); + Optional fluidTank = capProvider.getCapability(CraterCapabilityHandler.FLUID, side); if (fluidTank.isPresent()) { return LazyOptional.of(() -> (ForgeWrappedFluidTank)fluidTank.get()).cast(); } diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/mixin/ConfigScreenHandlerMixin.java b/Forge/src/main/java/com/hypherionmc/craterlib/mixin/ConfigScreenHandlerMixin.java similarity index 81% rename from Forge/src/main/java/me/hypherionmc/craterlib/mixin/ConfigScreenHandlerMixin.java rename to Forge/src/main/java/com/hypherionmc/craterlib/mixin/ConfigScreenHandlerMixin.java index 03540f1..109671a 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/mixin/ConfigScreenHandlerMixin.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/mixin/ConfigScreenHandlerMixin.java @@ -1,9 +1,9 @@ -package me.hypherionmc.craterlib.mixin; +package com.hypherionmc.craterlib.mixin; -import me.hypherionmc.craterlib.client.gui.config.CraterConfigScreen; -import me.hypherionmc.craterlib.common.config.ConfigController; -import me.hypherionmc.craterlib.common.config.ModuleConfig; -import me.hypherionmc.craterlib.common.config.annotations.NoConfigScreen; +import com.hypherionmc.craterlib.client.gui.config.CraterConfigScreen; +import com.hypherionmc.craterlib.core.config.ConfigController; +import com.hypherionmc.craterlib.core.config.ModuleConfig; +import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraftforge.client.ConfigScreenHandler; @@ -18,7 +18,6 @@ import java.util.function.BiFunction; /** * @author HypherionSA - * @date 06/08/2022 */ @Mixin(ConfigScreenHandler.class) public class ConfigScreenHandlerMixin { diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/network/ForgeNetworkHandler.java b/Forge/src/main/java/com/hypherionmc/craterlib/network/ForgeNetworkHandler.java similarity index 91% rename from Forge/src/main/java/me/hypherionmc/craterlib/network/ForgeNetworkHandler.java rename to Forge/src/main/java/com/hypherionmc/craterlib/network/ForgeNetworkHandler.java index dfd2d0b..3db17cb 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/network/ForgeNetworkHandler.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/network/ForgeNetworkHandler.java @@ -1,7 +1,10 @@ -package me.hypherionmc.craterlib.network; +package com.hypherionmc.craterlib.network; import com.google.common.collect.Maps; -import me.hypherionmc.craterlib.platform.ClientPlatform; +import com.hypherionmc.craterlib.core.network.CraterNetworkHandler; +import com.hypherionmc.craterlib.core.network.CraterPacket; +import com.hypherionmc.craterlib.core.network.PacketDirection; +import com.hypherionmc.craterlib.core.platform.ClientPlatform; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.protocol.Packet; import net.minecraft.resources.ResourceLocation; @@ -21,8 +24,7 @@ import java.util.function.Supplier; /** * @author HypherionSA - * @date 24/09/2022 - * Partly inspired by and based on https://github.com/Fuzss/puzzleslib/blob/1.19/Forge/src/main/java/fuzs/puzzleslib/network/ForgeNetworkHandler.java + * Partly inspired by and based on ... */ public class ForgeNetworkHandler implements CraterNetworkHandler { diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/systems/energy/ForgeEnergyReader.java b/Forge/src/main/java/com/hypherionmc/craterlib/systems/energy/ForgeEnergyReader.java similarity index 86% rename from Forge/src/main/java/me/hypherionmc/craterlib/systems/energy/ForgeEnergyReader.java rename to Forge/src/main/java/com/hypherionmc/craterlib/systems/energy/ForgeEnergyReader.java index ae60ad5..76c20a5 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/systems/energy/ForgeEnergyReader.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/systems/energy/ForgeEnergyReader.java @@ -1,5 +1,6 @@ -package me.hypherionmc.craterlib.systems.energy; +package com.hypherionmc.craterlib.systems.energy; +import com.hypherionmc.craterlib.core.systems.energy.ICraterEnergyStorage; import net.minecraftforge.energy.IEnergyStorage; public record ForgeEnergyReader(IEnergyStorage forgeStorage) implements ICraterEnergyStorage { diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/systems/energy/ForgeEnergyWrapper.java b/Forge/src/main/java/com/hypherionmc/craterlib/systems/energy/ForgeEnergyWrapper.java similarity index 88% rename from Forge/src/main/java/me/hypherionmc/craterlib/systems/energy/ForgeEnergyWrapper.java rename to Forge/src/main/java/com/hypherionmc/craterlib/systems/energy/ForgeEnergyWrapper.java index 99be3ce..003e302 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/systems/energy/ForgeEnergyWrapper.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/systems/energy/ForgeEnergyWrapper.java @@ -1,10 +1,10 @@ -package me.hypherionmc.craterlib.systems.energy; +package com.hypherionmc.craterlib.systems.energy; +import com.hypherionmc.craterlib.core.systems.energy.CustomEnergyStorage; import net.minecraftforge.energy.IEnergyStorage; /** * @author HypherionSA - * @date 03/07/2022 * Forge Energy Support on top of the custom system */ public record ForgeEnergyWrapper(CustomEnergyStorage storage) implements IEnergyStorage { diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/systems/fluid/ForgeFluidReader.java b/Forge/src/main/java/com/hypherionmc/craterlib/systems/fluid/ForgeFluidReader.java similarity index 88% rename from Forge/src/main/java/me/hypherionmc/craterlib/systems/fluid/ForgeFluidReader.java rename to Forge/src/main/java/com/hypherionmc/craterlib/systems/fluid/ForgeFluidReader.java index edd4c74..37bb155 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/systems/fluid/ForgeFluidReader.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/systems/fluid/ForgeFluidReader.java @@ -1,5 +1,7 @@ -package me.hypherionmc.craterlib.systems.fluid; +package com.hypherionmc.craterlib.systems.fluid; +import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder; +import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/systems/fluid/ForgeFluidTankInteractor.java b/Forge/src/main/java/com/hypherionmc/craterlib/systems/fluid/ForgeFluidTankInteractor.java similarity index 90% rename from Forge/src/main/java/me/hypherionmc/craterlib/systems/fluid/ForgeFluidTankInteractor.java rename to Forge/src/main/java/com/hypherionmc/craterlib/systems/fluid/ForgeFluidTankInteractor.java index 6f9ca2a..5700650 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/systems/fluid/ForgeFluidTankInteractor.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/systems/fluid/ForgeFluidTankInteractor.java @@ -1,5 +1,7 @@ -package me.hypherionmc.craterlib.systems.fluid; +package com.hypherionmc.craterlib.systems.fluid; +import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder; +import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; import org.jetbrains.annotations.NotNull; diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/systems/fluid/ForgeFluidUtils.java b/Forge/src/main/java/com/hypherionmc/craterlib/systems/fluid/ForgeFluidUtils.java similarity index 95% rename from Forge/src/main/java/me/hypherionmc/craterlib/systems/fluid/ForgeFluidUtils.java rename to Forge/src/main/java/com/hypherionmc/craterlib/systems/fluid/ForgeFluidUtils.java index 38f1810..759f09e 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/systems/fluid/ForgeFluidUtils.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/systems/fluid/ForgeFluidUtils.java @@ -1,4 +1,4 @@ -package me.hypherionmc.craterlib.systems.fluid; +package com.hypherionmc.craterlib.systems.fluid; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.AbstractTexture; diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/systems/fluid/ForgeWrappedFluidTank.java b/Forge/src/main/java/com/hypherionmc/craterlib/systems/fluid/ForgeWrappedFluidTank.java similarity index 93% rename from Forge/src/main/java/me/hypherionmc/craterlib/systems/fluid/ForgeWrappedFluidTank.java rename to Forge/src/main/java/com/hypherionmc/craterlib/systems/fluid/ForgeWrappedFluidTank.java index 9514bcb..1af6633 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/systems/fluid/ForgeWrappedFluidTank.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/systems/fluid/ForgeWrappedFluidTank.java @@ -1,5 +1,7 @@ -package me.hypherionmc.craterlib.systems.fluid; +package com.hypherionmc.craterlib.systems.fluid; +import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank; +import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidTank; import net.minecraftforge.fluids.capability.IFluidHandler; diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/systems/inventory/ForgeInventoryWrapper.java b/Forge/src/main/java/com/hypherionmc/craterlib/systems/inventory/ForgeInventoryWrapper.java similarity index 94% rename from Forge/src/main/java/me/hypherionmc/craterlib/systems/inventory/ForgeInventoryWrapper.java rename to Forge/src/main/java/com/hypherionmc/craterlib/systems/inventory/ForgeInventoryWrapper.java index be506ac..63f8154 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/systems/inventory/ForgeInventoryWrapper.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/systems/inventory/ForgeInventoryWrapper.java @@ -1,6 +1,7 @@ -package me.hypherionmc.craterlib.systems.inventory; +package com.hypherionmc.craterlib.systems.inventory; import com.google.common.base.Suppliers; +import com.hypherionmc.craterlib.core.systems.inventory.SimpleInventory; import net.minecraft.core.Direction; import net.minecraft.world.WorldlyContainer; import net.minecraft.world.entity.player.Player; @@ -12,7 +13,6 @@ import java.util.stream.IntStream; /** * @author HypherionSA - * @date 24/09/2022 */ public class ForgeInventoryWrapper implements WorldlyContainer { diff --git a/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.ILoaderHelper b/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.ILoaderHelper new file mode 100644 index 0000000..cbf071c --- /dev/null +++ b/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.ILoaderHelper @@ -0,0 +1 @@ +com.hypherionmc.craterlib.common.ForgeLoaderHelper diff --git a/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibClientHelper b/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibClientHelper new file mode 100644 index 0000000..56f4b86 --- /dev/null +++ b/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibClientHelper @@ -0,0 +1 @@ +com.hypherionmc.craterlib.client.ForgeClientHelper diff --git a/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibCommonHelper b/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibCommonHelper new file mode 100644 index 0000000..6762b34 --- /dev/null +++ b/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibCommonHelper @@ -0,0 +1 @@ +com.hypherionmc.craterlib.common.ForgeCommonHelper diff --git a/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibFluidHelper b/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibFluidHelper new file mode 100644 index 0000000..c8639a2 --- /dev/null +++ b/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibFluidHelper @@ -0,0 +1 @@ +com.hypherionmc.craterlib.common.ForgeFluidHelper diff --git a/Forge/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.ILoaderHelper b/Forge/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.ILoaderHelper deleted file mode 100644 index abf0ea4..0000000 --- a/Forge/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.ILoaderHelper +++ /dev/null @@ -1 +0,0 @@ -me.hypherionmc.craterlib.common.ForgeLoaderHelper diff --git a/Forge/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibClientHelper b/Forge/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibClientHelper deleted file mode 100644 index 8a73f15..0000000 --- a/Forge/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibClientHelper +++ /dev/null @@ -1 +0,0 @@ -me.hypherionmc.craterlib.client.ForgeClientHelper diff --git a/Forge/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibCommonHelper b/Forge/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibCommonHelper deleted file mode 100644 index 4ce84ae..0000000 --- a/Forge/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibCommonHelper +++ /dev/null @@ -1 +0,0 @@ -me.hypherionmc.craterlib.common.ForgeCommonHelper diff --git a/Forge/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibFluidHelper b/Forge/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibFluidHelper deleted file mode 100644 index 4634fba..0000000 --- a/Forge/src/main/resources/META-INF/services/me.hypherionmc.craterlib.platform.services.LibFluidHelper +++ /dev/null @@ -1 +0,0 @@ -me.hypherionmc.craterlib.common.ForgeFluidHelper diff --git a/Forge/src/main/resources/craterlib.forge.mixins.json b/Forge/src/main/resources/craterlib.forge.mixins.json index df3210a..5729a87 100644 --- a/Forge/src/main/resources/craterlib.forge.mixins.json +++ b/Forge/src/main/resources/craterlib.forge.mixins.json @@ -1,7 +1,7 @@ { "required": true, "minVersion": "0.8", - "package": "me.hypherionmc.craterlib.mixin", + "package": "com.hypherionmc.craterlib.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ "BlockEntityMixin" diff --git a/README.md b/README.md index 5194459..967f37f 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ *** -A library mod used by HypherionSA's mods. Mostly used by Hyper Lighting 2. +A library mod used by HypherionSA and First Dark Development mods to make porting and multiple modloader support easier *** @@ -16,13 +16,13 @@ A library mod used by HypherionSA's mods. Mostly used by Hyper Lighting 2. * Built in FluidTank and Energy systems for Forge/Fabric (Forge versions are just wrappers). * Built in Optifine-Compat utilities * Various utilities for Blockstates, LANG, Math and Rendering -* Cross Mod-Loader Events +* Cross Mod-Loader Events - Based on [Acara](https://github.com/Keksuccino/acara) * Cross Mod-Loader Config Screens (Based on [Cloth Config Lite](https://github.com/shedaniel/cloth-config-lite)) * Automatic ModMenu and Forge Config screen registration * Built in Cross Mod-Loader Network system -* TODO: Various GUI widgets and Utilities -* TODO: Cross Mod-Loader Dynamic Lighting -* TODO: Texture Utils +* WIP: Various GUI widgets and Utilities +* ~~TODO: Cross Mod-Loader Dynamic Lighting~~ +* WIP: Texture Utils * TODO: Sync Config From Server to Client *** diff --git a/build.gradle b/build.gradle index 6a008f2..eb2200c 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { } registrationUtils { - group 'me.hypherionmc.craterlib.systems.reg' + group 'com.hypherionmc.craterlib.core.systems.reg' projects { Common { type 'common'; project ':Common' } Fabric { type 'fabric'; project ':Fabric' }