Skip to content

Commit

Permalink
1.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Shnupbups committed Feb 11, 2024
1 parent d2225ba commit 0bd27d8
Show file tree
Hide file tree
Showing 20 changed files with 153 additions and 176 deletions.
20 changes: 17 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
# Piglib
Tags for Piglin stuff.
Tags for Piglin stuff that Mojang were too silly to add themselves.

## Tags included
* `piglib:piglin_bartering_items`
* Items in this tag, when picked up by a Piglin or right clicked with, will result in the Piglin bartering.
* `piglib:piglin_safe_armor`
* Items in this tag, when worn in an armor slot, will prevent nearby Piglins from being angered.
* `piglib:piglin_loved_nuggets`
* Items in this tag, when picked up by Piglins, will be picked up as a whole stack, like gold nuggets, rather than one at a time.
* Piglins will not actively seek out these items. Items in this tag should ***not*** also be in the vanilla `minecraft:piglin_loved` tag.

Note that adding items to any of these tags doesn't automatically add them to `minecraft:piglin_loved`, so if you want Piglins to actively seek out the items when dropped on the ground, you will need to add to that as well.

## How to use in your mod
In your `build.gradle`, put this in the `repositories` block
Expand All @@ -11,6 +22,9 @@ maven {
```
and this in the `dependencies` block
```groovy
modApi "com.shnupbups:Piglib:1.1.1+fabric-mc1.18"
include "com.shnupbups:Piglib:1.1.1+fabric-mc1.18"
modApi "com.shnupbups:Piglib:1.2.0+fabric-mc1.20.4"
```

Making sure to replace the version number with the latest for the Minecraft version of choice.

You may also choose to `include` it if you don't want an external dependency.
72 changes: 36 additions & 36 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
plugins {
id 'fabric-loom' version "${loom_version}"
id 'maven-publish'
id "com.modrinth.minotaur" version "${minotaur_version}"
id 'net.darkhax.curseforgegradle' version "${cfgradle_version}"
id "me.modmuss50.mod-publish-plugin" version "${mod_publish_plugin_version}"
}

sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17

archivesBaseName = project.mod_name
version = project.mod_version + "+" + project.version_meta
version = project.mod_version + "+" + project.version_meta + "-mc" + project.wider_minecraft_version
group = project.maven_group

base {
archivesName = project.mod_name
}

repositories {
maven { url "https://maven.terraformersmc.com/"}
maven { url "https://maven.shedaniel.me/" }
Expand Down Expand Up @@ -40,28 +39,30 @@ dependencies {
modRuntimeOnly "dev.architectury:architectury-fabric:${project.arch_version}"
}

java {
withSourcesJar()
processResources {
inputs.property "version", project.version

filesMatching("fabric.mod.json") {
expand "version": project.version
}
}

tasks.withType(JavaCompile).configureEach {
it.options.encoding = "UTF-8"

it.options.release = 17
}

processResources {
inputs.property "version", project.mod_version
java {
withSourcesJar()

filesMatching("fabric.mod.json") {
expand "version": project.mod_version
}
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}

jar {
from("LICENSE") {
rename { "${it}_${project.archivesBaseName}" }
rename { "${it}_${project.base.archivesName.get()}"}
}

manifest {
attributes([
"Specification-Title" : "${mod_name}",
Expand All @@ -76,25 +77,24 @@ jar {
}
}

modrinth {
projectId = project.modrinth_project
uploadFile = remapJar
versionName = "${project.mod_version} for Minecraft ${project.minecraft_version}"
gameVersions = ["${project.minecraft_version}"]
dependencies {
required.project "fabric-api"
}
}

task publishCurseForge(type: net.darkhax.curseforgegradle.TaskPublishCurseForge) {
apiToken = findProperty('CF_TOKEN')
def projectId = project.cf_project

def mainFile = upload(projectId, remapJar)
mainFile.displayName = "${project.mod_version} for Minecraft ${project.minecraft_version}"
mainFile.addModLoader("Fabric")
mainFile.addGameVersion("${project.minecraft_version}")
mainFile.addRequirement("fabric-api")
publishMods {
changelog = ""
type = STABLE

file = remapJar.archiveFile
modLoaders.add("fabric")

curseforge {
projectId = "${project.cf_project}"
accessToken = providers.environmentVariable("CF_TOKEN")
minecraftVersions.add("${project.minecraft_version}")
}

modrinth {
projectId = "${project.modrinth_project}"
accessToken = providers.environmentVariable("MODRINTH_TOKEN")
minecraftVersions.add("${project.minecraft_version}")
}
}

publishing {
Expand Down
41 changes: 22 additions & 19 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,38 +1,41 @@
# Done to increase the memory available to gradle.
org.gradle.jvmargs = -Xmx1G

# Minecraft Properties
minecraft_version = 1.20.4
wider_minecraft_version = 1.20.4

# Fabric Properties
# check these on https://fabricmc.net/develop/
minecraft_version = 1.20.1
yarn_mappings = 10
yarn_mappings = 3
tiny_version = 2
loader_version = 0.14.22
loom_version = 1.3-SNAPSHOT
loader_version = 0.15.6
loom_version = 1.5-SNAPSHOT

# Mod Properties
mod_version = 1.1.2
mod_version = 1.2.0
maven_group = com.shnupbups
mod_name = piglib
version_meta = fabric-mc1.20.1

# Modrinth Stuff
minotaur_version = 2.+
modrinth_project = piglib
version_meta = fabric

# CurseForge stuff
cfgradle_version = 1.1.15
# Mod Publish Plugin
mod_publish_plugin_version = 0.4.5
modrinth_project = VgThuZ4x
cf_project = 410302

# Dependencies
# check on https://fabricmc.net/develop/
fapi_version = 0.87.0+1.20.1
fapi_version = 0.96.0+1.20.4

# Dev Environment Stuff
# check on linkie at https://linkie.shedaniel.me/dependencies#dep-2
rei_version = 12.0.645
# check on linkie at https://linkie.shedaniel.dev/dependencies?loader=fabric#dep-2
# or on maven at https://maven.shedaniel.me/me/shedaniel/RoughlyEnoughItems-fabric/
rei_version = 14.0.688

# check on linkie at https://linkie.shedaniel.me/dependencies#dep-1
arch_version = 9.1.12
# check on linkie at https://linkie.shedaniel.dev/dependencies?loader=fabric#dep-1
# or on maven at https://maven.shedaniel.me/dev/architectury/architectury-fabric/
arch_version = 11.0.12

# check on linkie at https://linkie.shedaniel.me/dependencies#dep-3
modmenu_version = 7.1.0
# check on linkie at https://linkie.shedaniel.dev/dependencies?loader=fabric#dep-3
# or on maven at https://maven.terraformersmc.com/releases/com/terraformersmc/modmenu
modmenu_version = 9.0.0
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
3 changes: 1 addition & 2 deletions src/main/java/com/shnupbups/piglib/Piglib.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package com.shnupbups.piglib;

import net.fabricmc.api.ModInitializer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.tag.ItemTags;
import net.minecraft.registry.tag.TagKey;
import net.minecraft.util.Identifier;

import net.fabricmc.api.ModInitializer;

public class Piglib implements ModInitializer {
public static final String MOD_ID = "piglib";

Expand Down
25 changes: 12 additions & 13 deletions src/main/java/com/shnupbups/piglib/mixin/PiglinBrainMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,32 +24,31 @@

package com.shnupbups.piglib.mixin;

import java.util.Iterator;

import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import com.llamalad7.mixinextras.sugar.Local;
import com.shnupbups.piglib.Piglib;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.mob.PiglinBrain;
import net.minecraft.entity.mob.PiglinEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;

import com.shnupbups.piglib.Piglib;

@Mixin(PiglinBrain.class)
public abstract class PiglinBrainMixin {
@Inject(method = "acceptsForBarter(Lnet/minecraft/item/ItemStack;)Z", at = @At("RETURN"), cancellable = true)
private static void acceptsForBarterInject(ItemStack stack, CallbackInfoReturnable<Boolean> cir) {
if (stack.isIn(Piglib.PIGLIN_BARTERING_ITEMS)) cir.setReturnValue(true);
@ModifyReturnValue(method = "acceptsForBarter(Lnet/minecraft/item/ItemStack;)Z", at = @At("RETURN"))
private static boolean acceptsForBarterModify(boolean original, ItemStack stack) {
if (stack.isIn(Piglib.PIGLIN_BARTERING_ITEMS)) return true;
return original;
}

@Inject(method = "wearsGoldArmor(Lnet/minecraft/entity/LivingEntity;)Z", at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/item/ItemStack;getItem()Lnet/minecraft/item/Item;"), cancellable = true, locals = LocalCapture.CAPTURE_FAILHARD)
private static void wearsGoldArmorInject(LivingEntity entity, CallbackInfoReturnable<Boolean> cir, Iterable<ItemStack> iterable, Iterator iterator, ItemStack stack, Item item) {
@Inject(method = "wearsGoldArmor(Lnet/minecraft/entity/LivingEntity;)Z", at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/item/ItemStack;getItem()Lnet/minecraft/item/Item;"), cancellable = true)
private static void wearsGoldArmorInject(LivingEntity entity, CallbackInfoReturnable<Boolean> cir, @Local ItemStack stack) {
if (stack.isIn(Piglib.PIGLIN_SAFE_ARMOR)) cir.setReturnValue(true);
}

Expand All @@ -58,8 +57,8 @@ private static boolean nuggetLootRedirect(ItemStack stack, Item item) {
return stack.isOf(item) || stack.isIn(Piglib.PIGLIN_LOVED_NUGGETS);
}

@Inject(method = "canGather(Lnet/minecraft/entity/mob/PiglinEntity;Lnet/minecraft/item/ItemStack;)Z", at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/entity/mob/PiglinEntity;canInsertIntoInventory(Lnet/minecraft/item/ItemStack;)Z"), cancellable = true, locals = LocalCapture.CAPTURE_FAILHARD)
private static void canGatherInject(PiglinEntity piglin, ItemStack stack, CallbackInfoReturnable<Boolean> cir, boolean bl) {
@Inject(method = "canGather(Lnet/minecraft/entity/mob/PiglinEntity;Lnet/minecraft/item/ItemStack;)Z", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z"), cancellable = true)
private static void canGatherInject(PiglinEntity piglin, ItemStack stack, CallbackInfoReturnable<Boolean> cir, @Local boolean bl) {
// bl = piglin.canInsertIntoInventory(stack)
if (stack.isIn(Piglib.PIGLIN_LOVED_NUGGETS)) cir.setReturnValue(bl);
}
Expand Down
15 changes: 5 additions & 10 deletions src/main/java/com/shnupbups/piglib/mixin/PiglinEntityMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,32 +24,27 @@

package com.shnupbups.piglib.mixin;

import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.shnupbups.piglib.Piglib;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.mob.AbstractPiglinEntity;
import net.minecraft.entity.mob.PiglinEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import com.shnupbups.piglib.Piglib;

@Mixin(PiglinEntity.class)
public abstract class PiglinEntityMixin extends AbstractPiglinEntity {
private PiglinEntityMixin(EntityType<? extends AbstractPiglinEntity> entityType, World world) {
super(entityType, world);
}

@Inject(method = "equipToOffHand(Lnet/minecraft/item/ItemStack;)V", at = @At("HEAD"), cancellable = true)
public void equipToOffHandInject(ItemStack stack, CallbackInfo ci) {
if (stack.isIn(Piglib.PIGLIN_BARTERING_ITEMS)) {
this.equipStack(EquipmentSlot.OFFHAND, stack);
this.updateDropChances(EquipmentSlot.OFFHAND);
ci.cancel();
}
@ModifyExpressionValue(method = "equipToOffHand(Lnet/minecraft/item/ItemStack;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z"))
public boolean equipToOffHandModify(boolean original, ItemStack stack) {
return original || stack.isIn(Piglib.PIGLIN_BARTERING_ITEMS);
}
}
25 changes: 11 additions & 14 deletions src/main/java/com/shnupbups/piglib/rei/PiglibClientPlugin.java
Original file line number Diff line number Diff line change
@@ -1,20 +1,6 @@
package com.shnupbups.piglib.rei;

import java.util.List;

import com.google.common.collect.Lists;

import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.registry.Registries;
import net.minecraft.registry.tag.ItemTags;

import me.shedaniel.rei.api.client.plugins.REIClientPlugin;
import me.shedaniel.rei.api.client.registry.category.CategoryRegistry;
import me.shedaniel.rei.api.client.registry.display.DisplayRegistry;
import me.shedaniel.rei.api.common.util.CollectionUtils;
import me.shedaniel.rei.api.common.util.EntryIngredients;

import com.shnupbups.piglib.Piglib;
import com.shnupbups.piglib.rei.category.BarteringCategory;
import com.shnupbups.piglib.rei.category.PiglinLovedCategory;
Expand All @@ -24,6 +10,17 @@
import com.shnupbups.piglib.rei.display.PiglinLovedDisplay;
import com.shnupbups.piglib.rei.display.PiglinRepellentsDisplay;
import com.shnupbups.piglib.rei.display.PiglinSafeArmorDisplay;
import me.shedaniel.rei.api.client.plugins.REIClientPlugin;
import me.shedaniel.rei.api.client.registry.category.CategoryRegistry;
import me.shedaniel.rei.api.client.registry.display.DisplayRegistry;
import me.shedaniel.rei.api.common.util.CollectionUtils;
import me.shedaniel.rei.api.common.util.EntryIngredients;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.registry.Registries;
import net.minecraft.registry.tag.ItemTags;

import java.util.List;

public class PiglibClientPlugin implements REIClientPlugin {

Expand Down
9 changes: 2 additions & 7 deletions src/main/java/com/shnupbups/piglib/rei/PiglibPlugin.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
package com.shnupbups.piglib.rei;

import com.shnupbups.piglib.Piglib;
import com.shnupbups.piglib.rei.display.*;
import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.api.common.display.DisplaySerializerRegistry;
import me.shedaniel.rei.api.common.plugins.REIServerPlugin;

import com.shnupbups.piglib.Piglib;
import com.shnupbups.piglib.rei.display.BarteringDisplay;
import com.shnupbups.piglib.rei.display.PiglibDisplay;
import com.shnupbups.piglib.rei.display.PiglinLovedDisplay;
import com.shnupbups.piglib.rei.display.PiglinRepellentsDisplay;
import com.shnupbups.piglib.rei.display.PiglinSafeArmorDisplay;

public class PiglibPlugin implements REIServerPlugin {
public static final CategoryIdentifier<BarteringDisplay> BARTERING = CategoryIdentifier.of(Piglib.MOD_ID, "plugins/bartering");
public static final CategoryIdentifier<PiglinLovedDisplay> PIGLIN_LOVED = CategoryIdentifier.of(Piglib.MOD_ID, "plugins/piglin_loved");
Expand Down
Loading

0 comments on commit 0bd27d8

Please sign in to comment.