promotional bannermobile promotional banner

Princ

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

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();
        }
    }
}

The Princ Team

profile avatar
  • 8
    Followers
  • 24
    Projects
  • 346.7K
    Downloads

Just a weird guy who hates Forge :)

Donate

More from PrincParshiaView all