feat: first init

This commit is contained in:
darwincereska
2026-05-05 16:40:26 -04:00
commit 9822bd799c
15 changed files with 612 additions and 0 deletions
@@ -0,0 +1,12 @@
package dev.darwincereska.novillagercooldown.client;
import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint;
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
public class NovillagercooldownDataGenerator implements DataGeneratorEntrypoint {
@Override
public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) {
FabricDataGenerator.Pack pack = fabricDataGenerator.createPack();
}
}
@@ -0,0 +1,14 @@
{
"required": true,
"minVersion": "0.8",
"package": "dev.darwincereska.novillagercooldown.mixin.client",
"compatibilityLevel": "JAVA_21",
"client": [
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
}
}
@@ -0,0 +1,10 @@
package dev.darwincereska.novillagercooldown;
import net.fabricmc.api.ModInitializer;
public class Novillagercooldown implements ModInitializer {
@Override
public void onInitialize() {
}
}
@@ -0,0 +1,30 @@
package dev.darwincereska.novillagercooldown.mixin;
import net.minecraft.village.TradeOffer;
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.CallbackInfoReturnable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(TradeOffer.class)
public abstract class TradeOfferNotSoldOut {
@Shadow private int uses;
@Final @Shadow private int maxUses;
// Always say this offer is not out of stock
@Inject(method = "isDisabled", at = @At("HEAD"), cancellable = true)
private void novillagercooldown$neverOutOfStock(CallbackInfoReturnable<Boolean> cir) {
cir.setReturnValue(false);
}
// Prevent uses from ever pushing it into a sold-out state
@Inject(method = "use", at = @At("HEAD"))
private void novillagercooldown$dontIncreaseUses(CallbackInfo ci) {
if (this.uses >= this.maxUses) {
this.uses = 0;
}
}
}
+32
View File
@@ -0,0 +1,32 @@
{
"schemaVersion": 1,
"id": "novillagercooldown",
"version": "${version}",
"name": "NoVillagerCooldown",
"description": "",
"authors": [],
"contact": {},
"license": "All-Rights-Reserved",
"icon": "assets/novillagercooldown/icon.png",
"environment": "server",
"entrypoints": {
"fabric-datagen": [
"dev.darwincereska.novillagercooldown.client.NovillagercooldownDataGenerator"
],
"main": [
"dev.darwincereska.novillagercooldown.Novillagercooldown"
]
},
"mixins": [
"novillagercooldown.mixins.json",
{
"config": "novillagercooldown.client.mixins.json",
"environment": "client"
}
],
"depends": {
"fabricloader": ">=${loader_version}",
"fabric-api": "*",
"minecraft": "${minecraft_version}"
}
}
@@ -0,0 +1,15 @@
{
"required": true,
"minVersion": "0.8",
"package": "dev.darwincereska.novillagercooldown.mixin",
"compatibilityLevel": "JAVA_21",
"mixins": [
"TradeOfferNotSoldOut"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
}
}