diff --git a/build-logic/src/main/kotlin/ModPlatformPlugin.kt b/build-logic/src/main/kotlin/ModPlatformPlugin.kt index fe38429..926b827 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/build.fabricmc.gradle.kts b/build.fabricmc.gradle.kts index 3a5f222..d9200e7 100644 --- a/build.fabricmc.gradle.kts +++ b/build.fabricmc.gradle.kts @@ -3,11 +3,15 @@ plugins { id("net.fabricmc.fabric-loom") } +val projectVersion = stonecutter.current.version +val semver = if (stonecutter.current.version == "26.3") "26.3-alpha.3" else stonecutter.current.version +val realver = if (stonecutter.current.version == "26.3") "26.3-snapshot-3" else stonecutter.current.version + platform { loader = "fabric" dependencies { required("minecraft") { - versionRange = stonecutter.current.version + versionRange = semver } required("fabric-api") { slug("fabric-api") @@ -47,7 +51,7 @@ loom { fabricApi { configureDataGeneration { - outputDirectory = file("${rootDir}/versions/datagen/${stonecutter.current.version.split("-")[0]}/src/main/generated") + outputDirectory = file("${rootDir}/versions/datagen/${projectVersion.split("-")[0]}/src/main/generated") client = true } } @@ -59,7 +63,7 @@ repositories { } dependencies { - minecraft("com.mojang:minecraft:${stonecutter.current.version}") + minecraft("com.mojang:minecraft:${realver}") implementation(libs.fabric.loader) implementation("net.fabricmc.fabric-api:fabric-api:${prop("fabric_api_version")}") implementation("com.terraformersmc:modmenu:${prop("modmenu_version")}") diff --git a/settings.gradle.kts b/settings.gradle.kts index bfdac45..eb8a54f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -39,6 +39,8 @@ stonecutter { match("1.21.10", "fabric", "forge", "neoforge") match("1.21.11", "fabric", "forge", "neoforge") match("26.1.2", "fabric", "forge", "neoforge") + match("26.2", "fabric") + match("26.3", "fabric") vcsVersion = "1.20.4-fabric" } } diff --git a/src/main/java/wily/factoryapi/FactoryAPIClient.java b/src/main/java/wily/factoryapi/FactoryAPIClient.java index 54c6d96..f06a3d1 100644 --- a/src/main/java/wily/factoryapi/FactoryAPIClient.java +++ b/src/main/java/wily/factoryapi/FactoryAPIClient.java @@ -7,9 +7,13 @@ import com.mojang.serialization.JsonOps; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Gui; //? if >=26.1 { /*import net.minecraft.client.color.block.BlockColors; import net.minecraft.client.color.block.BlockTintSource; +//? if >=26.2 { +/^import net.minecraft.client.gui.Hud; +^///?} import net.minecraft.client.renderer.block.dispatch.BlockStateModel; *///?} else if >1.21.4 { /*import net.minecraft.client.renderer.block.model.BlockStateModel; @@ -108,7 +112,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 +227,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,8 +252,12 @@ public static long getWindow() { return Minecraft.getInstance().getWindow()./*? if >=1.21.9 {*//*handle()*//*?} else {*/getWindow()/*?}*/; } + public static void setScreen(Screen screen) { + Minecraft.getInstance()/*? if >=26.2 {*//*.gui*//*?}*/.setScreen(screen); + } + public static Screen getScreen() { - return Minecraft.getInstance().screen; + return Minecraft.getInstance()/*? if <26.2 {*/.screen/*?} else {*//*.gui.screen()*//*?}*/; } public static void init() { @@ -261,7 +268,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(getGuiOrHud(Minecraft.getInstance())).getChildrenRenderables().forEach(r -> { //? if >=26.1 { /*r.extractRenderState(graphics, 0, 0, getPartialTick()); *///?} else { @@ -290,7 +297,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 +349,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(()-> setScreen(MenuScreensAccessor.getConstructor(menuType).create(menu, player.getInventory(), payload.component()))); } public static void setup(Consumer listener) { @@ -514,6 +521,16 @@ public static void registerBlockColor(Consumer=26.1 {*//*Lis /*throw new AssertionError();*/ } + //? if <26.2 { + public static Gui getGuiOrHud(Minecraft minecraft) { + return minecraft.gui; + } + //?} else { + /*public static Hud getGuiOrHud(Minecraft minecraft) { + return minecraft.gui.hud; + } + *///?} + //? if <1.21.4 { public static void registerItemColor(Consumer> registry) { //? if fabric { 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/SlotsIdentifier.java b/src/main/java/wily/factoryapi/base/SlotsIdentifier.java index 102d614..274b620 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 { + /*switch(TextColor.fromLegacyFormat(color)) { case TextColor color when Boolean.TRUE == true /^it's java 25 why doesn't this work without this hack^/ -> color.getValue(); case null, default -> 0;} + *///?} + ); } public SlotsIdentifier(ChatFormatting color, String name){ 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..ff6f278 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.FactoryAPIClient; 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(FactoryAPIClient.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..a004ef8 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(); diff --git a/src/main/java/wily/factoryapi/base/client/UIDefinitionManager.java b/src/main/java/wily/factoryapi/base/client/UIDefinitionManager.java index b7fb083..ecf8544 100644 --- a/src/main/java/wily/factoryapi/base/client/UIDefinitionManager.java +++ b/src/main/java/wily/factoryapi/base/client/UIDefinitionManager.java @@ -64,7 +64,7 @@ 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> 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", /*? if <26.2 {*/ShareToLanScreen/*?} else {*//*MultiplayerOptionsScreen*//*?}*/.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(); @@ -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) -> FactoryAPIClient.setScreen(DEFAULT_SCREENS_MAP.getOrDefault(s, s1 -> null).apply(a.getScreen())))).put("open_config_screen", create(Codec.STRING, (s) -> (a, w, t) -> FactoryAPIClient.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(); @@ -673,6 +673,6 @@ 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()); UIAccessor.of(s).addStatic(uiDefinition); - Minecraft.getInstance().setScreen(s); + FactoryAPIClient.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..e08d3d4 100644 --- a/src/main/java/wily/factoryapi/base/client/screen/FactoryConfigScreen.java +++ b/src/main/java/wily/factoryapi/base/client/screen/FactoryConfigScreen.java @@ -12,6 +12,7 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import org.jetbrains.annotations.Nullable; +import wily.factoryapi.FactoryAPIClient; import wily.factoryapi.base.client.FactoryOptions; import wily.factoryapi.base.client.FactoryConfigWidgets; import wily.factoryapi.base.config.FactoryCommonOptions; @@ -66,7 +67,7 @@ public void render(GuiGraphics guiGraphics, int i, int j, float f) { @Override public void onClose() { - minecraft.setScreen(parent); + FactoryAPIClient.setScreen(parent); } public static class ConfigList extends ContainerObjectSelectionList{ 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..c8e7312 --- /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.FactoryAPIClient; +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 (FactoryAPIClient.getScreen() != null) UIAccessor.of(FactoryAPIClient.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(); + } +} +*///?} \ 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..eabdc36 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; @@ -16,6 +19,7 @@ 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.FactoryAPIClient; import wily.factoryapi.base.client.DatapackRepositoryAccessor; import wily.factoryapi.base.client.UIAccessor; @@ -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) FactoryAPIClient.setScreen(accessor.getScreen()); }); } } 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..474dd4e 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); diff --git a/src/main/java/wily/factoryapi/mixin/base/MinecraftMixin.java b/src/main/java/wily/factoryapi/mixin/base/MinecraftMixin.java index c9acc0f..2dc9e5c 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; @@ -31,6 +42,7 @@ import wily.factoryapi.base.client.MinecraftAccessor; import wily.factoryapi.base.client.UIAccessor; +import java.io.File; import java.net.Proxy; import java.util.concurrent.CompletableFuture; @@ -74,13 +86,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 +119,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()); @@ -138,7 +165,8 @@ public void afterScreenTick(CallbackInfo ci) { Screen.wrapScreenError(accessor::afterTick, "Ticking screen after tick", Minecraft.getInstance().screen.getClass().getCanonicalName()); } //?} else { - /*@Inject(method = "tick",at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;tick()V")) + /*//? 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(); } @@ -147,6 +175,7 @@ public void beforeScreenTick(CallbackInfo ci) { public void afterScreenTick(CallbackInfo ci) { if (FactoryAPIClient.getScreen() != null) UIAccessor.of(FactoryAPIClient.getScreen()).afterTick(); } + //?} *///?} @Override @@ -155,19 +184,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..cf03e08 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,9 @@ 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; +//?} import net.minecraft.client.renderer.Rect2i; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.texture.OverlayTexture; @@ -48,11 +50,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 +70,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(); } @@ -159,6 +167,6 @@ public static UIAccessor getScreenAccessor(){ } public static UIAccessor getGuiAccessor(){ - return UIAccessor.of(mc.gui); + return UIAccessor.of(FactoryAPIClient.getGuiOrHud(mc)); } } diff --git a/src/main/resources/factory_api.mixins.json5 b/src/main/resources/factory_api.mixins.json5 index a96df6a..c422f07 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", diff --git a/versions/26.2-fabric/gradle.properties b/versions/26.2-fabric/gradle.properties new file mode 100644 index 0000000..e8472c4 --- /dev/null +++ b/versions/26.2-fabric/gradle.properties @@ -0,0 +1,5 @@ +fabric_loader_version=0.19.2 +fabric_api_version=0.153.0+26.2 +mc_version_range=>=26.2 <26.3- +team_reborn_energy_version=5.0.0 +modmenu_version=20.0.0-beta.4 \ No newline at end of file diff --git a/versions/26.3-fabric/gradle.properties b/versions/26.3-fabric/gradle.properties new file mode 100644 index 0000000..f0d23cb --- /dev/null +++ b/versions/26.3-fabric/gradle.properties @@ -0,0 +1,5 @@ +fabric_loader_version=0.19.3 +fabric_api_version=0.154.3+26.3 +mc_version_range=>=26.3- <26.3 +team_reborn_energy_version=5.0.0 +modmenu_version=20.0.0-beta.4 \ No newline at end of file