From e47fd4b3a80e0178e781d3ab467db9818f3cf978 Mon Sep 17 00:00:00 2001 From: Jab125 <67534807+Jab125@users.noreply.github.com> Date: Mon, 21 Sep 2026 21:15:39 +1000 Subject: [PATCH] feat: port to 26.3 Co-Authored-By: Wilyicaro <81383021+Wilyicaro@users.noreply.github.com> --- .../src/main/kotlin/ModPlatformPlugin.kt | 33 +++++++++++ gradle.properties | 2 +- gradle/libs.versions.toml | 2 +- settings.gradle.kts | 1 + .../wily/factoryapi/FactoryAPIClient.java | 12 ++-- .../java/wily/factoryapi/FactoryEvent.java | 4 +- .../base/FactoryItemFluidHandler.java | 7 ++- .../wily/factoryapi/base/FuelManager.java | 2 + .../wily/factoryapi/base/SlotsIdentifier.java | 11 +++- .../wily/factoryapi/base/StackIngredient.java | 4 ++ .../base/client/FactoryGuiGraphics.java | 4 ++ .../factoryapi/base/client/GuiAccessor.java | 7 ++- .../client/IFactoryBlockEntityWLRenderer.java | 2 + .../factoryapi/base/client/UIAccessor.java | 11 +++- .../base/client/UIDefinitionManager.java | 10 ++-- .../client/screen/FactoryConfigScreen.java | 3 +- .../base/network/CommonRecipeManager.java | 26 ++++++++ .../factoryapi/base/network/HelloPayload.java | 21 +++++++ .../factoryapi/mixin/base/ActualGuiMixin.java | 44 ++++++++++++++ .../mixin/base/CreateWorldScreenMixin.java | 10 +++- .../mixin/base/FuelValuesAccessor.java | 2 +- .../mixin/base/GuiGraphicsMixin.java | 7 +++ .../wily/factoryapi/mixin/base/GuiMixin.java | 40 ++++++++----- .../factoryapi/mixin/base/MinecraftMixin.java | 59 ++++++++++++++++--- .../mixin/base/fabric/LevelRendererMixin.java | 2 +- .../wily/factoryapi/util/DirectionUtil.java | 5 +- .../factoryapi/util/FactoryScreenUtil.java | 42 +++++++++++-- .../factoryapi/util/StorageStringUtil.java | 9 ++- .../resources/META-INF/neoforge.mods.toml | 1 + src/main/resources/factory_api.mixins.json5 | 5 +- versions/26.3-fabric/gradle.properties | 5 ++ versions/26.3-forge/gradle.properties | 2 + versions/26.3-neoforge/gradle.properties | 2 + 33 files changed, 345 insertions(+), 52 deletions(-) create mode 100644 src/main/java/wily/factoryapi/mixin/base/ActualGuiMixin.java create mode 100644 versions/26.3-fabric/gradle.properties create mode 100644 versions/26.3-forge/gradle.properties create mode 100644 versions/26.3-neoforge/gradle.properties diff --git a/build-logic/src/main/kotlin/ModPlatformPlugin.kt b/build-logic/src/main/kotlin/ModPlatformPlugin.kt index c8cb0cc..c1e9a73 100644 --- a/build-logic/src/main/kotlin/ModPlatformPlugin.kt +++ b/build-logic/src/main/kotlin/ModPlatformPlugin.kt @@ -339,6 +339,39 @@ abstract class ModPlatformPlugin @Inject constructor() : Plugin { string(eval(current.version, ">=26.1"), "!renaming_26") { replace("renderContextualInfoBar", "extractContextualInfoBar") } + string(eval(current.version, ">=26.3"), "!renaming_26_3") { + replace("com.mojang.blaze3d.PrimitiveTopology", "com.mojang.renderpearl.api.pipeline.PrimitiveTopology") + } + string(eval(current.version, ">=26.3"), "!renaming_26_3") { + replace("com.mojang.blaze3d.pipeline.", "com.mojang.renderpearl.api.pipeline.") + } + string(eval(current.version, ">=26.3"), "!renaming_26_3") { + replace("com/mojang/blaze3d/pipeline/", "com/mojang/renderpearl/api/pipeline/") + } + string(eval(current.version, ">=26.3"), "!renaming_26_3") { + replace("com.mojang.blaze3d.buffers.", "com.mojang.renderpearl.api.buffers.") + } + string(eval(current.version, ">=26.3"), "!renaming_26_3") { + replace("com.mojang.blaze3d.systems.RenderPass", "com.mojang.renderpearl.api.commands.RenderPass") + } + string(eval(current.version, ">=26.3"), "!renaming_26_3") { + replace("com.mojang.blaze3d.platform.CompareOp", "com.mojang.renderpearl.api.pipeline.CompareOp") + } + string(eval(current.version, ">=26.3"), "!renaming_26_3") { + replace("com.mojang.blaze3d.platform.CompareOp", "com.mojang.renderpearl.api.pipeline.CompareOp") + } + string(eval(current.version, ">=26.3"), "!renaming_26_3") { + replace("com.mojang.blaze3d.pipeline.RenderTarget", "com.mojang.blaze3d.pipeline.RenderTarget") + } + string(eval(current.version, ">=26.3"), "!renaming_26_3") { + replace("com.mojang.blaze3d.vertex.VertexFormat", "com.mojang.renderpearl.api.vertex.VertexFormat") + } + string(eval(current.version, ">=26.3"), "!renaming_26_3") { + replace("com.mojang.blaze3d.textures.GpuSampler", "com.mojang.renderpearl.api.textures.GpuSampler") + } + string(eval(current.version, ">=26.3"), "!renaming_26_3") { + replace("com.mojang.blaze3d.textures.GpuTextureView", "com.mojang.renderpearl.api.textures.GpuTextureView") + } } } } diff --git a/gradle.properties b/gradle.properties index 2c52f01..67ef47c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ org.gradle.jvmargs=-Xmx4096M archives_base_name=FactoryAPI -mod_version=2.2.9 +mod_version=2.2.10 mod_id=factory_api mod_name=Factory API mod_description=An API that is the basis for mods like Legacy4J, Factocrafty and Better Furnaces Reforged, that work on different mod loaders. diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 807ce00..3a3acdd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ stonecutter-postprocess = "2.1-beta.8" mod-publish = "2.2.0" dotenv-gradle = "4.0.0" fabric-loom = "1.15-SNAPSHOT" -neoforge-moddev = "2.0.141" +neoforge-moddev = "2.0.147" forge-gradle = "[7.0.29,8)" foojay = "1.0.0" fabric-loader = "0.18.6" diff --git a/settings.gradle.kts b/settings.gradle.kts index bfdac45..c8be9a1 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -39,6 +39,7 @@ stonecutter { match("1.21.10", "fabric", "forge", "neoforge") match("1.21.11", "fabric", "forge", "neoforge") match("26.1.2", "fabric", "forge", "neoforge") + match("26.3", "fabric", "forge", "neoforge") vcsVersion = "1.20.4-fabric" } } diff --git a/src/main/java/wily/factoryapi/FactoryAPIClient.java b/src/main/java/wily/factoryapi/FactoryAPIClient.java index 5a40083..ad5edd2 100644 --- a/src/main/java/wily/factoryapi/FactoryAPIClient.java +++ b/src/main/java/wily/factoryapi/FactoryAPIClient.java @@ -108,7 +108,6 @@ *///?} import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; -import net.fabricmc.fabric.api.client.model.loading.v1.ModelLoadingPlugin; import net.fabricmc.fabric.api.transfer.v1.client.fluid.FluidVariantRendering; import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; import net.fabricmc.fabric.api.client.rendering.v1.*; @@ -224,7 +223,7 @@ public static ProfilerFiller getProfiler() { } public static /*? if <1.21.2 {*/ToastComponent/*?} else {*//*ToastManager*//*?}*/getToasts() { - return Minecraft.getInstance()./*? if <1.21.2 {*/getToasts/*?} else {*//*getToastManager*//*?}*/(); + return Minecraft.getInstance()./*? if <1.21.2 {*/getToasts/*?} else if <26.2 {*//*getToastManager*//*?} else {*//*gui.toastManager*//*?}*/(); } public static float getPartialTick() { @@ -249,9 +248,12 @@ public static long getWindow() { return Minecraft.getInstance().getWindow()./*? if >=1.21.9 {*//*handle()*//*?} else {*/getWindow()/*?}*/; } + //? if <26.2 { + @Deprecated(since = "2.2.10", forRemoval = true) public static Screen getScreen() { return Minecraft.getInstance().screen; } + //?} public static void init() { registerConfigScreen(FactoryAPIPlatform.getModInfo(FactoryAPI.MOD_ID), FactoryConfigScreen::createFactoryAPIConfigScreen); @@ -261,7 +263,7 @@ public static void init() { FactoryOptions.CLIENT_STORAGE.load(); }); preTick(m-> SECURE_EXECUTOR.executeAll()); - FactoryGuiElement.HOTBAR.post().register(graphics -> UIAccessor.of(Minecraft.getInstance().gui).getChildrenRenderables().forEach(r -> { + FactoryGuiElement.HOTBAR.post().register(graphics -> UIAccessor.of(FactoryScreenUtil.getGuiOrHud(Minecraft.getInstance())).getChildrenRenderables().forEach(r -> { //? if >=26.1 { /*r.extractRenderState(graphics, 0, 0, getPartialTick()); *///?} else { @@ -290,7 +292,7 @@ public static void init() { }); //? if fabric { //? if >=1.21.9 { - /*IFactoryItemClientExtension.map.forEach((i,c)-> ArmorRenderer.register((matrices, vertexConsumers, stack, entity, slot, light, contextModel)-> vertexConsumers.submitModel(c.getHumanoidArmorModel(entity,stack,slot,contextModel), entity, matrices, /^?if <1.21.11 {^/RenderType/^?} else {^//^RenderTypes^//^?}^/.entityCutout(((IFactoryItem) i).getArmorLocation(stack, slot)), light, OverlayTexture.NO_OVERLAY, 0xFFFFFF, null), i)); + /*IFactoryItemClientExtension.map.forEach((i,c)-> ArmorRenderer.register((matrices, vertexConsumers, stack, entity, slot, light, contextModel)-> vertexConsumers.submitModel(c.getHumanoidArmorModel(entity,stack,slot,contextModel), entity, matrices, /^?if <1.21.11 {^/RenderType/^?} else {^//^RenderTypes^//^?}^/.entityCutout(((IFactoryItem) i).getArmorLocation(stack, slot)), light, OverlayTexture.NO_OVERLAY, 0xFFFFFF/^? if <26.3 {^/, null/^?}^/), i)); *///?} else { IFactoryItemClientExtension.map.forEach((i,c)-> ArmorRenderer.register((matrices, vertexConsumers, stack, entity, slot, light, contextModel)-> c.getHumanoidArmorModel(entity,stack,slot,contextModel).renderToBuffer(matrices,vertexConsumers.getBuffer(RenderType.entityCutout(((IFactoryItem) i).getArmorLocation(stack,/*? if <1.21.2 {*/ entity, /*?}*/slot))), light, OverlayTexture.NO_OVERLAY/*? if <=1.20.6 {*/, 1.0F,1.0F,1.0F, 1.0F/*?}*/),i)); //?} @@ -342,7 +344,7 @@ public static void registerPayload(CommonNetwo public static void handleExtraMenu(SecureExecutor executor, Player player, MenuType menuType, OpenExtraMenuPayload payload) { var menu = ((MenuTypeAccessor)menuType).getConstructor() instanceof FactoryExtraMenuSupplier supplier ? (T) supplier.create(payload.menuId(), player.getInventory(), payload.extra()) : menuType.create(payload.menuId(), player.getInventory()); player.containerMenu = menu; - executor.execute(()-> Minecraft.getInstance().setScreen(MenuScreensAccessor.getConstructor(menuType).create(menu, player.getInventory(), payload.component()))); + executor.execute(()-> FactoryScreenUtil.setScreen(MenuScreensAccessor.getConstructor(menuType).create(menu, player.getInventory(), payload.component()))); } public static void setup(Consumer listener) { diff --git a/src/main/java/wily/factoryapi/FactoryEvent.java b/src/main/java/wily/factoryapi/FactoryEvent.java index b348902..b891a4e 100644 --- a/src/main/java/wily/factoryapi/FactoryEvent.java +++ b/src/main/java/wily/factoryapi/FactoryEvent.java @@ -443,8 +443,10 @@ public void register(boolean c2s, CommonNetwor /^GatherComponentsEvent.BUS.addListener(e-> { if (e.getOwner() == item) e.register(type,value); }); + ^///?} elif neoforge && <26.2 { + /^FactoryAPIPlatform.getModEventBus().addListener(ModifyDefaultComponentsEvent.class, e-> e.modify(item, bc -> bc.set(type,value))); ^///?} elif neoforge { - /^FactoryAPIPlatform.getModEventBus().addListener(ModifyDefaultComponentsEvent.class, e-> e.modify(item, bc-> bc.set(type,value))); + /^FactoryAPIPlatform.getModEventBus().addListener(ModifyDefaultComponentsEvent.class, e-> e.modify(item, (bc, ctx, item1) -> bc.set(type,value))); ^///?} } *///?} diff --git a/src/main/java/wily/factoryapi/base/FactoryItemFluidHandler.java b/src/main/java/wily/factoryapi/base/FactoryItemFluidHandler.java index 31cc9eb..64cfce3 100644 --- a/src/main/java/wily/factoryapi/base/FactoryItemFluidHandler.java +++ b/src/main/java/wily/factoryapi/base/FactoryItemFluidHandler.java @@ -8,6 +8,9 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntityType; +//? if >=26.2 { +/*import net.minecraft.world.level.block.entity.BlockEntityTypes; +*///?} import org.jetbrains.annotations.NotNull; import wily.factoryapi.FactoryAPI; import wily.factoryapi.ItemContainerPlatform; @@ -76,7 +79,7 @@ public void setFluid(FluidInstance fluid) { beTag.put(getStorageKey(), tag); //? if >=1.21.9 { /^//TODO Check if this will cause problems when placing the block - container.set(DataComponents.BLOCK_ENTITY_DATA, TypedEntityData.of(BlockEntityType.CHEST, beTag)); + container.set(DataComponents.BLOCK_ENTITY_DATA, TypedEntityData.of(/^¹? if <26.2 {¹^/BlockEntityType/^¹?} else {¹^//^¹BlockEntityTypes¹^//^¹?}¹^/.CHEST, beTag)); ^///?} else { container.set(DataComponents.BLOCK_ENTITY_DATA, CustomData.of(beTag)); //?} @@ -199,7 +202,7 @@ public void setCapacity(int capacity) { beTag.put(getStorageKey(),tag); //? if >=1.21.9 { /^//TODO Check if this will cause problems when placing the block - container.set(DataComponents.BLOCK_ENTITY_DATA, TypedEntityData.of(BlockEntityType.CHEST, beTag)); + container.set(DataComponents.BLOCK_ENTITY_DATA, TypedEntityData.of(/^¹? if <26.2 {¹^/BlockEntityType/^¹?} else {¹^//^¹BlockEntityTypes¹^//^¹?}¹^/.CHEST, beTag)); ^///?} else { container.set(DataComponents.BLOCK_ENTITY_DATA, CustomData.of(beTag)); //?} diff --git a/src/main/java/wily/factoryapi/base/FuelManager.java b/src/main/java/wily/factoryapi/base/FuelManager.java index 559fe53..68d3967 100644 --- a/src/main/java/wily/factoryapi/base/FuelManager.java +++ b/src/main/java/wily/factoryapi/base/FuelManager.java @@ -1,3 +1,4 @@ +//? if <26.3 { package wily.factoryapi.base; import net.minecraft.world.item.Item; @@ -103,3 +104,4 @@ public static void add(Item item, int burnTime){ /*throw new AssertionError();*/ } } +//?} diff --git a/src/main/java/wily/factoryapi/base/SlotsIdentifier.java b/src/main/java/wily/factoryapi/base/SlotsIdentifier.java index 102d614..4b10421 100644 --- a/src/main/java/wily/factoryapi/base/SlotsIdentifier.java +++ b/src/main/java/wily/factoryapi/base/SlotsIdentifier.java @@ -2,6 +2,9 @@ import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; +//? if >=26.2 { +/*import net.minecraft.network.chat.TextColor; +*///?} import java.awt.*; @@ -17,7 +20,13 @@ public record SlotsIdentifier(ChatFormatting color, String name,Component compon public static final SlotsIdentifier GENERIC = new SlotsIdentifier(ChatFormatting.GRAY,"single"); public Color getColor(){ - return new Color(color.getColor()); + return new Color( + //? if <26.2 { + color.getColor() + //?} else { + /*TextColor.fromLegacyFormat(color) instanceof TextColor color ? color.getValue() : 0 + *///?} + ); } public SlotsIdentifier(ChatFormatting color, String name){ diff --git a/src/main/java/wily/factoryapi/base/StackIngredient.java b/src/main/java/wily/factoryapi/base/StackIngredient.java index ab84559..09939cd 100644 --- a/src/main/java/wily/factoryapi/base/StackIngredient.java +++ b/src/main/java/wily/factoryapi/base/StackIngredient.java @@ -26,7 +26,11 @@ import net.minecraft.core.component./^? if >1.21.4 {^//^DataComponentExactPredicate^//^?} else {^/DataComponentPredicate/^?}^/; import net.minecraft.core.component.DataComponentType; *///?} +//? if <26.3 { import net.minecraft.resources.HolderSetCodec; +//?} else { +/*import net.minecraft.core.registries.codec.HolderSetCodec; +*///?} import net.minecraft.util.ExtraCodecs; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/wily/factoryapi/base/client/FactoryGuiGraphics.java b/src/main/java/wily/factoryapi/base/client/FactoryGuiGraphics.java index 92fd994..817cd92 100644 --- a/src/main/java/wily/factoryapi/base/client/FactoryGuiGraphics.java +++ b/src/main/java/wily/factoryapi/base/client/FactoryGuiGraphics.java @@ -14,7 +14,9 @@ *///?} import net.minecraft.client.renderer.GameRenderer; +//? if <26.2 { import net.minecraft.client.renderer.MultiBufferSource; +//?} import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.resources.ResourceLocation; @@ -26,9 +28,11 @@ public interface FactoryGuiGraphics { net.minecraft.client.gui.GuiGraphics context(); + //? if <26.2 { MultiBufferSource.BufferSource getBufferSource(); void pushBufferSource(MultiBufferSource.BufferSource bufferSource); void popBufferSource(); + //?} FactoryGuiMatrixStack pose(); diff --git a/src/main/java/wily/factoryapi/base/client/GuiAccessor.java b/src/main/java/wily/factoryapi/base/client/GuiAccessor.java index f444c70..525458f 100644 --- a/src/main/java/wily/factoryapi/base/client/GuiAccessor.java +++ b/src/main/java/wily/factoryapi/base/client/GuiAccessor.java @@ -2,8 +2,12 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; +//? if >=26.2 { +/*import net.minecraft.client.gui.Hud; +*///?} import net.minecraft.client.gui.components.spectator.SpectatorGui; import net.minecraft.world.item.ItemStack; +import wily.factoryapi.util.FactoryScreenUtil; public interface GuiAccessor { ItemStack getLastToolHighlight(); @@ -12,11 +16,12 @@ public interface GuiAccessor { SpectatorGui getSpectatorGui(); + //~ if >=26.2 'Gui gui' -> 'Hud gui' static GuiAccessor of(Gui gui){ return (GuiAccessor) gui; } static GuiAccessor getInstance(){ - return of(Minecraft.getInstance().gui); + return of(FactoryScreenUtil.getGuiOrHud(Minecraft.getInstance())); } } diff --git a/src/main/java/wily/factoryapi/base/client/IFactoryBlockEntityWLRenderer.java b/src/main/java/wily/factoryapi/base/client/IFactoryBlockEntityWLRenderer.java index b17f9b4..1000c9e 100644 --- a/src/main/java/wily/factoryapi/base/client/IFactoryBlockEntityWLRenderer.java +++ b/src/main/java/wily/factoryapi/base/client/IFactoryBlockEntityWLRenderer.java @@ -3,7 +3,9 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.serialization.MapCodec; import net.minecraft.client.model.geom.EntityModelSet; +//? if <26.2 { import net.minecraft.client.renderer.MultiBufferSource; +//?} //? if >=1.21.4 { /*import net.minecraft.client.renderer.special.SpecialModelRenderer; *///?} diff --git a/src/main/java/wily/factoryapi/base/client/UIAccessor.java b/src/main/java/wily/factoryapi/base/client/UIAccessor.java index 1f82bdd..7498238 100644 --- a/src/main/java/wily/factoryapi/base/client/UIAccessor.java +++ b/src/main/java/wily/factoryapi/base/client/UIAccessor.java @@ -3,6 +3,9 @@ import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; +//? if >=26.2 { +/*import net.minecraft.client.gui.Hud; +*///?} import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.Renderable; import net.minecraft.client.gui.components.Tooltip; @@ -40,9 +43,15 @@ static UIAccessor of(Screen screen) { return (UIAccessor) screen; } + //? if <26.2 { static UIAccessor of(Gui gui) { return (UIAccessor) gui; } + //?} else { + /*static UIAccessor of(Hud hud) { + return (UIAccessor) hud; + } + *///?} @Nullable Screen getScreen(); @@ -63,7 +72,7 @@ default void beforeInit(UIAccessor accessor) { putStaticElement("windowHeight", minecraft.getWindow().getHeight()); putStaticElement("width", minecraft.getWindow().getGuiScaledWidth()); putStaticElement("height", minecraft.getWindow().getGuiScaledHeight()); - getElements().put("hasScreen", ()-> FactoryAPIClient.getScreen() != null); + getElements().put("hasScreen", ()-> FactoryScreenUtil.getScreen() != null); if (getChildrenRenderables() != null) getElements().put("renderablesCount", getChildrenRenderables()::size); FactoryAPIPlatform.getMods().forEach(i -> putStaticElement("loadedMods." + i.getId(), true)); diff --git a/src/main/java/wily/factoryapi/base/client/UIDefinitionManager.java b/src/main/java/wily/factoryapi/base/client/UIDefinitionManager.java index b7fb083..f4eba76 100644 --- a/src/main/java/wily/factoryapi/base/client/UIDefinitionManager.java +++ b/src/main/java/wily/factoryapi/base/client/UIDefinitionManager.java @@ -64,8 +64,8 @@ public class UIDefinitionManager implements ResourceManagerReloadListener { public static final String UI_DEFINITIONS = "ui_definitions"; - public static final ListMap> NAMED_UI_TARGETS = new ListMap.Builder>().put("screen", Screen.class).put("accessibility_onboarding_screen", AccessibilityOnboardingScreen.class).put("title_screen",TitleScreen.class).put("options_screen", OptionsScreen.class).put("skin_customization_screen", SkinCustomizationScreen.class).put("video_settings_screen", VideoSettingsScreen.class).put("language_select_screen", LanguageSelectScreen.class).put("pack_selection_screen", PackSelectionScreen.class).put("telemetry_info_screen", TelemetryInfoScreen.class).put("online_options_screen", OnlineOptionsScreen.class).put("sound_options_screen", SoundOptionsScreen.class).put("controls_screen", ControlsScreen.class).put("mouse_settings_screen", MouseSettingsScreen.class).put("key_binds_screen", KeyBindsScreen.class).put("chat_options_screen", ChatOptionsScreen.class).put("accessibility_options_screen", AccessibilityOptionsScreen.class).put("credits_and_attribution_screen", CreditsAndAttributionScreen.class).put("win_screen", WinScreen.class).put("confirm_link_screen", ConfirmLinkScreen.class).put("select_world_screen", SelectWorldScreen.class).put("create_world_screen", CreateWorldScreen.class).put("edit_world_screen", EditWorldScreen.class).put("join_multiplayer_screen", JoinMultiplayerScreen.class)./*? if <1.21.9 {*/put("edit_server_screen", EditServerScreen.class)./*?}*/put("direct_join_server_screen", DirectJoinServerScreen.class).put("realms_main_screen", RealmsMainScreen.class).put("realms_screen", RealmsScreen.class).put("realms_confirm_screen", RealmsConfirmScreen.class).put("realms_backup_screen", RealmsBackupScreen.class).put("realms_invite_screen", RealmsInviteScreen.class).put("share_to_lan_screen", ShareToLanScreen.class).put("advancements_screen", AdvancementsScreen.class).put("stats_screen", StatsScreen.class).put("confirm_screen", ConfirmScreen.class).put("level_loading_screen", LevelLoadingScreen.class).put("progress_screen", ProgressScreen.class).put("generic_message_screen",/*? if <1.20.5 {*/GenericDirtMessageScreen/*?} else {*//*GenericMessageScreen*//*?}*/.class)./*? if <1.21.9 {*/put("receiving_level_screen", ReceivingLevelScreen.class)./*?}*/put("connect_screen", ConnectScreen.class).put("pause_screen", PauseScreen.class).put("inventory_screen", InventoryScreen.class).put("crafting_screen", CraftingScreen.class).put("container_screen", ContainerScreen.class).put("abstract_furnace_screen", AbstractFurnaceScreen.class).put("furnace_screen", FurnaceScreen.class).put("smoker_screen", SmokerScreen.class).put("blast_furnace_screen", BlastFurnaceScreen.class).put("loom_screen", LoomScreen.class).put("stonecutter_screen", StonecutterScreen.class).put("grindstone_screen", GrindstoneScreen.class).put("enchantment_screen", EnchantmentScreen.class).put("hopper_screen", HopperScreen.class).put("dispenser_screen", DispenserScreen.class).put("shulker_box_screen", ShulkerBoxScreen.class).put("anvil_screen", AnvilScreen.class).put("smithing_screen", SmithingScreen.class).put("brewing_stand_screen", BrewingStandScreen.class).put("beacon_screen", BeaconScreen.class).put("chat_screen", ChatScreen.class).put("in_bed_chat_screen", InBedChatScreen.class).put("gui", Gui.class).mapKeys(FactoryAPI::createVanillaLocation).build(); - public static final ListMap> DEFAULT_SCREENS_MAP = new ListMap.Builder>().put("title", s -> new TitleScreen()).put("options", s -> new OptionsScreen(s, Minecraft.getInstance().options/*? if >=26.1 {*//*, Minecraft.getInstance().level != null*//*?}*/)).put("language_select", s -> new LanguageSelectScreen(s, Minecraft.getInstance().options, Minecraft.getInstance().getLanguageManager())).put("video_settings", s -> new VideoSettingsScreen(s,/*? if >=1.21 {*//*Minecraft.getInstance() ,*//*?}*/ Minecraft.getInstance().options)).put("skin_customization", s -> new SkinCustomizationScreen(s, Minecraft.getInstance().options)).put("online_options", s -> /*? if <1.21 {*/OnlineOptionsScreen.createOnlineOptionsScreen(Minecraft.getInstance(), s, Minecraft.getInstance().options)/*?} else {*//*new OnlineOptionsScreen(s, Minecraft.getInstance().options)*//*?}*/).put("controls", s -> new ControlsScreen(s, Minecraft.getInstance().options)).put("mouse_settings", s -> new MouseSettingsScreen(s, Minecraft.getInstance().options)).put("key_binds", s -> new KeyBindsScreen(s, Minecraft.getInstance().options)).put("chat_options", s -> new ChatOptionsScreen(s, Minecraft.getInstance().options)).put("accessibility_options", s -> new AccessibilityOptionsScreen(s, Minecraft.getInstance().options)).put("credits_and_attribution", CreditsAndAttributionScreen::new).put("select_world", SelectWorldScreen::new).mapKeys(FactoryAPI::createVanillaLocation).build(); + public static final ListMap> NAMED_UI_TARGETS = new ListMap.Builder>().put("screen", Screen.class).put("accessibility_onboarding_screen", AccessibilityOnboardingScreen.class).put("title_screen",TitleScreen.class).put("options_screen", OptionsScreen.class).put("skin_customization_screen", SkinCustomizationScreen.class).put("video_settings_screen", VideoSettingsScreen.class).put("language_select_screen", LanguageSelectScreen.class).put("pack_selection_screen", PackSelectionScreen.class).put("telemetry_info_screen", TelemetryInfoScreen.class).put("online_options_screen", OnlineOptionsScreen.class).put("sound_options_screen", SoundOptionsScreen.class).put("controls_screen", ControlsScreen.class).put("mouse_settings_screen", MouseSettingsScreen.class).put("key_binds_screen", KeyBindsScreen.class).put("chat_options_screen", ChatOptionsScreen.class).put("accessibility_options_screen", AccessibilityOptionsScreen.class).put("credits_and_attribution_screen", CreditsAndAttributionScreen.class).put("win_screen", WinScreen.class).put("confirm_link_screen", ConfirmLinkScreen.class).put("select_world_screen", SelectWorldScreen.class).put("create_world_screen", CreateWorldScreen.class).put("edit_world_screen", EditWorldScreen.class).put("join_multiplayer_screen", JoinMultiplayerScreen.class)./*? if <1.21.9 {*/put("edit_server_screen", EditServerScreen.class)./*?}*/put("direct_join_server_screen", DirectJoinServerScreen.class).put("realms_main_screen", RealmsMainScreen.class).put("realms_screen", RealmsScreen.class).put("realms_confirm_screen", RealmsConfirmScreen.class).put("realms_backup_screen", RealmsBackupScreen.class).put("realms_invite_screen", RealmsInviteScreen.class)/*? if <26.3 {*/.put("share_to_lan_screen", /*? if <26.2 {*/ShareToLanScreen/*?} else {*//*MultiplayerOptionsScreen*//*?}*/.class)/*?} else {*//*.put("world_options_screen", WorldOptionsScreen.class)*//*?}*/.put("advancements_screen", AdvancementsScreen.class).put("stats_screen", StatsScreen.class).put("confirm_screen", ConfirmScreen.class).put("level_loading_screen", LevelLoadingScreen.class).put("progress_screen", ProgressScreen.class).put("generic_message_screen",/*? if <1.20.5 {*/GenericDirtMessageScreen/*?} else {*//*GenericMessageScreen*//*?}*/.class)./*? if <1.21.9 {*/put("receiving_level_screen", ReceivingLevelScreen.class)./*?}*/put("connect_screen", ConnectScreen.class).put("pause_screen", PauseScreen.class).put("inventory_screen", InventoryScreen.class).put("crafting_screen", CraftingScreen.class).put("container_screen", ContainerScreen.class).put("abstract_furnace_screen", AbstractFurnaceScreen.class).put("furnace_screen", FurnaceScreen.class).put("smoker_screen", SmokerScreen.class).put("blast_furnace_screen", BlastFurnaceScreen.class).put("loom_screen", LoomScreen.class).put("stonecutter_screen", StonecutterScreen.class).put("grindstone_screen", GrindstoneScreen.class).put("enchantment_screen", EnchantmentScreen.class).put("hopper_screen", HopperScreen.class).put("dispenser_screen", DispenserScreen.class).put("shulker_box_screen", ShulkerBoxScreen.class).put("anvil_screen", AnvilScreen.class).put("smithing_screen", SmithingScreen.class).put("brewing_stand_screen", BrewingStandScreen.class).put("beacon_screen", BeaconScreen.class).put("chat_screen", ChatScreen.class).put("in_bed_chat_screen", InBedChatScreen.class).put("gui", Gui.class).mapKeys(FactoryAPI::createVanillaLocation).build(); + public static final ListMap> DEFAULT_SCREENS_MAP = new ListMap.Builder>().put("title", s -> new TitleScreen()).put("options", s -> new OptionsScreen(s, Minecraft.getInstance().options/*? if >=26.1 && <26.3 {*//*, Minecraft.getInstance().level != null*//*?}*/)).put("language_select", s -> new LanguageSelectScreen(s, Minecraft.getInstance().options, Minecraft.getInstance().getLanguageManager())).put("video_settings", s -> new VideoSettingsScreen(s,/*? if >=1.21 {*//*Minecraft.getInstance() ,*//*?}*/ Minecraft.getInstance().options)).put("skin_customization", s -> new SkinCustomizationScreen(s, Minecraft.getInstance().options)).put("online_options", s -> /*? if <1.21 {*/OnlineOptionsScreen.createOnlineOptionsScreen(Minecraft.getInstance(), s, Minecraft.getInstance().options)/*?} else {*//*new OnlineOptionsScreen(s, Minecraft.getInstance().options)*//*?}*/).put("controls", s -> new ControlsScreen(s, Minecraft.getInstance().options)).put("mouse_settings", s -> new MouseSettingsScreen(s, Minecraft.getInstance().options)).put("key_binds", s -> new KeyBindsScreen(s, Minecraft.getInstance().options)).put("chat_options", s -> new ChatOptionsScreen(s, Minecraft.getInstance().options)).put("accessibility_options", s -> new AccessibilityOptionsScreen(s, Minecraft.getInstance().options)).put("credits_and_attribution", CreditsAndAttributionScreen::new).put("select_world", SelectWorldScreen::new).mapKeys(FactoryAPI::createVanillaLocation).build(); public static void registerNamedUITarget(net.minecraft.resources.ResourceLocation id, Class uiClass) { @@ -98,7 +98,7 @@ public void beforeInit(UIAccessor accessor) { } public interface WidgetAction { - ListMap> map = new ListMap.Builder>().put("open_default_screen", create(net.minecraft.resources.ResourceLocation.CODEC, (s) -> (a, w, t) -> Minecraft.getInstance().setScreen(DEFAULT_SCREENS_MAP.getOrDefault(s, s1 -> null).apply(a.getScreen())))).put("open_config_screen", create(Codec.STRING, (s) -> (a, w, t) -> Minecraft.getInstance().setScreen(FactoryAPIClient.getConfigScreen(FactoryAPIPlatform.getModInfo(s), a.getScreen())))).put("reload_ui", create(Codec.EMPTY.codec(), (s) -> (a, w, t) -> a.reloadUI())).put("run_command", createRunCommand(s -> true)).put("run_windows_command", createRunCommand(s -> Util.getPlatform() == Util.OS.WINDOWS)).put("run_linux_command", createRunCommand(s -> Util.getPlatform() == Util.OS.LINUX)).put("run_osx_command", createRunCommand(s -> Util.getPlatform() == Util.OS.OSX)).put("toggle_datapacks", createToggleDatapacks()).mapKeys(FactoryAPI::createVanillaLocation).build(); + ListMap> map = new ListMap.Builder>().put("open_default_screen", create(net.minecraft.resources.ResourceLocation.CODEC, (s) -> (a, w, t) -> FactoryScreenUtil.setScreen(DEFAULT_SCREENS_MAP.getOrDefault(s, s1 -> null).apply(a.getScreen())))).put("open_config_screen", create(Codec.STRING, (s) -> (a, w, t) -> FactoryScreenUtil.setScreen(FactoryAPIClient.getConfigScreen(FactoryAPIPlatform.getModInfo(s), a.getScreen())))).put("reload_ui", create(Codec.EMPTY.codec(), (s) -> (a, w, t) -> a.reloadUI())).put("run_command", createRunCommand(s -> true)).put("run_windows_command", createRunCommand(s -> Util.getPlatform() == Util.OS.WINDOWS)).put("run_linux_command", createRunCommand(s -> Util.getPlatform() == Util.OS.LINUX)).put("run_osx_command", createRunCommand(s -> Util.getPlatform() == Util.OS.OSX)).put("toggle_datapacks", createToggleDatapacks()).mapKeys(FactoryAPI::createVanillaLocation).build(); Codec> CODEC = map.createCodec(net.minecraft.resources.ResourceLocation.CODEC); Codec

