diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d9d735f..a8a8bbb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: - name: checkout repository uses: actions/checkout@v3 - name: validate gradle wrapper - uses: gradle/wrapper-validation-action@v1 + uses: gradle/actions/wrapper-validation@v3 - name: setup jdk ${{ matrix.java }} uses: actions/setup-java@v3 with: diff --git a/gradle.properties b/gradle.properties index 2c97999..c6c7893 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ yarn_mappings=b1.7.3+c6a9668 loader_version=0.15.6-babric.1 # Mod Properties -mod_version=1.1.7 +mod_version=1.1.8 maven_group=net.mine_diver archives_base_name=SmoothBeta diff --git a/src/main/java/net/mine_diver/smoothbeta/client/IncompatibleOSScreen.java b/src/main/java/net/mine_diver/smoothbeta/client/IncompatibleOSScreen.java new file mode 100644 index 0000000..37e148c --- /dev/null +++ b/src/main/java/net/mine_diver/smoothbeta/client/IncompatibleOSScreen.java @@ -0,0 +1,34 @@ +package net.mine_diver.smoothbeta.client; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.widget.ButtonWidget; + +@Environment(EnvType.CLIENT) +public class IncompatibleOSScreen extends Screen { + private int ticksRan = 0; + + public IncompatibleOSScreen() { + } + + public void tick() { + ++this.ticksRan; + } + + public void init() { + } + + protected void buttonClicked(ButtonWidget button) { + } + + protected void keyPressed(char character, int keyCode) { + } + + public void render(int mouseX, int mouseY, float delta) { + this.renderBackground(); + this.drawCenteredTextWithShadow(this.textRenderer, "Operating system not supported!", this.width / 2, this.height / 4 - 60 + 20, 16777215); + this.drawCenteredTextWithShadow(this.textRenderer, "MacOS is not supported by smoothbeta.", this.width / 2, this.height / 4 - 60 + 60 + 0, 10526880); + super.render(mouseX, mouseY, delta); + } +} diff --git a/src/main/java/net/mine_diver/smoothbeta/mixin/client/MinecraftAccessor.java b/src/main/java/net/mine_diver/smoothbeta/mixin/client/MinecraftAccessor.java index 2e047a2..fb891c2 100644 --- a/src/main/java/net/mine_diver/smoothbeta/mixin/client/MinecraftAccessor.java +++ b/src/main/java/net/mine_diver/smoothbeta/mixin/client/MinecraftAccessor.java @@ -1,6 +1,7 @@ package net.mine_diver.smoothbeta.mixin.client; import net.minecraft.client.Minecraft; +import net.minecraft.util.OperatingSystem; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; @@ -8,4 +9,7 @@ public interface MinecraftAccessor { @Invoker("logGlError") void smoothbeta_printOpenGLError(String location); + + @Invoker("getOperatingSystem") + OperatingSystem smoothbeta_getOperatingSystem(); } diff --git a/src/main/java/net/mine_diver/smoothbeta/mixin/client/MinecraftMixin.java b/src/main/java/net/mine_diver/smoothbeta/mixin/client/MinecraftMixin.java new file mode 100644 index 0000000..644ca3f --- /dev/null +++ b/src/main/java/net/mine_diver/smoothbeta/mixin/client/MinecraftMixin.java @@ -0,0 +1,34 @@ +package net.mine_diver.smoothbeta.mixin.client; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.mine_diver.smoothbeta.client.IncompatibleOSScreen; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.util.OperatingSystem; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Environment(EnvType.CLIENT) +@Mixin(Minecraft.class) +public abstract class MinecraftMixin { + + @WrapOperation( + method = "init", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/Minecraft;setScreen(Lnet/minecraft/client/gui/screen/Screen;)V" + ) + ) + private void smoothbeta_init(Minecraft instance, Screen screen, Operation original) { + OperatingSystem os = ((MinecraftAccessor) this).smoothbeta_getOperatingSystem(); + + if (OperatingSystem.MACOS == os) { + screen = new IncompatibleOSScreen(); + } + + original.call(instance, screen); + } +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 52f411e..fc501fd 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -34,5 +34,9 @@ "depends": { "minecraft": "1.0.0-beta.7.3", "stationapi": ">=2.0.0-alpha.3" + }, + + "breaks": { + "macula": "*" } } diff --git a/src/main/resources/smoothbeta.mixins.json b/src/main/resources/smoothbeta.mixins.json index 7c8874e..0e9ff9b 100644 --- a/src/main/resources/smoothbeta.mixins.json +++ b/src/main/resources/smoothbeta.mixins.json @@ -5,6 +5,7 @@ "compatibilityLevel": "JAVA_8", "client": [ "client.MinecraftAccessor", + "client.MinecraftMixin", "client.MixinEntityRendererDispatcher", "client.MixinTileEntityRenderDispatcher", "client.multidraw.ChunkRendererMixin",