feat: first init
This commit is contained in:
+12
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user