Princ

Quick rating

Community listing page, reviews here may not be monitored by the author.

Princ

No reviews yet

Yet another cursed modding library! Its my nickyname tho...

Mod Loaders
Minecraft

About

Description

Modrinth MyProfile Donate@CupOfCoffee

📗 DESCRIPTION


A cursed and simple modding library used in my mods to make codes look polished and smaller. Only for me I guess? or if you can understand you can use it for sure! Ah, another thing… i used mojamps (Official Mojang Mappings) to make it.

📜 HOW TO USE?


In the build.gradle file:

repositories {
    // ...
    maven {
        url = "https://api.modrinth.com/maven"
    }
}

Check versions to get the correct version.

dependencies {
    modImplementation "maven.modrinth:princ:version"
}

📝 TUTORIAL


I dont wanna explain so understand all yourself.

⌨️ Key Binding Registry

Register a new keybinding:

@Override
public void onInitialize() {
    PrincKeyMappingHelper.registerKeyMapping(
            "key.name",
            InputConstants.Type.KEYSYM/SCANCODE/MOUSE,
            GLFW.GLFW_KEY_RIGHT_SHIFT,
            "category.mymod",
            (client, thisKey) -> {
                if (thisKey.consumeClick()){
                    // ...
                }
            }
    );
}

Register an existing keybinding:

@Override
public void onInitialize() {
    KeyMapping myKey = new KeyMapping(
            "key.name",
            InputConstants.Type.KEYSYM/SCANCODE/MOUSE,
            GLFW.GLFW_KEY_RIGHT_SHIFT,
            "category.mymod"
    );

    PrincKeyMappingHelper.registerExternalKeyMapping(myKey, client -> {
        if (myKey.consumeClick()) {
            // ...
        }
    });
}

Check a key press universally (While in any screen):

if (PrincKeyMappingHelper.isKeyDown(myKey)) {
    // ...
}

Cursed

Unlimit any values in options:

@Mixin(OptionInstance.class)
public class OptionInstanceMixin<T> {
    @Shadow
    @Final
    Component caption;

    @Shadow
    T value;

    // Allow saving invalid vlaues (example with the gamma option. remove the if statement to apply for all).

    @Inject(method = "codec", at = @At("HEAD"), cancellable = true)
    private void codec(CallbackInfoReturnable<Codec<Double>> cir) {
        if (caption.getString().equals(I18n.get("options.gamma"))) {
            cir.setReturnValue(Codec.DOUBLE);
        }
    }

    // Allow using invalid vlaues (example with the gamma option. remove the if statement to apply for all).

    @Inject(method = "set", at = @At("HEAD"), cancellable = true)
    private void set(T object, CallbackInfo ci) {
        if (caption.getString().equals(I18n.get("options.gamma"))) {
            this.value = object;
            ci.cancel();
        }
    }
}