getCodec(); @@ -671,8 +671,8 @@ private static void handleDeprecatedDefinitionsAddition(UIDefinition uiDefinitio } public void openDefaultScreenAndAddDefinition(Optional defaultScreen, UIDefinition uiDefinition) { - Screen s = defaultScreen.map(DEFAULT_SCREENS_MAP::get).orElse(parent-> new Screen(Component.empty()) {}).apply(FactoryAPIClient.getScreen()); + Screen s = defaultScreen.map(DEFAULT_SCREENS_MAP::get).orElse(parent-> new Screen(Component.empty()) {}).apply(FactoryScreenUtil.getScreen()); UIAccessor.of(s).addStatic(uiDefinition); - Minecraft.getInstance().setScreen(s); + FactoryScreenUtil.setScreen(s); } } diff --git a/src/main/java/wily/factoryapi/base/client/screen/FactoryConfigScreen.java b/src/main/java/wily/factoryapi/base/client/screen/FactoryConfigScreen.java index d441f3c..189a59e 100644 --- a/src/main/java/wily/factoryapi/base/client/screen/FactoryConfigScreen.java +++ b/src/main/java/wily/factoryapi/base/client/screen/FactoryConfigScreen.java @@ -16,6 +16,7 @@ import wily.factoryapi.base.client.FactoryConfigWidgets; import wily.factoryapi.base.config.FactoryCommonOptions; import wily.factoryapi.base.config.FactoryConfig; +import wily.factoryapi.util.FactoryScreenUtil; import java.util.ArrayList; import java.util.List; @@ -66,7 +67,7 @@ public void render(GuiGraphics guiGraphics, int i, int j, float f) { @Override public void onClose() { - minecraft.setScreen(parent); + FactoryScreenUtil.setScreen(parent); } public static class ConfigList extends ContainerObjectSelectionList{ diff --git a/src/main/java/wily/factoryapi/base/network/CommonRecipeManager.java b/src/main/java/wily/factoryapi/base/network/CommonRecipeManager.java index 4fed73f..fd43916 100644 --- a/src/main/java/wily/factoryapi/base/network/CommonRecipeManager.java +++ b/src/main/java/wily/factoryapi/base/network/CommonRecipeManager.java @@ -4,6 +4,9 @@ /*import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.RegistryFriendlyByteBuf; +//? if >=26.3 { +/^import net.minecraft.network.codec.ByteBufCodecs; +^///?} import net.minecraft.network.codec.StreamCodec; *///?} else { import wily.factoryapi.FactoryAPI; @@ -82,13 +85,32 @@ public static void addRecipeTypeToSync(RecipeType recipeType){ public record ClientPayload(Map,Map>> syncRecipeTypes) implements CommonNetwork.Payload { public static final CommonNetwork.Identifier ID = CommonNetwork.Identifier.create(FactoryAPI.createModLocation("send_client_recipes"), ClientPayload::new); private static final ClientPayload instance = new ClientPayload(new HashMap<>()); + //? if >=26.3 { + /^private static final StreamCodec>> IDENTIFIER_RECIPE_HOLDER_MAP_STREAM_CODEC = ByteBufCodecs.map(HashMap::new, Identifier.STREAM_CODEC, RecipeHolder.STREAM_CODEC); + private static final StreamCodec> RECIPE_TYPE_STREAM_CODEC = new StreamCodec<>() { + @Override + public RecipeType decode(RegistryFriendlyByteBuf input) { + return input.readById(BuiltInRegistries.RECIPE_TYPE::byId); + } + + @Override + public void encode(RegistryFriendlyByteBuf output, RecipeType value) { + output.writeById(BuiltInRegistries.RECIPE_TYPE::getId, value); + } + }; + private static final StreamCodec, Map>>> SYNC_RECIPE_TYPES_CODEC = ByteBufCodecs.map(HashMap::new, RECIPE_TYPE_STREAM_CODEC, IDENTIFIER_RECIPE_HOLDER_MAP_STREAM_CODEC); + ^///?} public static ClientPayload getInstance(){ return instance; } public ClientPayload(CommonNetwork.PlayBuf buf){ + //? if <26.3 { this(buf.get().readMap(b->b.readById(BuiltInRegistries.RECIPE_TYPE::byId), b->b.readMap(FriendlyByteBuf::readResourceLocation, b1->RecipeHolder.STREAM_CODEC.decode(buf.get())))); + //?} else { + /^this(SYNC_RECIPE_TYPES_CODEC.decode(buf.get())); + ^///?} } @Override @@ -103,7 +125,11 @@ public CommonNetwork.Identifier identifier() { @Override public void encode(CommonNetwork.PlayBuf buf) { + //? if <26.3 { buf.get().writeMap(syncRecipeTypes, (b,t)-> b.writeById(BuiltInRegistries.RECIPE_TYPE::getId,t),(b,t)-> b.writeMap(t,FriendlyByteBuf::writeResourceLocation,(b1,h)->RecipeHolder.STREAM_CODEC.encode(buf.get(),h))); + //?} else { + /^SYNC_RECIPE_TYPES_CODEC.encode(buf.get(), syncRecipeTypes); + ^///?} } } *///?} diff --git a/src/main/java/wily/factoryapi/base/network/HelloPayload.java b/src/main/java/wily/factoryapi/base/network/HelloPayload.java index 204dc9c..c75bfc0 100644 --- a/src/main/java/wily/factoryapi/base/network/HelloPayload.java +++ b/src/main/java/wily/factoryapi/base/network/HelloPayload.java @@ -1,6 +1,11 @@ package wily.factoryapi.base.network; import net.minecraft.network.FriendlyByteBuf; +//? if >=26.3 { +/*import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +*///?} import net.minecraft.server.level.ServerPlayer; import wily.factoryapi.FactoryAPI; import wily.factoryapi.FactoryAPIClient; @@ -9,14 +14,26 @@ import wily.factoryapi.util.ModInfo; import java.util.Collection; +//? if >=26.3 { +/*import java.util.List; +import java.util.function.Function; +*///?} import java.util.stream.Collectors; public record HelloPayload(Collection modIds, CommonNetwork.Identifier identifier) implements CommonNetwork.Payload { public static final CommonNetwork.Identifier ID_S2C = CommonNetwork.Identifier.create(FactoryAPI.createModLocation("hello_s2c"),HelloPayload::createS2C); public static final CommonNetwork.Identifier ID_C2S = CommonNetwork.Identifier.create(FactoryAPI.createModLocation("hello_c2s"),HelloPayload::createC2S); + //? if >=26.3 { + /*private static final StreamCodec> MOD_IDS_STREAM_CODEC = ByteBufCodecs.list().apply(ByteBufCodecs.STRING_UTF8.cast()).map(Function.identity(), List::copyOf); + *///?} + public HelloPayload(CommonNetwork.PlayBuf playBuf, CommonNetwork.Identifier identifier) { + //? if <26.3 { this(playBuf.get().readList(FriendlyByteBuf::readUtf), identifier); + //?} else { + /*this(MOD_IDS_STREAM_CODEC.decode(playBuf.get()), identifier); + *///?} } public static HelloPayload createS2C(CommonNetwork.PlayBuf playBuf){ @@ -49,6 +66,10 @@ public static void sendInitialPayloads(ServerPlayer serverPlayer){ @Override public void encode(CommonNetwork.PlayBuf buf) { + //? if <26.3 { buf.get().writeCollection(modIds, FriendlyByteBuf::writeUtf); + //?} else { + /*MOD_IDS_STREAM_CODEC.encode(buf.get(), modIds); + *///?} } } \ No newline at end of file diff --git a/src/main/java/wily/factoryapi/mixin/base/ActualGuiMixin.java b/src/main/java/wily/factoryapi/mixin/base/ActualGuiMixin.java new file mode 100644 index 0000000..a60e80a --- /dev/null +++ b/src/main/java/wily/factoryapi/mixin/base/ActualGuiMixin.java @@ -0,0 +1,44 @@ +//? if >=26.2 { +/*package wily.factoryapi.mixin.base; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.Hud; +import net.minecraft.client.gui.screens.Screen; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import wily.factoryapi.util.FactoryScreenUtil; +import wily.factoryapi.base.client.UIAccessor; + +@Mixin(Gui.class) +public class ActualGuiMixin { + @Shadow + @Final + private Minecraft minecraft; + + @Shadow + @Final + public Hud hud; + + @Inject(method = "setScreen",at = @At("RETURN")) + public void setScreen(Screen screen, CallbackInfo ci) { + if (minecraft.level != null) { + UIAccessor.of(hud).reloadUI(); + } + } + + @Inject(method = "tick",at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;tick()V")) + public void beforeScreenTick(CallbackInfo ci) { + if (FactoryScreenUtil.getScreen() != null) UIAccessor.of(FactoryScreenUtil.getScreen()).beforeTick(); + } + + @Inject(method = "tick",at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;tick()V", shift = At.Shift.AFTER)) + public void afterScreenTick(CallbackInfo ci) { + if (FactoryScreenUtil.getScreen() != null) UIAccessor.of(FactoryScreenUtil.getScreen()).afterTick(); + } +} +*///?} \ No newline at end of file diff --git a/src/main/java/wily/factoryapi/mixin/base/CreateWorldScreenMixin.java b/src/main/java/wily/factoryapi/mixin/base/CreateWorldScreenMixin.java index 65cc28b..aa96f43 100644 --- a/src/main/java/wily/factoryapi/mixin/base/CreateWorldScreenMixin.java +++ b/src/main/java/wily/factoryapi/mixin/base/CreateWorldScreenMixin.java @@ -2,6 +2,9 @@ import com.mojang.datafixers.util.Pair; import net.minecraft.client.Minecraft; +//? if >=26.2 { +/*import net.minecraft.client.gui.components.tabs.MenuTabBar; +*///?} import net.minecraft.client.gui.components.tabs.TabNavigationBar; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.worldselection.CreateWorldScreen; @@ -18,6 +21,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import wily.factoryapi.base.client.DatapackRepositoryAccessor; import wily.factoryapi.base.client.UIAccessor; +import wily.factoryapi.util.FactoryScreenUtil; import java.nio.file.Path; import java.util.function.Consumer; @@ -36,7 +40,11 @@ protected CreateWorldScreenMixin(Component arg) { @Shadow protected abstract void tryApplyNewDataPacks(PackRepository arg, boolean bl, Consumer consumer); + //? if <26.2 { @Shadow @Nullable private TabNavigationBar tabNavigationBar; + //?} else { + /*@Shadow @Nullable private MenuTabBar tabNavigationBar; + *///?} @Inject(method = "init", at = @At("RETURN")) public void init(CallbackInfo ci) { @@ -52,7 +60,7 @@ public PackRepository getDatapackRepository() { @Override public void tryApplyNewDataPacks(PackRepository repository) { tryApplyNewDataPacks(repository, false, data -> { - if (this instanceof UIAccessor accessor) Minecraft.getInstance().setScreen(accessor.getScreen()); + if (this instanceof UIAccessor accessor) FactoryScreenUtil.setScreen(accessor.getScreen()); }); } } diff --git a/src/main/java/wily/factoryapi/mixin/base/FuelValuesAccessor.java b/src/main/java/wily/factoryapi/mixin/base/FuelValuesAccessor.java index 0a859fe..88c722b 100644 --- a/src/main/java/wily/factoryapi/mixin/base/FuelValuesAccessor.java +++ b/src/main/java/wily/factoryapi/mixin/base/FuelValuesAccessor.java @@ -1,4 +1,4 @@ -//? if >=1.21.2 { +//? if >=1.21.2 && <26.3 { /*package wily.factoryapi.mixin.base; import it.unimi.dsi.fastutil.objects.Object2IntSortedMap; diff --git a/src/main/java/wily/factoryapi/mixin/base/GuiGraphicsMixin.java b/src/main/java/wily/factoryapi/mixin/base/GuiGraphicsMixin.java index d9b0fc6..e6c2879 100644 --- a/src/main/java/wily/factoryapi/mixin/base/GuiGraphicsMixin.java +++ b/src/main/java/wily/factoryapi/mixin/base/GuiGraphicsMixin.java @@ -22,7 +22,9 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.navigation.ScreenRectangle; +//? if <26.2 { import net.minecraft.client.renderer.MultiBufferSource; +//?} //? if <1.21.6 { import net.minecraft.client.renderer.RenderType; //?} @@ -83,8 +85,10 @@ public abstract class GuiGraphicsMixin implements FactoryGuiGraphics.Accessor { @Shadow public abstract Matrix3x2fStack pose(); *///?} + //?if <26.2 { @Unique private MultiBufferSource.BufferSource lastBufferSource; + //?} //? if <=1.20.1 //@Shadow abstract void innerBlit(ResourceLocation resourceLocation, int i, int j, int k, int l, int m, float f, float g, float h, float n); @@ -326,6 +330,8 @@ public void blitSprite(TextureAtlasSprite textureAtlasSprite, int i, int j, int } } *///?} + + //? if <26.2 { @Override public MultiBufferSource.BufferSource getBufferSource() { //? if >=1.21.6 { @@ -348,6 +354,7 @@ public void popBufferSource() { if (lastBufferSource != null) bufferSource = lastBufferSource; //?} } + //?} @Override public FactoryGuiMatrixStack pose() { diff --git a/src/main/java/wily/factoryapi/mixin/base/GuiMixin.java b/src/main/java/wily/factoryapi/mixin/base/GuiMixin.java index e53988b..75d9f47 100644 --- a/src/main/java/wily/factoryapi/mixin/base/GuiMixin.java +++ b/src/main/java/wily/factoryapi/mixin/base/GuiMixin.java @@ -10,10 +10,18 @@ import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.components.spectator.SpectatorGui; //? if >=1.21.6 { -/*import net.minecraft.client.gui.contextualbar.ContextualBarRenderer; +/*//? if <26.2 { +import net.minecraft.client.gui.contextualbar.ContextualBarRenderer; import net.minecraft.client.gui.contextualbar.ExperienceBarRenderer; import net.minecraft.client.gui.contextualbar.JumpableVehicleBarRenderer; import net.minecraft.client.gui.contextualbar.LocatorBarRenderer; +//?} else { +/^import net.minecraft.client.gui.contextualbar.ContextualBar; +import net.minecraft.client.gui.contextualbar.ExperienceBar; +import net.minecraft.client.gui.contextualbar.JumpableVehicleBar; +import net.minecraft.client.gui.contextualbar.LocatorBar; +import net.minecraft.client.gui.Hud; +^///?} *///?} import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.CommonComponents; @@ -45,7 +53,7 @@ import java.util.*; -@Mixin(Gui.class) +@Mixin(/*? if <26.2 {*/Gui/*?} else {*//*Hud*//*?}*/.class) public abstract class GuiMixin implements UIAccessor, GuiAccessor { @Shadow private int overlayMessageTime; @@ -316,13 +324,13 @@ public void extractNeoForgeHealthReturn(GuiGraphicsExtractor guiGraphics, Callba //? if >=1.21.6 { /*//? if !neoforge { - @WrapOperation(method = "renderHotbarAndDecorations", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/contextualbar/ContextualBarRenderer;renderBackground(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/DeltaTracker;)V")) - public void renderExperienceBar(ContextualBarRenderer instance, net.minecraft.client.gui.GuiGraphics graphics, DeltaTracker deltaTracker, Operation original, @Share("cli") LocalRef ci, @Share("fge") LocalRef elementLocalRef) { + @WrapOperation(method = "renderHotbarAndDecorations", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/contextualbar/" + /^? if <26.2 {^/"ContextualBarRenderer"/^?} else {^//^"ContextualBar"^//^?}^/ + ";extractBackground(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/DeltaTracker;)V")) + public void renderExperienceBar(/^? if <26.2 {^/ContextualBarRenderer/^?} else {^//^ContextualBar^//^?}^/ instance, net.minecraft.client.gui.GuiGraphics graphics, DeltaTracker deltaTracker, Operation original, @Share("cli") LocalRef ci, @Share("fge") LocalRef elementLocalRef) { ci.set(new CallbackInfo("renderContextualBar", true)); elementLocalRef.set(switch (instance) { - case ExperienceBarRenderer ignored -> FactoryGuiElement.EXPERIENCE_BAR; - case LocatorBarRenderer ignored -> FactoryGuiElement.LOCATOR_BAR; - case JumpableVehicleBarRenderer ignored -> FactoryGuiElement.JUMP_METER; + case /^? if <26.2 {^/ExperienceBarRenderer/^?} else {^//^ExperienceBar^//^?}^/ ignored -> FactoryGuiElement.EXPERIENCE_BAR; + case /^? if <26.2 {^/LocatorBarRenderer/^?} else {^//^LocatorBar^//^?}^/ ignored -> FactoryGuiElement.LOCATOR_BAR; + case /^? if <26.2 {^/JumpableVehicleBarRenderer/^?} else {^//^JumpableVehicleBar^//^?}^/ ignored -> FactoryGuiElement.JUMP_METER; default -> null; }); FactoryGuiElement factoryGuiElement = elementLocalRef.get(); @@ -330,8 +338,8 @@ public void renderExperienceBar(ContextualBarRenderer instance, net.minecraft.cl if (!ci.get().isCancelled()) original.call(instance, graphics, deltaTracker); } - @WrapOperation(method = "renderHotbarAndDecorations", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/contextualbar/ContextualBarRenderer;render(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/DeltaTracker;)V")) - public void renderExperienceBarReturn(ContextualBarRenderer instance, net.minecraft.client.gui.GuiGraphics graphics, DeltaTracker deltaTracker, Operation original, @Share("cli") LocalRef ci, @Share("fge") LocalRef elementLocalRef) { + @WrapOperation(method = "renderHotbarAndDecorations", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/contextualbar/" + /^? if <26.2 {^/"ContextualBarRenderer"/^?} else {^//^"ContextualBar"^//^?}^/ + ";extractRenderState(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/DeltaTracker;)V")) + public void renderExperienceBarReturn(/^? if <26.2 {^/ContextualBarRenderer/^?} else {^//^ContextualBar^//^?}^/ instance, net.minecraft.client.gui.GuiGraphics graphics, DeltaTracker deltaTracker, Operation original, @Share("cli") LocalRef ci, @Share("fge") LocalRef elementLocalRef) { if (!ci.get().isCancelled()) original.call(instance, graphics, deltaTracker); FactoryGuiElement factoryGuiElement = elementLocalRef.get(); if (factoryGuiElement != null) factoryGuiElement.finalizeMixin(graphics, this); @@ -342,13 +350,13 @@ public void renderExperienceBarReturn(ContextualBarRenderer instance, net.minecr final ThreadLocal ci = new ThreadLocal<>(); @Unique final ThreadLocal fge = new ThreadLocal<>(); - @WrapOperation(method = "renderContextualInfoBarBackground", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/contextualbar/ContextualBarRenderer;renderBackground(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/DeltaTracker;)V")) - public void renderExperienceBar(ContextualBarRenderer instance, net.minecraft.client.gui.GuiGraphics graphics, DeltaTracker deltaTracker, Operation original) { + @WrapOperation(method = "renderContextualInfoBarBackground", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/contextualbar/" + /^¹? if <26.2 {¹^/"ContextualBarRenderer"/^¹?} else {¹^//^¹"ContextualBar"¹^//^¹?}¹^/ + ";extractBackground(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/DeltaTracker;)V")) + public void renderExperienceBar(/^¹? if <26.2 {¹^/ContextualBarRenderer/^¹?} else {¹^//^¹ContextualBar¹^//^¹?}¹^/ instance, net.minecraft.client.gui.GuiGraphics graphics, DeltaTracker deltaTracker, Operation original) { ci.set(new CallbackInfo("renderContextualBar", true)); fge.set(switch (instance) { - case ExperienceBarRenderer ignored -> FactoryGuiElement.EXPERIENCE_BAR; - case LocatorBarRenderer ignored -> FactoryGuiElement.LOCATOR_BAR; - case JumpableVehicleBarRenderer ignored -> FactoryGuiElement.JUMP_METER; + case /^¹? if <26.2 {¹^/ExperienceBarRenderer/^¹?} else {¹^//^¹ExperienceBar¹^//^¹?}¹^/ ignored -> FactoryGuiElement.EXPERIENCE_BAR; + case /^¹? if <26.2 {¹^/LocatorBarRenderer/^¹?} else {¹^//^¹LocatorBar¹^//^¹?}¹^/ ignored -> FactoryGuiElement.LOCATOR_BAR; + case /^¹? if <26.2 {¹^/JumpableVehicleBarRenderer/^¹?} else {¹^//^¹JumpableVehicleBar¹^//^¹?}¹^/ ignored -> FactoryGuiElement.JUMP_METER; default -> null; }); FactoryGuiElement factoryGuiElement = fge.get(); @@ -356,8 +364,8 @@ public void renderExperienceBar(ContextualBarRenderer instance, net.minecraft.cl if (!ci.get().isCancelled()) original.call(instance, graphics, deltaTracker); } - @WrapOperation(method = "renderContextualInfoBar", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/contextualbar/ContextualBarRenderer;render(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/DeltaTracker;)V")) - public void renderExperienceBarReturn(ContextualBarRenderer instance, net.minecraft.client.gui.GuiGraphics graphics, DeltaTracker deltaTracker, Operation original) { + @WrapOperation(method = "renderContextualInfoBar", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/contextualbar/" + /^¹? if <26.2 {¹^/"ContextualBarRenderer"/^¹?} else {¹^//^¹"ContextualBar"¹^//^¹?}¹^/ + ";extractRenderState(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/DeltaTracker;)V")) + public void renderExperienceBarReturn(/^¹? if <26.2 {¹^/ContextualBarRenderer/^¹?} else {¹^//^¹ContextualBar¹^//^¹?}¹^/ instance, net.minecraft.client.gui.GuiGraphics graphics, DeltaTracker deltaTracker, Operation original) { if (!ci.get().isCancelled()) original.call(instance, graphics, deltaTracker); FactoryGuiElement factoryGuiElement = fge.get(); if (factoryGuiElement != null) factoryGuiElement.finalizeMixin(graphics, this); diff --git a/src/main/java/wily/factoryapi/mixin/base/MinecraftMixin.java b/src/main/java/wily/factoryapi/mixin/base/MinecraftMixin.java index c9acc0f..becf7d3 100644 --- a/src/main/java/wily/factoryapi/mixin/base/MinecraftMixin.java +++ b/src/main/java/wily/factoryapi/mixin/base/MinecraftMixin.java @@ -1,14 +1,25 @@ package wily.factoryapi.mixin.base; import com.mojang.authlib.exceptions.AuthenticationException; -import com.mojang.authlib.minecraft.MinecraftSessionService; import com.mojang.authlib.minecraft.UserApiService; //? if >=1.20.3 { +//? if <26.3 { import com.mojang.authlib.yggdrasil.ProfileResult; +//?} else { +/*import com.mojang.authlib.services.ProfileResult; +*///?} //?} -import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService; + import com.mojang.realmsclient.client.RealmsClient; import com.mojang.realmsclient.gui.RealmsDataFetcher; +//? if >=26.3 { +/*import net.minecraft.server.Services; +import com.mojang.authlib.minecraft.SessionService; +import com.mojang.authlib.services.MinecraftServicesDiscoveryService; +*///?} else { +import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService; +import com.mojang.authlib.minecraft.MinecraftSessionService; +//?} import net.minecraft.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.User; @@ -30,7 +41,9 @@ import wily.factoryapi.FactoryAPIClient; import wily.factoryapi.base.client.MinecraftAccessor; import wily.factoryapi.base.client.UIAccessor; +import wily.factoryapi.util.FactoryScreenUtil; +import java.io.File; import java.net.Proxy; import java.util.concurrent.CompletableFuture; @@ -74,13 +87,26 @@ public abstract class MinecraftMixin implements MinecraftAccessor { @Mutable @Shadow @Final private RealmsDataFetcher realmsDataFetcher; + //? if <26.2 { @Shadow @Final private SplashManager splashManager; + //?} + + //? if >=26.3 { + /*@Mutable + @Shadow + @Final + private Services services; + *///?} + + @Shadow + @Final + public File gameDirectory; //? if >=26.1 { /*@Inject(method = "resizeGui",at = @At("RETURN")) public void resizeGui(CallbackInfo ci) { if (this.level != null) { - UIAccessor.of(gui).reloadUI(); + UIAccessor.of(gui/^? if >=26.2 {^//^.hud^//^?}^/).reloadUI(); FactoryAPIClient.RESIZE_DISPLAY.invoker.accept(Minecraft.getInstance()); } } @@ -94,12 +120,14 @@ public void resizeDisplay(CallbackInfo ci) { } //?} + //? if <26.2 { @Inject(method = "setScreen",at = @At("RETURN")) public void setScreen(Screen screen, CallbackInfo ci) { if (this.level != null) { UIAccessor.of(gui).reloadUI(); } } + //?} @Inject(method = "stop",at = @At("RETURN")) public void stop(CallbackInfo ci) { FactoryAPIClient.STOPPING.invoker.accept(Minecraft.getInstance()); @@ -137,15 +165,15 @@ public void afterScreenTick(CallbackInfo ci) { UIAccessor accessor = UIAccessor.of(Minecraft.getInstance().screen); Screen.wrapScreenError(accessor::afterTick, "Ticking screen after tick", Minecraft.getInstance().screen.getClass().getCanonicalName()); } - //?} else { + //?} else if <26.2 { /*@Inject(method = "tick",at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;tick()V")) public void beforeScreenTick(CallbackInfo ci) { - if (FactoryAPIClient.getScreen() != null) UIAccessor.of(FactoryAPIClient.getScreen()).beforeTick(); + if (FactoryScreenUtil.getScreen() != null) UIAccessor.of(FactoryScreenUtil.getScreen()).beforeTick(); } @Inject(method = "tick",at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;tick()V", shift = At.Shift.AFTER)) public void afterScreenTick(CallbackInfo ci) { - if (FactoryAPIClient.getScreen() != null) UIAccessor.of(FactoryAPIClient.getScreen()).afterTick(); + if (FactoryScreenUtil.getScreen() != null) UIAccessor.of(FactoryScreenUtil.getScreen()).afterTick(); } *///?} @@ -155,19 +183,36 @@ public boolean setUser(User user) { LOGGER.warn("Something went wrong, the User cannot be set to null"); return false; } + //? if <26.2 { this.user = splashManager.user = user; + //?} else { + /*this.user = gui.splashManager().user; + *///?} //? if >=1.21.9 { - /*MinecraftSessionService session = Minecraft.getInstance().services().sessionService(); + + + /*//? if <26.3 { + MinecraftSessionService session = Minecraft.getInstance().services().sessionService(); YggdrasilAuthenticationService authenticationService = this.offlineDeveloperMode ? YggdrasilAuthenticationService.createOffline(this.proxy) : new YggdrasilAuthenticationService(this.proxy); + //?} else { + /^SessionService session = Minecraft.getInstance().services().sessionService(); + MinecraftServicesDiscoveryService discoveryService = MinecraftServicesDiscoveryService.create(this.proxy, !this.offlineDeveloperMode); + this.services = Services.create(discoveryService, this.gameDirectory); + ^///?} + *///?} else { MinecraftSessionService session = Minecraft.getInstance().getMinecraftSessionService(); boolean offlineDeveloperMode = user.getType() != User.Type.MSA; //?} //? if >=1.20.3 { this.profileFuture = CompletableFuture.supplyAsync(() -> session.fetchProfile(user.getProfileId(), true), Util.nonCriticalIoPool()); + //? if <26.3 { this.userApiService = offlineDeveloperMode ? UserApiService.OFFLINE : authenticationService.createUserApiService(user.getAccessToken()); + //?} else { + /*this.userApiService = offlineDeveloperMode ? UserApiService.OFFLINE : discoveryService.createUserApiService(user.getAccessToken()); + *///?} this.userPropertiesFuture = CompletableFuture.supplyAsync(() -> { try { return userApiService.fetchProperties(); diff --git a/src/main/java/wily/factoryapi/mixin/base/fabric/LevelRendererMixin.java b/src/main/java/wily/factoryapi/mixin/base/fabric/LevelRendererMixin.java index 29755be..fdd4383 100644 --- a/src/main/java/wily/factoryapi/mixin/base/fabric/LevelRendererMixin.java +++ b/src/main/java/wily/factoryapi/mixin/base/fabric/LevelRendererMixin.java @@ -30,7 +30,7 @@ private static int getLightColors(int original, @Local(argsOnly = true) BlockAnd private static int getLightColors(int original, @Local(argsOnly = true) BlockAndTintGetter level, @Local(argsOnly = true) BlockState state, @Local(argsOnly = true) BlockPos pos) { return state.getBlock() instanceof IFactoryBlock b ? b.getLightEmission(state, level, pos) : original; } - *///?} else { + *///?} else if <26.2 { /*@ModifyExpressionValue(method = "getLightCoords(Lnet/minecraft/client/renderer/LevelRenderer$BrightnessGetter;Lnet/minecraft/world/level/BlockAndLightGetter;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/BlockPos;)I", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;getLightEmission()I")) private static int getLightCoords(int original, @Local(argsOnly = true) BlockAndLightGetter level, @Local(argsOnly = true) BlockState state, @Local(argsOnly = true) BlockPos pos) { return state.getBlock() instanceof IFactoryBlock b ? b.getLightEmission(state, level, pos) : original; diff --git a/src/main/java/wily/factoryapi/util/DirectionUtil.java b/src/main/java/wily/factoryapi/util/DirectionUtil.java index b7908f2..f6b3e3c 100644 --- a/src/main/java/wily/factoryapi/util/DirectionUtil.java +++ b/src/main/java/wily/factoryapi/util/DirectionUtil.java @@ -5,12 +5,15 @@ import net.minecraft.core.Direction; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; +//? if >=26.2 { +/*import net.minecraft.world.entity.EntityTypes; +*///?} import net.minecraft.world.entity.item.ItemEntity; import org.joml.Quaternionf; public class DirectionUtil { public static Direction nearestRotation(float rotateX, float rotateY, boolean invertYAxis){ - Entity entity = new ItemEntity(EntityType.ITEM,null); + Entity entity = new ItemEntity(/*? if <26.2 {*/EntityType/*?} else {*//*EntityTypes*//*?}*/.ITEM,null); entity.setXRot(rotateX); entity.setYRot(rotateY); Direction d =Direction.orderedByNearest(entity)[0]; diff --git a/src/main/java/wily/factoryapi/util/FactoryScreenUtil.java b/src/main/java/wily/factoryapi/util/FactoryScreenUtil.java index 0ee5191..aeea1d2 100644 --- a/src/main/java/wily/factoryapi/util/FactoryScreenUtil.java +++ b/src/main/java/wily/factoryapi/util/FactoryScreenUtil.java @@ -1,8 +1,8 @@ package wily.factoryapi.util; -//? if >1.21.4 { +//? if >1.21.4 && <26.3 { /*import com.mojang.blaze3d.opengl.GlStateManager; - *///?} else { + *///?} else if <26.3 { import com.mojang.blaze3d.platform.GlStateManager; //?} import com.mojang.blaze3d.platform.Lighting; @@ -15,7 +15,12 @@ import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.navigation.ScreenPosition; import net.minecraft.client.gui.navigation.ScreenRectangle; +//? if <26.2 { import net.minecraft.client.renderer.MultiBufferSource; +//?} else { +/*import net.minecraft.client.gui.Hud; +*///?} +import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.Rect2i; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.texture.OverlayTexture; @@ -28,6 +33,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; import org.joml.Matrix3x2fStack; import wily.factoryapi.FactoryAPIClient; @@ -48,11 +54,13 @@ public static void drawString(FactoryGuiMatrixStack stack, String text, int x, i /*switch (stack) { case net.minecraft.client.gui.GuiGraphics graphics -> graphics./^? if >=26.1 {^//^text^//^?} else {^/ drawString/^?}^/(font, text, x, y, color, shadow); case PoseStack poseStack -> { + //? if <26.2 { MultiBufferSource.BufferSource source = mc.renderBuffers().bufferSource(); font.drawInBatch(/^? if >=1.21.2 {^//^Component.literal(text)^//^?} else {^/ text/^?}^/, (float) x, (float) y, color, shadow, poseStack.last().pose(), source, Font.DisplayMode.NORMAL, 0, 15728880/^? if <1.21.6 {^/, font.isBidirectional()/^?}^/); disableDepthTest(); source.endBatch(); enableDepthTest(); + //?} } default -> throw new IllegalStateException("Unexpected value: " + stack); } @@ -66,18 +74,22 @@ public static void drawString(FactoryGuiMatrixStack stack, String text, int x, i } public static void disableDepthTest(){ + //? if <26.2 GlStateManager._disableDepthTest(); } public static void enableDepthTest(){ + //? if <26.2 GlStateManager._enableDepthTest(); } public static void disableBlend(){ + //? if <26.2 GlStateManager._disableBlend(); } public static void enableBlend(){ + //? if <26.2 GlStateManager._enableBlend(); } @@ -155,10 +167,32 @@ public static void applyColor(net.minecraft.client.gui.GuiGraphics graphics, int } public static UIAccessor getScreenAccessor(){ - return UIAccessor.of(FactoryAPIClient.getScreen()); + return UIAccessor.of(FactoryScreenUtil.getScreen()); } public static UIAccessor getGuiAccessor(){ - return UIAccessor.of(mc.gui); + return UIAccessor.of(getGuiOrHud(mc)); } + + @ApiStatus.Internal + public static void setScreen(Screen screen) { + Minecraft.getInstance()/*? if >=26.2 {*//*.gui*//*?}*/.setScreen(screen); + } + + @ApiStatus.Internal + public static Screen getScreen() { + return Minecraft.getInstance()/*? if <26.2 {*/.screen/*?} else {*//*.gui.screen()*//*?}*/; + } + + //? if <26.2 { + @ApiStatus.Internal + public static Gui getGuiOrHud(Minecraft minecraft) { + return minecraft.gui; + } + //?} else { + /*@ApiStatus.Internal + public static Hud getGuiOrHud(Minecraft minecraft) { + return minecraft.gui.hud; + } + *///?} } diff --git a/src/main/java/wily/factoryapi/util/StorageStringUtil.java b/src/main/java/wily/factoryapi/util/StorageStringUtil.java index fe6a027..c2028b2 100644 --- a/src/main/java/wily/factoryapi/util/StorageStringUtil.java +++ b/src/main/java/wily/factoryapi/util/StorageStringUtil.java @@ -7,7 +7,11 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import org.jetbrains.annotations.Nullable; +//? if <26.3 { import org.lwjgl.glfw.GLFW; +//?} else { +/*import org.lwjgl.sdl.SDLKeycode; +*///?} import wily.factoryapi.FactoryAPIClient; import wily.factoryapi.FactoryAPIPlatform; import wily.factoryapi.base.ICraftyEnergyStorage; @@ -108,20 +112,23 @@ public static String getBetweenParenthesis(String name){ } public static boolean isShiftKeyDown() { + //~ if >=26.3 'isKeyDown(GLFW.GLFW_KEY_LEFT_SHIFT) || isKeyDown(GLFW.GLFW_KEY_RIGHT_SHIFT)' -> 'isKeyDown(SDLKeycode.SDLK_LSHIFT) || isKeyDown(SDLKeycode.SDLK_RSHIFT)' return isKeyDown(GLFW.GLFW_KEY_LEFT_SHIFT) || isKeyDown(GLFW.GLFW_KEY_RIGHT_SHIFT); } + //~ if >=26.3 'KEYSYM' -> 'KEYBOARD' { public static boolean isKeyDown(int glfw) { InputConstants.Key key = InputConstants.Type.KEYSYM.getOrCreate(glfw); int keyCode = key.getValue(); if (keyCode != InputConstants.UNKNOWN.getValue()) { try { if (key.getType() == InputConstants.Type.KEYSYM) { - return InputConstants.isKeyDown(Minecraft.getInstance().getWindow()/*? if <1.21.9 {*/.getWindow()/*?}*/, keyCode); + return InputConstants.isKeyDown(/*? if <26.3 {*/Minecraft.getInstance().getWindow()/*?}*//*? if <1.21.9 {*/.getWindow()/*?}*//*? if <26.3 {*/,/*?}*/ keyCode); } } catch (Exception ignored) { } } return false; } + //~} } diff --git a/src/main/resources/META-INF/neoforge.mods.toml b/src/main/resources/META-INF/neoforge.mods.toml index 9de45d8..10bb73f 100644 --- a/src/main/resources/META-INF/neoforge.mods.toml +++ b/src/main/resources/META-INF/neoforge.mods.toml @@ -9,6 +9,7 @@ version="${version}" displayName="${mod_name}" displayURL="${mod_source}" logoFile="logo.png" +iconFile="logo.png" authors="${mod_authors}" description="${mod_description}" credits="${mod_credits}" diff --git a/src/main/resources/factory_api.mixins.json5 b/src/main/resources/factory_api.mixins.json5 index a96df6a..920f046 100644 --- a/src/main/resources/factory_api.mixins.json5 +++ b/src/main/resources/factory_api.mixins.json5 @@ -33,6 +33,9 @@ /*"BakedSheetGlyphAccessor", *///?} "SpriteLoaderMixin", + //? if >=26.2 { + /*"ActualGuiMixin", + *///?} "AbstractContainerScreenMixin", "AbstractWidgetMixin", "GuiGraphicsMixin", @@ -69,7 +72,7 @@ *///?} //? if <1.21.2 { "RecipeManagerAccessor", - //?} else { + //?} else if <26.3 { /*"FuelValuesAccessor", *///?} "IngredientMixin", diff --git a/versions/26.3-fabric/gradle.properties b/versions/26.3-fabric/gradle.properties new file mode 100644 index 0000000..0f1fee1 --- /dev/null +++ b/versions/26.3-fabric/gradle.properties @@ -0,0 +1,5 @@ +fabric_loader_version=0.19.5 +fabric_api_version=0.160.5+26.3 +mc_version_range=>=26.3 <26.4 +team_reborn_energy_version=5.0.0 +modmenu_version=21.0.0-beta.1 \ No newline at end of file diff --git a/versions/26.3-forge/gradle.properties b/versions/26.3-forge/gradle.properties new file mode 100644 index 0000000..8f07b22 --- /dev/null +++ b/versions/26.3-forge/gradle.properties @@ -0,0 +1,2 @@ +forge_version=66.0.2 +mc_version_range=26.3 \ No newline at end of file diff --git a/versions/26.3-neoforge/gradle.properties b/versions/26.3-neoforge/gradle.properties new file mode 100644 index 0000000..5386b2e --- /dev/null +++ b/versions/26.3-neoforge/gradle.properties @@ -0,0 +1,2 @@ +neoforge_version=26.3.0.6-beta +mc_version_range=26.3 \ No newline at end of file