diff --git a/src/main/java/com/mmodding/mmodding_lib/Events.java b/src/main/java/com/mmodding/mmodding_lib/Events.java index 56e8596..1bf270d 100644 --- a/src/main/java/com/mmodding/mmodding_lib/Events.java +++ b/src/main/java/com/mmodding/mmodding_lib/Events.java @@ -1,6 +1,7 @@ package com.mmodding.mmodding_lib; import com.mmodding.mmodding_lib.ducks.GeneratorOptionsDuckInterface; +import com.mmodding.mmodding_lib.ducks.WorldDuckInterface; import com.mmodding.mmodding_lib.library.caches.CacheAccess; import com.mmodding.mmodding_lib.library.caches.Caches; import com.mmodding.mmodding_lib.library.config.Config; @@ -20,9 +21,19 @@ public class Events { private static void serverLoad(MinecraftServer server, ServerWorld world) { GeneratorOptions generatorOptions = server.getSaveProperties().getGeneratorOptions(); - GeneratorOptionsDuckInterface ducked = (GeneratorOptionsDuckInterface) generatorOptions; + GeneratorOptionsDuckInterface duckedOptions = (GeneratorOptionsDuckInterface) generatorOptions; PersistentStateManager stateManager = world.getPersistentStateManager(); - stateManager.getOrCreate(ducked::mmodding_lib$stateFromNbt, ducked::mmodding_lib$createDifferedSeedsState, "differedSeedsState"); + stateManager.getOrCreate( + duckedOptions::mmodding_lib$differedSeedsStateFromNbt, + duckedOptions::mmodding_lib$createDifferedSeedsState, + "differed_seeds_state" + ); + WorldDuckInterface duckedWorld = (WorldDuckInterface) world; + stateManager.getOrCreate( + duckedWorld::mmodding_lib$stellarStatusStateFromNbt, + duckedWorld::mmodding_lib$createStellarStatusState, + "stellar_status_state" + ); } private static void serverInit(ServerPlayNetworkHandler handler, MinecraftServer server) { diff --git a/src/main/java/com/mmodding/mmodding_lib/ducks/ClientStellarStatusDuckInterface.java b/src/main/java/com/mmodding/mmodding_lib/ducks/ClientStellarStatusDuckInterface.java deleted file mode 100644 index af341b2..0000000 --- a/src/main/java/com/mmodding/mmodding_lib/ducks/ClientStellarStatusDuckInterface.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.mmodding.mmodding_lib.ducks; - -import com.mmodding.mmodding_lib.library.stellar.client.ClientStellarStatus; -import net.minecraft.util.Identifier; -import org.quiltmc.loader.api.minecraft.ClientOnly; - -@ClientOnly -public interface ClientStellarStatusDuckInterface extends StellarStatusDuckInterface { - - void mmodding_lib$setStellarStatus(Identifier identifier, ClientStellarStatus stellarStatus); -} diff --git a/src/main/java/com/mmodding/mmodding_lib/ducks/GeneratorOptionsDuckInterface.java b/src/main/java/com/mmodding/mmodding_lib/ducks/GeneratorOptionsDuckInterface.java index 43254eb..b8586cc 100644 --- a/src/main/java/com/mmodding/mmodding_lib/ducks/GeneratorOptionsDuckInterface.java +++ b/src/main/java/com/mmodding/mmodding_lib/ducks/GeneratorOptionsDuckInterface.java @@ -18,5 +18,5 @@ public interface GeneratorOptionsDuckInterface { DifferedSeedsState mmodding_lib$createDifferedSeedsState(); - DifferedSeedsState mmodding_lib$stateFromNbt(NbtCompound nbt); + DifferedSeedsState mmodding_lib$differedSeedsStateFromNbt(NbtCompound nbt); } diff --git a/src/main/java/com/mmodding/mmodding_lib/ducks/ServerStellarStatusDuckInterface.java b/src/main/java/com/mmodding/mmodding_lib/ducks/ServerStellarStatusDuckInterface.java deleted file mode 100644 index fc80634..0000000 --- a/src/main/java/com/mmodding/mmodding_lib/ducks/ServerStellarStatusDuckInterface.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.mmodding.mmodding_lib.ducks; - -import com.mmodding.mmodding_lib.library.stellar.StellarStatus; -import net.minecraft.util.Identifier; - -import java.util.Map; - -public interface ServerStellarStatusDuckInterface extends StellarStatusDuckInterface { - - Map mmodding_lib$getAllStellarStatus(); -} diff --git a/src/main/java/com/mmodding/mmodding_lib/ducks/StellarStatusDuckInterface.java b/src/main/java/com/mmodding/mmodding_lib/ducks/StellarStatusDuckInterface.java deleted file mode 100644 index 2ae106f..0000000 --- a/src/main/java/com/mmodding/mmodding_lib/ducks/StellarStatusDuckInterface.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mmodding.mmodding_lib.ducks; - -import com.mmodding.mmodding_lib.library.stellar.StellarStatus; -import net.minecraft.util.Identifier; - -public interface StellarStatusDuckInterface { - - StellarStatus mmodding_lib$getStellarStatus(Identifier identifier); -} diff --git a/src/main/java/com/mmodding/mmodding_lib/ducks/WorldDuckInterface.java b/src/main/java/com/mmodding/mmodding_lib/ducks/WorldDuckInterface.java new file mode 100644 index 0000000..8c54223 --- /dev/null +++ b/src/main/java/com/mmodding/mmodding_lib/ducks/WorldDuckInterface.java @@ -0,0 +1,21 @@ +package com.mmodding.mmodding_lib.ducks; + +import com.mmodding.mmodding_lib.library.stellar.StellarStatus; +import com.mmodding.mmodding_lib.persistentstates.StellarStatusState; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.util.Identifier; + +import java.util.Map; + +public interface WorldDuckInterface { + + StellarStatus mmodding_lib$getStellarStatus(Identifier identifier); + + Map mmodding_lib$getAllStellarStatus(); + + void mmodding_lib$putStellarStatus(Identifier identifier, StellarStatus status); + + StellarStatusState mmodding_lib$createStellarStatusState(); + + StellarStatusState mmodding_lib$stellarStatusStateFromNbt(NbtCompound nbt); +} diff --git a/src/main/java/com/mmodding/mmodding_lib/library/blockentities/display/BlockEntityDisplayExtensions.java b/src/main/java/com/mmodding/mmodding_lib/library/blockentities/display/BlockEntityDisplayExtensions.java new file mode 100644 index 0000000..42901bf --- /dev/null +++ b/src/main/java/com/mmodding/mmodding_lib/library/blockentities/display/BlockEntityDisplayExtensions.java @@ -0,0 +1,12 @@ +package com.mmodding.mmodding_lib.library.blockentities.display; + +import com.mmodding.mmodding_lib.library.texts.LocatedText; +import org.jetbrains.annotations.ApiStatus; + +import java.util.List; + +@ApiStatus.Experimental +public interface BlockEntityDisplayExtensions { + + List getDisplayedTexts(); +} diff --git a/src/main/java/com/mmodding/mmodding_lib/library/blocks/BlockRegistrable.java b/src/main/java/com/mmodding/mmodding_lib/library/blocks/BlockRegistrable.java index 917323e..d7b7aa4 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/blocks/BlockRegistrable.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/blocks/BlockRegistrable.java @@ -2,7 +2,7 @@ import com.mmodding.mmodding_lib.library.utils.Registrable; import com.mmodding.mmodding_lib.library.utils.RegistrationUtils; -import com.mmodding.mmodding_lib.library.client.render.RenderLayerOperations; +import com.mmodding.mmodding_lib.library.client.render.layer.RenderLayerOperations; import net.minecraft.block.Block; import net.minecraft.block.BlockWithEntity; import net.minecraft.item.BlockItem; diff --git a/src/main/java/com/mmodding/mmodding_lib/library/blocks/CustomGrowsDownPlantBlock.java b/src/main/java/com/mmodding/mmodding_lib/library/blocks/CustomGrowsDownPlantBlock.java index 7b3c3c3..24ed541 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/blocks/CustomGrowsDownPlantBlock.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/blocks/CustomGrowsDownPlantBlock.java @@ -2,7 +2,7 @@ import com.mmodding.mmodding_lib.library.utils.IdentifierUtils; import com.mmodding.mmodding_lib.library.utils.RegistrationUtils; -import com.mmodding.mmodding_lib.library.client.render.RenderLayerOperations; +import com.mmodding.mmodding_lib.library.client.render.layer.RenderLayerOperations; import net.minecraft.block.*; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; diff --git a/src/main/java/com/mmodding/mmodding_lib/library/blocks/CustomLilyPadBlock.java b/src/main/java/com/mmodding/mmodding_lib/library/blocks/CustomLilyPadBlock.java new file mode 100644 index 0000000..a20fe68 --- /dev/null +++ b/src/main/java/com/mmodding/mmodding_lib/library/blocks/CustomLilyPadBlock.java @@ -0,0 +1,48 @@ +package com.mmodding.mmodding_lib.library.blocks; + +import net.minecraft.block.LilyPadBlock; +import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemGroup; +import org.quiltmc.qsl.item.setting.api.QuiltItemSettings; + +import java.util.concurrent.atomic.AtomicBoolean; + +public class CustomLilyPadBlock extends LilyPadBlock implements BlockRegistrable, BlockWithItem { + + private final AtomicBoolean registered = new AtomicBoolean(false); + + private BlockItem item = null; + + public CustomLilyPadBlock(Settings settings) { + this(settings, false); + } + + public CustomLilyPadBlock(Settings settings, boolean hasItem) { + this(settings, hasItem, (ItemGroup) null); + } + + public CustomLilyPadBlock(Settings settings, boolean hasItem, ItemGroup itemGroup) { + this(settings, hasItem, itemGroup != null ? new QuiltItemSettings().group(itemGroup) : new QuiltItemSettings()); + } + + public CustomLilyPadBlock(Settings settings, boolean hasItem, Item.Settings itemSettings) { + super(settings); + if (hasItem) this.item = new BlockItem(this, itemSettings); + } + + @Override + public BlockItem getItem() { + return this.item; + } + + @Override + public boolean isNotRegistered() { + return !this.registered.get(); + } + + @Override + public void setRegistered() { + this.registered.set(true); + } +} diff --git a/src/main/java/com/mmodding/mmodding_lib/library/client/render/HudRendering.java b/src/main/java/com/mmodding/mmodding_lib/library/client/render/HudRendering.java new file mode 100644 index 0000000..2bc7e0e --- /dev/null +++ b/src/main/java/com/mmodding/mmodding_lib/library/client/render/HudRendering.java @@ -0,0 +1,13 @@ +package com.mmodding.mmodding_lib.library.client.render; + +import com.mmodding.mmodding_lib.library.utils.Colors; +import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; +import net.minecraft.client.MinecraftClient; +import net.minecraft.text.Text; + +public class HudRendering { + + public static void renderTextOnHud(Text text, int x, int y, Colors.RGB color) { + HudRenderCallback.EVENT.register((matrices, ticks) -> MinecraftClient.getInstance().textRenderer.draw(matrices, text, x, y, color.toDecimal())); + } +} diff --git a/src/main/java/com/mmodding/mmodding_lib/library/client/render/RenderLayerElements.java b/src/main/java/com/mmodding/mmodding_lib/library/client/render/layer/RenderLayerElements.java similarity index 99% rename from src/main/java/com/mmodding/mmodding_lib/library/client/render/RenderLayerElements.java rename to src/main/java/com/mmodding/mmodding_lib/library/client/render/layer/RenderLayerElements.java index e7d6201..c580176 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/client/render/RenderLayerElements.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/client/render/layer/RenderLayerElements.java @@ -1,4 +1,4 @@ -package com.mmodding.mmodding_lib.library.client.render; +package com.mmodding.mmodding_lib.library.client.render.layer; import com.mmodding.mmodding_lib.mixin.accessors.client.RenderPhaseAccessor; import net.minecraft.client.render.RenderPhase; diff --git a/src/main/java/com/mmodding/mmodding_lib/library/client/render/RenderLayerOperations.java b/src/main/java/com/mmodding/mmodding_lib/library/client/render/layer/RenderLayerOperations.java similarity index 93% rename from src/main/java/com/mmodding/mmodding_lib/library/client/render/RenderLayerOperations.java rename to src/main/java/com/mmodding/mmodding_lib/library/client/render/layer/RenderLayerOperations.java index 8ea4020..fc34580 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/client/render/RenderLayerOperations.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/client/render/layer/RenderLayerOperations.java @@ -1,4 +1,4 @@ -package com.mmodding.mmodding_lib.library.client.render; +package com.mmodding.mmodding_lib.library.client.render.layer; import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandlerRegistry; import net.minecraft.block.Block; diff --git a/src/main/java/com/mmodding/mmodding_lib/library/enchantments/types/DefaultEnchantmentType.java b/src/main/java/com/mmodding/mmodding_lib/library/enchantments/types/DefaultEnchantmentType.java index 193e312..92181bc 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/enchantments/types/DefaultEnchantmentType.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/enchantments/types/DefaultEnchantmentType.java @@ -2,7 +2,7 @@ import com.mmodding.mmodding_lib.library.enchantments.CustomEnchantment; import com.mmodding.mmodding_lib.library.utils.FilterList; -import com.mmodding.mmodding_lib.library.utils.Prefix; +import com.mmodding.mmodding_lib.library.texts.Prefix; import net.minecraft.item.EnchantedBookItem; import net.minecraft.item.Items; import net.minecraft.util.Formatting; diff --git a/src/main/java/com/mmodding/mmodding_lib/library/enchantments/types/EnchantmentType.java b/src/main/java/com/mmodding/mmodding_lib/library/enchantments/types/EnchantmentType.java index 71b7ba8..2cac101 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/enchantments/types/EnchantmentType.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/enchantments/types/EnchantmentType.java @@ -4,7 +4,7 @@ import com.mmodding.mmodding_lib.library.enchantments.CustomEnchantment; import com.mmodding.mmodding_lib.library.items.settings.AdvancedItemSettings; import com.mmodding.mmodding_lib.library.utils.FilterList; -import com.mmodding.mmodding_lib.library.utils.Prefix; +import com.mmodding.mmodding_lib.library.texts.Prefix; import com.mmodding.mmodding_lib.library.utils.TweakFunction; import net.minecraft.item.EnchantedBookItem; import net.minecraft.util.Formatting; diff --git a/src/main/java/com/mmodding/mmodding_lib/library/events/networking/client/ClientStellarStatusNetworkingEvents.java b/src/main/java/com/mmodding/mmodding_lib/library/events/networking/client/ClientStellarStatusNetworkingEvents.java index 3b1278c..e3a843d 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/events/networking/client/ClientStellarStatusNetworkingEvents.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/events/networking/client/ClientStellarStatusNetworkingEvents.java @@ -1,6 +1,6 @@ package com.mmodding.mmodding_lib.library.events.networking.client; -import com.mmodding.mmodding_lib.library.stellar.client.ClientStellarStatus; +import com.mmodding.mmodding_lib.library.stellar.StellarStatus; import net.minecraft.util.Identifier; import org.quiltmc.loader.api.minecraft.ClientOnly; import org.quiltmc.qsl.base.api.event.Event; @@ -24,13 +24,13 @@ public class ClientStellarStatusNetworkingEvents { @FunctionalInterface public interface Before { - void beforeStellarStatusReceived(Identifier identifier, ClientStellarStatus status); + void beforeStellarStatusReceived(Identifier identifier, StellarStatus status); } @ClientOnly @FunctionalInterface public interface After { - void afterStellarStatusReceived(Identifier identifier, ClientStellarStatus status); + void afterStellarStatusReceived(Identifier identifier, StellarStatus status); } } diff --git a/src/main/java/com/mmodding/mmodding_lib/library/fluids/FluidRegistrable.java b/src/main/java/com/mmodding/mmodding_lib/library/fluids/FluidRegistrable.java index 46982dc..16aaf33 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/fluids/FluidRegistrable.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/fluids/FluidRegistrable.java @@ -1,6 +1,6 @@ package com.mmodding.mmodding_lib.library.fluids; -import com.mmodding.mmodding_lib.library.client.render.RenderLayerOperations; +import com.mmodding.mmodding_lib.library.client.render.layer.RenderLayerOperations; import com.mmodding.mmodding_lib.library.utils.EnvironmentUtils; import com.mmodding.mmodding_lib.library.utils.Registrable; import com.mmodding.mmodding_lib.library.utils.RegistrationUtils; diff --git a/src/main/java/com/mmodding/mmodding_lib/library/glint/client/GlintPack.java b/src/main/java/com/mmodding/mmodding_lib/library/glint/client/GlintPack.java index d1d0bb4..1cbb4fd 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/glint/client/GlintPack.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/glint/client/GlintPack.java @@ -1,6 +1,6 @@ package com.mmodding.mmodding_lib.library.glint.client; -import com.mmodding.mmodding_lib.library.client.render.RenderLayerElements; +import com.mmodding.mmodding_lib.library.client.render.layer.RenderLayerElements; import com.mmodding.mmodding_lib.library.client.utils.RenderLayerUtils; import com.mmodding.mmodding_lib.library.utils.TextureLocation; import com.mojang.blaze3d.vertex.*; diff --git a/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/BadgeRegistrable.java b/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/BadgeRegistrable.java new file mode 100644 index 0000000..2ed9212 --- /dev/null +++ b/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/BadgeRegistrable.java @@ -0,0 +1,14 @@ +package com.mmodding.mmodding_lib.library.integrations.modmenu; + +import com.mmodding.mmodding_lib.library.utils.Registrable; +import net.minecraft.util.Identifier; + +public interface BadgeRegistrable extends Registrable { + + default void register(Identifier identifier) { + if (this instanceof CustomBadge item && this.isNotRegistered()) { + ModMenuIntegration.CUSTOM_BADGES_REGISTRY.put(identifier, item); + this.setRegistered(); + } + } +} diff --git a/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/CustomBadge.java b/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/CustomBadge.java new file mode 100644 index 0000000..e136ebe --- /dev/null +++ b/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/CustomBadge.java @@ -0,0 +1,64 @@ +package com.mmodding.mmodding_lib.library.integrations.modmenu; + +import com.mmodding.mmodding_lib.library.utils.BiList; +import com.mmodding.mmodding_lib.library.utils.Colors; +import org.quiltmc.loader.api.QuiltLoader; +import org.quiltmc.loader.api.entrypoint.EntrypointContainer; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Supplier; + +public class CustomBadge implements BadgeRegistrable { + + private final AtomicBoolean registered = new AtomicBoolean(false); + + private final BiList> entrypointInfo; + private final Provider provider; + private final Supplier outlineColor; + private final Supplier fillColor; + + public CustomBadge(BiList> entrypointInfo, Provider provider, Colors.RGB outlineColor, Colors.RGB fillColor) { + this(entrypointInfo, provider, () -> outlineColor, () -> fillColor); + } + + public CustomBadge(BiList> entrypointInfo, Provider provider, Supplier outlineColor, Supplier fillColor) { + this.entrypointInfo = entrypointInfo; + this.provider = provider; + this.outlineColor = outlineColor; + this.fillColor = fillColor; + } + + public List getMods() { + List mods = new ArrayList<>(); + this.entrypointInfo.forEach( + (entrypointKey, entrypointClass) -> mods.addAll(this.provider.getMods(QuiltLoader.getEntrypointContainers(entrypointKey, entrypointClass))) + ); + return mods; + } + + public Colors.RGB getOutlineColor() { + return this.outlineColor.get(); + } + + public Colors.RGB getFillColor() { + return this.fillColor.get(); + } + + @Override + public boolean isNotRegistered() { + return !this.registered.get(); + } + + @Override + public void setRegistered() { + this.registered.set(true); + } + + @FunctionalInterface + public interface Provider { + + List getMods(List> entrypointContainers); + } +} diff --git a/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/ModMenuIntegration.java b/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/ModMenuIntegration.java new file mode 100644 index 0000000..49703b1 --- /dev/null +++ b/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/ModMenuIntegration.java @@ -0,0 +1,69 @@ +package com.mmodding.mmodding_lib.library.integrations.modmenu; + +import com.mmodding.mmodding_lib.MModdingLib; +import com.mmodding.mmodding_lib.library.base.MModdingBootstrapInitializer; +import com.mmodding.mmodding_lib.library.base.MModdingClientModInitializer; +import com.mmodding.mmodding_lib.library.base.MModdingModInitializer; +import com.mmodding.mmodding_lib.library.base.MModdingServerModInitializer; +import com.mmodding.mmodding_lib.library.utils.*; +import net.minecraft.util.Identifier; +import org.quiltmc.loader.api.entrypoint.EntrypointContainer; +import org.quiltmc.qsl.base.api.entrypoint.ModInitializer; +import org.quiltmc.qsl.base.api.entrypoint.client.ClientModInitializer; +import org.quiltmc.qsl.base.api.entrypoint.server.DedicatedServerModInitializer; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ModMenuIntegration { + + public static final Map CUSTOM_BADGES_REGISTRY = new HashMap<>(); + + private static class ModsUsingMModdingLibrary implements CustomBadge.Provider { + + @Override + public List getMods(List> entrypointContainers) { + List mods = new ArrayList<>(); + entrypointContainers.stream() + .filter(this::filterMods) + .forEachOrdered(entrypointContainer -> mods.add(entrypointContainer.getProvider().metadata().id())); + return mods; + } + + private boolean filterMods(EntrypointContainer entrypointContainer) { + if (entrypointContainer.getEntrypoint() instanceof ModInitializer) { + return entrypointContainer.getEntrypoint() instanceof MModdingModInitializer; + } + else if (entrypointContainer.getEntrypoint() instanceof ClientModInitializer) { + return entrypointContainer.getEntrypoint() instanceof MModdingClientModInitializer; + } + else if (entrypointContainer.getEntrypoint() instanceof DedicatedServerModInitializer) { + return entrypointContainer.getEntrypoint() instanceof MModdingServerModInitializer; + } + else { + return entrypointContainer.getEntrypoint() instanceof MModdingBootstrapInitializer; + } + } + } + + static { + BiList> entrypointInfo = new BiArrayList<>(); + entrypointInfo.add(ModInitializer.ENTRYPOINT_KEY, ModInitializer.class); + if (EnvironmentUtils.isClient()) { + entrypointInfo.add(ClientModInitializer.ENTRYPOINT_KEY, ClientModInitializer.class); + } + else if (EnvironmentUtils.isServer()) { + entrypointInfo.add(DedicatedServerModInitializer.ENTRYPOINT_KEY, DedicatedServerModInitializer.class); + } + entrypointInfo.add(MModdingBootstrapInitializer.ENTRYPOINT_KEY, MModdingBootstrapInitializer.class); + CustomBadge mmoddingLibraryModBadge = new CustomBadge( + entrypointInfo, + new ModsUsingMModdingLibrary(), + new Colors.RGB(100, 0, 200), + new Colors.RGB(80, 0, 180) + ); + mmoddingLibraryModBadge.register(MModdingLib.createId("uses_mmodding_library")); + } +} diff --git a/src/main/java/com/mmodding/mmodding_lib/library/stellar/StellarObject.java b/src/main/java/com/mmodding/mmodding_lib/library/stellar/StellarObject.java index a9702f3..bb1bb0c 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/stellar/StellarObject.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/stellar/StellarObject.java @@ -1,6 +1,6 @@ package com.mmodding.mmodding_lib.library.stellar; -import com.mmodding.mmodding_lib.ducks.ClientStellarStatusDuckInterface; +import com.mmodding.mmodding_lib.ducks.WorldDuckInterface; import com.mmodding.mmodding_lib.library.client.utils.RenderLayerUtils; import com.mmodding.mmodding_lib.library.stellar.client.StellarCycle; import com.mmodding.mmodding_lib.library.utils.MModdingGlobalMaps; @@ -40,7 +40,7 @@ public StellarCycle getCycle() { } public StellarStatus getStatus(ClientWorld world) { - return ((ClientStellarStatusDuckInterface) world).mmodding_lib$getStellarStatus(this.stellarCycle); + return ((WorldDuckInterface) world).mmodding_lib$getStellarStatus(this.stellarCycle); } public void render(MatrixStack matrices, ClientWorld world, float tickDelta) { diff --git a/src/main/java/com/mmodding/mmodding_lib/library/stellar/StellarStatus.java b/src/main/java/com/mmodding/mmodding_lib/library/stellar/StellarStatus.java index c64c999..230a2e8 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/stellar/StellarStatus.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/stellar/StellarStatus.java @@ -4,9 +4,9 @@ public class StellarStatus { - private final long fullRotationTime; + protected final long fullRotationTime; - private long time; + protected long time; public StellarStatus(long fullRotationTime) { this.fullRotationTime = fullRotationTime; @@ -16,13 +16,15 @@ public static StellarStatus of(StellarCycle stellarCycle) { return new StellarStatus(stellarCycle.getFullRotationTime()); } + public static StellarStatus of(long currentTime, long fullTime) { + StellarStatus stellarStatus = new StellarStatus(fullTime); + stellarStatus.time = currentTime; + return stellarStatus; + } + public void tick() { this.time = this.time < this.fullRotationTime ? this.time + 1L : 0L; - } - - public void setCurrentTime(long time) { - this.time = time; - } + } public long getCurrentTime() { return this.time; diff --git a/src/main/java/com/mmodding/mmodding_lib/library/stellar/client/ClientStellarStatus.java b/src/main/java/com/mmodding/mmodding_lib/library/stellar/client/ClientStellarStatus.java deleted file mode 100644 index 53df3b4..0000000 --- a/src/main/java/com/mmodding/mmodding_lib/library/stellar/client/ClientStellarStatus.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.mmodding.mmodding_lib.library.stellar.client; - -import com.mmodding.mmodding_lib.library.stellar.StellarStatus; -import org.quiltmc.loader.api.minecraft.ClientOnly; - -@ClientOnly -public class ClientStellarStatus extends StellarStatus { - - public ClientStellarStatus(long fullRotationTime) { - super(fullRotationTime); - } - - public static ClientStellarStatus of(StellarCycle stellarCycle) { - return new ClientStellarStatus(stellarCycle.getFullRotationTime()); - } - - public static ClientStellarStatus of(long currentTime, long totalTime) { - ClientStellarStatus clientStellarStatus = new ClientStellarStatus(totalTime); - clientStellarStatus.setCurrentTime(currentTime); - return clientStellarStatus; - } -} diff --git a/src/main/java/com/mmodding/mmodding_lib/library/texts/LocatedText.java b/src/main/java/com/mmodding/mmodding_lib/library/texts/LocatedText.java new file mode 100644 index 0000000..250294c --- /dev/null +++ b/src/main/java/com/mmodding/mmodding_lib/library/texts/LocatedText.java @@ -0,0 +1,58 @@ +package com.mmodding.mmodding_lib.library.texts; + +import net.minecraft.text.Style; +import net.minecraft.text.Text; +import net.minecraft.text.component.LiteralComponent; +import net.minecraft.text.component.TextComponent; +import net.minecraft.util.math.Vec3f; + +import java.util.ArrayList; +import java.util.List; + +public class LocatedText extends TemplatedText { + + private final float x; + private final float y; + private final float z; + + private LocatedText(TextComponent component, List siblings, Style style, float x, float y, float z) { + super(component, siblings, style); + this.x = x; + this.y = y; + this.z = z; + } + + public static LocatedText ofPos(String text, Vec3f position) { + return new LocatedText(new LiteralComponent(text), new ArrayList<>(), Style.EMPTY, position.getX(), position.getY(), position.getZ()); + } + + public static LocatedText ofCoordinates(String text, float x, float y, float z) { + return new LocatedText(new LiteralComponent(text), new ArrayList<>(), Style.EMPTY, x, y, z); + } + + public static LocatedText empty() { + return new LocatedText(LiteralComponent.EMPTY, new ArrayList<>(), Style.EMPTY, 0.0f, 0.0f, 0.0f); + } + + public float getX() { + return this.x; + } + + public float getY() { + return this.y; + } + + public float getZ() { + return this.z; + } + + @Override + public LocatedText copyContentOnly() { + return new LocatedText(this.asComponent(), new ArrayList<>(), Style.EMPTY, this.getX(), this.getY(), this.getZ()); + } + + @Override + public LocatedText copy() { + return new LocatedText(this.asComponent(), this.getSiblings(), this.getStyle(), this.getX(), this.getY(), this.getZ()); + } +} diff --git a/src/main/java/com/mmodding/mmodding_lib/library/utils/Prefix.java b/src/main/java/com/mmodding/mmodding_lib/library/texts/Prefix.java similarity index 51% rename from src/main/java/com/mmodding/mmodding_lib/library/utils/Prefix.java rename to src/main/java/com/mmodding/mmodding_lib/library/texts/Prefix.java index 6cb10af..4cdfa60 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/utils/Prefix.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/texts/Prefix.java @@ -1,17 +1,14 @@ -package com.mmodding.mmodding_lib.library.utils; +package com.mmodding.mmodding_lib.library.texts; -import net.minecraft.text.MutableText; import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.text.component.LiteralComponent; import net.minecraft.text.component.TextComponent; -import net.minecraft.util.Formatting; import java.util.ArrayList; import java.util.List; -import java.util.function.UnaryOperator; -public class Prefix extends MutableText { +public class Prefix extends TemplatedText { private final boolean spaced; @@ -32,11 +29,7 @@ public static Prefix empty() { return new Prefix(TextComponent.EMPTY, new ArrayList<>(), Style.EMPTY, false); } - public MutableText asMutable() { - return Text.empty().append(this); - } - - public boolean isSpaced() { + public boolean isSpaced() { return this.spaced; } @@ -49,46 +42,4 @@ public Prefix copyContentOnly() { public Prefix copy() { return new Prefix(this.asComponent(), this.getSiblings(), this.getStyle(), this.isSpaced()); } - - @Override - public Prefix setStyle(Style style) { - super.setStyle(style); - return this; - } - - @Override - public Prefix append(String text) { - super.append(text); - return this; - } - - @Override - public Prefix append(Text text) { - super.append(text); - return this; - } - - @Override - public Prefix styled(UnaryOperator