Skip to content

Commit

Permalink
Port to Minecraft 1.21
Browse files Browse the repository at this point in the history
  • Loading branch information
EnnuiL committed Jun 11, 2024
1 parent d5c3265 commit 9589636
Show file tree
Hide file tree
Showing 22 changed files with 62 additions and 24 deletions.
6 changes: 6 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,12 @@ loom {
sourceSet('testmod')
}
}

mixin {
useLegacyMixinAp = false
}

accessWidenerPath = file('src/main/resources/libzoomer.accesswidener')
}

repositories {
Expand All @@ -42,10 +45,13 @@ repositories {
// See https://docs.gradle.org/current/userguide/platforms.html for information on how version catalogs work.
dependencies {
minecraft libs.minecraft
mappings loom.officialMojangMappings()
/*
mappings(loom.layered {
it.parchment libs.parchment
it.officialMojangMappings()
})
*/
modImplementation libs.quilt.loader

// Ughhhhhhhhhhh
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ org.gradle.jvmargs = -Xmx1G
org.gradle.parallel = true

# Mod Properties
version = 0.9.0
version = 0.9.1
maven_group = io.github.ennuil
archives_base_name = libzoomer

Expand Down
12 changes: 6 additions & 6 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
[versions]
minecraft = "1.20.6"
parchment = "2024.05.01"
minecraft = "1.21-rc1"
parchment = "2024.06.02"

quilt_loom = "1.6.7"
quilt_loader = "0.25.0"
quilt_loom = "1.6.8"
quilt_loader = "0.26.0"

fabric_api = "0.99.0+1.20.6"
fabric_api = "0.100.0+1.21"

[libraries]
minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" }
parchment = { module = "org.parchmentmc.data:parchment-1.20.6", version.ref = "parchment" }
parchment = { module = "org.parchmentmc.data:parchment-1.21", version.ref = "parchment" }
quilt_loader = { module = "org.quiltmc:quilt-loader", version.ref = "quilt_loader" }

fabric_api = { module = "net.fabricmc.fabric-api:fabric-api", version.ref = "fabric_api" }
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
2 changes: 1 addition & 1 deletion gradlew
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.github.ennuil.libzoomer.api.modifiers;

import io.github.ennuil.libzoomer.api.MouseModifier;
import io.github.ennuil.libzoomer.impl.ModUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.SmoothDouble;
Expand All @@ -9,7 +10,7 @@
* An implemenation of Vanilla's Cinematic Camera as a mouse modifier.
*/
public class CinematicCameraMouseModifier implements MouseModifier {
private static final ResourceLocation MODIFIER_LOCATION = new ResourceLocation("libzoomer:cinematic_camera");
private static final ResourceLocation MODIFIER_LOCATION = ModUtils.id("cinematic_camera");
private boolean active;
private Minecraft minecraft;
private boolean cinematicCameraEnabled;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package io.github.ennuil.libzoomer.api.modifiers;

import io.github.ennuil.libzoomer.api.MouseModifier;
import io.github.ennuil.libzoomer.impl.ModUtils;
import net.minecraft.resources.ResourceLocation;

//A sin was probably committed by using a lot of for each loops
/**
* A mouse modifier that contains multiple mouse modifiers.
*/
public class ContainingMouseModifier implements MouseModifier {
private static final ResourceLocation MODIFIER_LOCATION = new ResourceLocation("libzoomer:modifier_container");
private static final ResourceLocation MODIFIER_LOCATION = ModUtils.id("modifier_container");
private final MouseModifier[] modifiers;
private boolean active;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package io.github.ennuil.libzoomer.api.modifiers;

import io.github.ennuil.libzoomer.api.MouseModifier;
import io.github.ennuil.libzoomer.impl.ModUtils;
import net.minecraft.resources.ResourceLocation;

/**
* An implementation of the spyglass' reduction of the mouse sensitivity as a mouse modifier
*/
public class SpyglassMouseModifier implements MouseModifier {
private static final ResourceLocation MODIFIER_ID = new ResourceLocation("libzoomer:spyglass");
private static final ResourceLocation MODIFIER_ID = ModUtils.id("spyglass");
private boolean active;

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package io.github.ennuil.libzoomer.api.modifiers;

import io.github.ennuil.libzoomer.api.MouseModifier;
import io.github.ennuil.libzoomer.impl.ModUtils;
import net.minecraft.resources.ResourceLocation;

/**
* A mouse modifier which reduces the cursor sensitivity with the transition mode's internal multiplier
*/
public class ZoomDivisorMouseModifier implements MouseModifier {
private static final ResourceLocation MODIFIER_LOCATION = new ResourceLocation("libzoomer:zoom_divisor");
private static final ResourceLocation MODIFIER_LOCATION = ModUtils.id("zoom_divisor");
private boolean active;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.mojang.blaze3d.systems.RenderSystem;
import io.github.ennuil.libzoomer.api.ZoomOverlay;
import io.github.ennuil.libzoomer.impl.ModUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.renderer.RenderType;
Expand All @@ -13,7 +14,7 @@
* An implementation of the spyglass overlay as a zoom overlay
*/
public class SpyglassZoomOverlay implements ZoomOverlay {
private static final ResourceLocation OVERLAY_LOCATION = new ResourceLocation("libzoomer:spyglass_zoom");
private static final ResourceLocation OVERLAY_LOCATION = ModUtils.id("spyglass_zoom");
private final ResourceLocation textureId;
private Minecraft minecraft;
private float scale;
Expand Down Expand Up @@ -79,7 +80,7 @@ public void tickBeforeRender() {
if (!this.active) {
this.scale = 0.5F;
} else {
float lastFrameDuration = this.minecraft.getDeltaFrameTime();
float lastFrameDuration = this.minecraft.getTimer().getGameTimeDeltaTicks();
this.scale = Mth.lerp(0.5F * lastFrameDuration, this.scale, 1.125F);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package io.github.ennuil.libzoomer.api.transitions;

import io.github.ennuil.libzoomer.api.TransitionMode;
import io.github.ennuil.libzoomer.impl.ModUtils;
import net.minecraft.resources.ResourceLocation;

/**
* An implementation of a simple zoom as a transition mode.
*/
public class InstantTransitionMode implements TransitionMode {
private static final ResourceLocation TRANSITION_LOCATION = new ResourceLocation("libzoomer:no_transition");
private static final ResourceLocation TRANSITION_LOCATION = ModUtils.id("no_transition");
private boolean active;
private double divisor;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package io.github.ennuil.libzoomer.api.transitions;

import io.github.ennuil.libzoomer.api.TransitionMode;
import io.github.ennuil.libzoomer.impl.ModUtils;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;

/**
* An implementation of Ok Zoomer's smooth transitions (and Vanilla's spyglass zoom) as a transition mode
*/
public class SmoothTransitionMode implements TransitionMode {
private static final ResourceLocation TRANSITION_LOCATION = new ResourceLocation("libzoomer:smooth_transition");
private static final ResourceLocation TRANSITION_LOCATION = ModUtils.id("smooth_transition");
private boolean active;
private final float smoothMultiplier;
private double fovMultiplier;
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/io/github/ennuil/libzoomer/impl/ModUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package io.github.ennuil.libzoomer.impl;

import net.minecraft.resources.ResourceLocation;

/**
* An internal class for holding the optimal identifier creator.
*/
public class ModUtils {
public static final String MOD_NAMESPACE = "libzoomer";

public static ResourceLocation id(String path) {
return new ResourceLocation(MOD_NAMESPACE, ResourceLocation.assertValidPath(MOD_NAMESPACE, path));
}
}
5 changes: 3 additions & 2 deletions src/main/java/io/github/ennuil/libzoomer/mixin/GuiMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.llamalad7.mixinextras.sugar.ref.LocalBooleanRef;
import io.github.ennuil.libzoomer.api.ZoomInstance;
import io.github.ennuil.libzoomer.api.ZoomRegistry;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiGraphics;
import org.spongepowered.asm.mixin.Mixin;
Expand All @@ -18,10 +19,10 @@ public class GuiMixin {
method = "renderCameraOverlays",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/Minecraft;getDeltaFrameTime()F"
target = "Lnet/minecraft/client/DeltaTracker;getGameTimeDeltaTicks()F"
)
)
private void injectZoomOverlay(GuiGraphics graphics, float tickDelta, CallbackInfo ci, @Share("cancelOverlay") LocalBooleanRef cancelOverlay) {
private void injectZoomOverlay(GuiGraphics graphics, DeltaTracker deltaTracker, CallbackInfo ci, @Share("cancelOverlay") LocalBooleanRef cancelOverlay) {
cancelOverlay.set(false);
for (ZoomInstance instance : ZoomRegistry.getZoomInstances()) {
var overlay = instance.getZoomOverlay();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.github.ennuil.libzoomer.mixin;

import io.github.ennuil.libzoomer.impl.ModUtils;
import io.github.ennuil.libzoomer.impl.SpyglassHelper;
import net.fabricmc.fabric.api.tag.client.v1.ClientTags;
import net.minecraft.client.renderer.item.ItemProperties;
Expand All @@ -13,7 +14,7 @@
public abstract class ItemPropertiesMixin {
@Inject(method = "<clinit>", at = @At("TAIL"))
private static void addScopingPredicateToModdedSpyglasses(CallbackInfo ci) {
ItemProperties.registerGeneric(new ResourceLocation("libzoomer", "scoping"), (stack, clientLevel, entity, i) ->
ItemProperties.registerGeneric(ModUtils.id("scoping"), (stack, clientLevel, entity, i) ->
entity != null
&& entity.isUsingItem()
&& entity.getUseItem() == stack
Expand Down
3 changes: 3 additions & 0 deletions src/main/resources/assets/libzoomer/lang/pt_br.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"tag.item.libzoomer.spyglasses": "Lunetas"
}
1 change: 1 addition & 0 deletions src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"icon": "assets/libzoomer/icon.png",
"environment": "client",
"mixins": ["libzoomer.mixins.json"],
"accessWidener": "libzoomer.accesswidener",
"depends": {
"fabricloader": ">=0.15.10",
"minecraft": ">=1.20.5",
Expand Down
4 changes: 4 additions & 0 deletions src/main/resources/libzoomer.accesswidener
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessWidener v2 named

accessible method net/minecraft/resources/ResourceLocation <init> (Ljava/lang/String;Ljava/lang/String;)V
accessible method net/minecraft/resources/ResourceLocation assertValidPath (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
1 change: 1 addition & 0 deletions src/main/resources/quilt.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
"environment": "client"
},
"mixin": "libzoomer.mixins.json",
"access_widener": "libzoomer.accesswidener",
"modmenu": {
"badges": ["library"]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@
public class LibZoomerTestMod implements ModInitializer, ClientModInitializer {
// Michael's Zoom Instance
private static final ZoomInstance MICHAEL_ZOOM = new ZoomInstance(
new ResourceLocation("libzoomer_test:zoom"),
ResourceLocation.parse("libzoomer_test:zoom"),
10.0F, new SmoothTransitionMode(),
new SpyglassMouseModifier(),
new SpyglassZoomOverlay(new ResourceLocation("libzoomer_test:textures/misc/michael.png"))
new SpyglassZoomOverlay(ResourceLocation.parse("libzoomer_test:textures/misc/michael.png"))
);

// Michelle's Zoom Instance
private static final ZoomInstance MICHELLE_ZOOM = new ZoomInstance(
new ResourceLocation("libzoomer_test:zoom_2"),
ResourceLocation.parse("libzoomer_test:zoom_2"),
3.0F, new InstantTransitionMode(),
new CinematicCameraMouseModifier(),
null
Expand All @@ -49,7 +49,7 @@ public class LibZoomerTestMod implements ModInitializer, ClientModInitializer {
@Override
public void onInitialize() {
// Register the Michael item
Registry.register(BuiltInRegistries.ITEM, new ResourceLocation("libzoomer_test:michael"), MICHAEL_ITEM);
Registry.register(BuiltInRegistries.ITEM, ResourceLocation.parse("libzoomer_test:michael"), MICHAEL_ITEM);
}

@Override
Expand Down

0 comments on commit 9589636

Please sign in to comment.