diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e9bb04..95d4875 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1 +1,3 @@ -- Fix item-loss when dropping an item from the belt. +- Remove the Baubly dependency +- Drop Forge and Quilt support (see Discord for reasoning). This was done pre-1.20.6 to reduce the + work needed to remove Baubly. diff --git a/build.gradle b/build.gradle index 68a8096..8c334a3 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { id "architectury-plugin" version "3.4-SNAPSHOT" - id "dev.architectury.loom" version "1.5-SNAPSHOT" apply false + id "dev.architectury.loom" version "1.6-SNAPSHOT" apply false id "me.shedaniel.unified-publishing" version "0.1.+" apply false id "com.github.breadmoirai.github-release" version "2.4.1" } @@ -70,14 +70,19 @@ allprojects { } maven { - name = "Terrarium Earth Maven" - url = "https://maven.resourcefulbees.com/repository/maven-public" + name = "TerraformersMC Maven" + url = "https://maven.terraformersmc.com" } maven { name = "Cardinal Components Maven" url = "https://maven.ladysnake.org/releases" } + + maven { + name = "TheIllusiveC4's Maven" + url = "https://maven.theillusivec4.top" + } } tasks.withType(JavaCompile) { diff --git a/common/build.gradle b/common/build.gradle index 3c8057c..2538b62 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -6,7 +6,6 @@ dependencies { modImplementation libs.fabric.loader modApi libs.architectury.common modImplementation libs.jamlib.common - modImplementation libs.baubly.common compileOnly libs.mixin.extras.common annotationProcessor libs.mixin.extras.common } diff --git a/common/src/main/java/io/github/jamalam360/utility_belt/StateManager.java b/common/src/main/java/io/github/jamalam360/utility_belt/StateManager.java index 277f60b..8462dfa 100644 --- a/common/src/main/java/io/github/jamalam360/utility_belt/StateManager.java +++ b/common/src/main/java/io/github/jamalam360/utility_belt/StateManager.java @@ -25,7 +25,7 @@ public static void setServerInstance(StateManager serverInstance) { public boolean hasBelt(Player player) { ItemStack belt = UtilityBeltItem.getBelt(player); - return belt != null && belt.is(UtilityBelt.UTILITY_BELT.get()); + return belt != null && belt.is(UtilityBelt.UTILITY_BELT_ITEM.get()); } public void onStartTick(Player player) { diff --git a/common/src/main/java/io/github/jamalam360/utility_belt/UtilityBelt.java b/common/src/main/java/io/github/jamalam360/utility_belt/UtilityBelt.java index 5b93bc9..b2297bf 100644 --- a/common/src/main/java/io/github/jamalam360/utility_belt/UtilityBelt.java +++ b/common/src/main/java/io/github/jamalam360/utility_belt/UtilityBelt.java @@ -38,7 +38,7 @@ public class UtilityBelt { public static final ResourceLocation S2C_SET_BELT_SLOT = id("set_belt_slot"); public static final ResourceLocation S2C_SET_HOTBAR_SLOT = id("set_hotbar_slot"); private static final DeferredRegister ITEMS = DeferredRegister.create(MOD_ID, Registries.ITEM); - public static final RegistrySupplier UTILITY_BELT = ITEMS.register("utility_belt", UtilityBeltItem::new); + public static final RegistrySupplier UTILITY_BELT_ITEM = ITEMS.register("utility_belt", UtilityBeltItem::new); public static final DeferredRegister> MENUS = DeferredRegister.create(MOD_ID, Registries.MENU); public static final RegistrySupplier> MENU_TYPE = MENUS.register("utility_belt", () -> new MenuType<>(UtilityBeltMenu::new, FeatureFlagSet.of())); @@ -46,7 +46,7 @@ public static void init() { JamLib.checkForJarRenaming(UtilityBelt.class); ITEMS.register(); MENUS.register(); - UTILITY_BELT.listen((belt) -> CreativeTabRegistry.append(CreativeModeTabs.TOOLS_AND_UTILITIES, UTILITY_BELT.get())); + UTILITY_BELT_ITEM.listen((belt) -> CreativeTabRegistry.append(CreativeModeTabs.TOOLS_AND_UTILITIES, belt)); ServerNetworking.init(); StateManager.setServerInstance(new ServerStateManager()); EnvExecutor.runInEnv(Env.CLIENT, () -> UtilityBeltClient::init); diff --git a/common/src/main/java/io/github/jamalam360/utility_belt/UtilityBeltInventory.java b/common/src/main/java/io/github/jamalam360/utility_belt/UtilityBeltInventory.java index be32e8e..0464567 100644 --- a/common/src/main/java/io/github/jamalam360/utility_belt/UtilityBeltInventory.java +++ b/common/src/main/java/io/github/jamalam360/utility_belt/UtilityBeltInventory.java @@ -47,6 +47,7 @@ public boolean equals(Object obj) { return false; } + @Override public UtilityBeltInventory clone() { UtilityBeltInventory inv = new UtilityBeltInventory(); for (int i = 0; i < this.getContainerSize(); i++) { diff --git a/common/src/main/java/io/github/jamalam360/utility_belt/UtilityBeltItem.java b/common/src/main/java/io/github/jamalam360/utility_belt/UtilityBeltItem.java index 0f74787..725a85f 100644 --- a/common/src/main/java/io/github/jamalam360/utility_belt/UtilityBeltItem.java +++ b/common/src/main/java/io/github/jamalam360/utility_belt/UtilityBeltItem.java @@ -1,191 +1,165 @@ package io.github.jamalam360.utility_belt; -import dev.architectury.platform.Platform; -import earth.terrarium.baubly.common.*; -import io.github.jamalam360.jamlib.JamLibPlatform; import io.github.jamalam360.utility_belt.client.ClientNetworking; +import java.util.List; +import java.util.function.Consumer; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.util.Mth; -import net.minecraft.world.Container; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.SlotAccess; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.ClickAction; import net.minecraft.world.inventory.Slot; -import net.minecraft.world.item.*; +import net.minecraft.world.item.BrushItem; +import net.minecraft.world.item.FishingRodItem; +import net.minecraft.world.item.FlintAndSteelItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ProjectileWeaponItem; +import net.minecraft.world.item.ShearsItem; +import net.minecraft.world.item.SpyglassItem; +import net.minecraft.world.item.TieredItem; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.TridentItem; import net.minecraft.world.level.Level; import org.jetbrains.annotations.Nullable; -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; - -public class UtilityBeltItem extends Item implements Bauble { - - private static final int BAR_COLOR = Mth.color(0.4F, 0.4F, 1.0F); - - public UtilityBeltItem() { - super(new Item.Properties().stacksTo(1)); - } - - @SuppressWarnings("BooleanMethodIsAlwaysInverted") - private static boolean handleStack(ItemStack stack, UtilityBeltInventory inv, Consumer slotAccess) { - if (stack.isEmpty()) { - for (int i = 0; i < inv.getContainerSize(); i++) { - if (!inv.getItem(i).isEmpty()) { - ItemStack removed = inv.removeItemNoUpdate(i); - slotAccess.accept(removed); - return true; - } - } - } else if (isValidItem(stack)) { - for (int i = 0; i < inv.getContainerSize(); i++) { - if (inv.getItem(i).isEmpty()) { - inv.setItem(i, stack); - slotAccess.accept(ItemStack.EMPTY); - return true; - } - } - } - - return false; - } - - private static void playInsertSound(Entity entity) { - entity.playSound(SoundEvents.BUNDLE_INSERT, 0.8F, 0.8F + entity.level().getRandom().nextFloat() * 0.4F); - } - - public static boolean isValidItem(ItemStack stack) { - return stack.getItem() instanceof TieredItem || stack.getItem() instanceof ProjectileWeaponItem || stack.getItem() instanceof FishingRodItem || stack.getItem() instanceof SpyglassItem || stack.getItem() instanceof TridentItem || stack.getItem() instanceof FlintAndSteelItem || stack.getItem() instanceof ShearsItem || stack.getItem() instanceof BrushItem || stack.isEmpty() || stack.is(UtilityBelt.ALLOWED_IN_UTILITY_BELT); - } - - public static UtilityBeltInventory getInventoryFromTag(ItemStack stack) { - UtilityBeltInventory inv = new UtilityBeltInventory(); - - if (stack != null) { - CompoundTag tag = stack.getOrCreateTag(); - if (!tag.contains("Inventory")) { - tag.put("Inventory", inv.createTag()); - } else { - inv.fromTag(tag.getList("Inventory", CompoundTag.TAG_COMPOUND)); - } - } - - return inv; - } - - @Nullable - public static ItemStack getBelt(Player player) { - if (Platform.isForgeLike() && BaubleUtils.getBaubleContainer(player, DefaultSlotIdentifiers.BELT.curioId()) == null) { - return null; - } else if (JamLibPlatform.getPlatform().isFabricLike() && BaubleUtils.getBaubleContainer(player, DefaultSlotIdentifiers.BELT.trinketIds()[0]) == null) { - return null; - } - - Map baubles = BaubleUtils.getBaubleContainer(player, DefaultSlotIdentifiers.BELT); - ItemStack stack = ItemStack.EMPTY; - - if (baubles.containsKey(DefaultSlotIdentifiers.BELT.curioId())) { - stack = baubles.get(DefaultSlotIdentifiers.BELT.curioId()).getItem(0); - } else if (baubles.containsKey(DefaultSlotIdentifiers.BELT.trinketIds()[0])) { - stack = baubles.get(DefaultSlotIdentifiers.BELT.trinketIds()[0]).getItem(0); - } - - if (stack.getItem() == UtilityBelt.UTILITY_BELT.get()) { - return stack; - } else { - return null; - } - } - - @Override - public boolean isBarVisible(ItemStack itemStack) { - return getInventoryFromTag(itemStack).hasAnyMatching(s -> !s.isEmpty()); - } - - @Override - public int getBarWidth(ItemStack itemStack) { - long size = getInventoryFromTag(itemStack).getItems().stream().filter((s) -> !s.isEmpty()).count(); - return size == 4L ? 13 : (int) (size * 3); - } - - @Override - public int getBarColor(ItemStack itemStack) { - return BAR_COLOR; - } - - @Override - public void appendHoverText(ItemStack itemStack, @Nullable Level level, List list, TooltipFlag tooltipFlag) { - UtilityBeltInventory inv = getInventoryFromTag(itemStack); - - for (int i = 0; i < inv.getContainerSize(); i++) { - ItemStack stack = inv.getItem(i); - if (!stack.isEmpty()) { - list.add(Component.literal("- ").append(stack.getHoverName())); - } - } - } - - @Override - public boolean overrideStackedOnOther(ItemStack belt, Slot slot, ClickAction clickAction, Player player) { - if (clickAction != ClickAction.SECONDARY || !slot.allowModification(player)) { - return false; - } - - ItemStack slotStack = slot.getItem(); - UtilityBeltInventory inv = getInventoryFromTag(belt); - - if (!handleStack(slotStack, inv, slot::set)) { - return false; - } - - playInsertSound(player); - belt.getOrCreateTag().put("Inventory", inv.createTag()); - return true; - } - - @Override - public boolean overrideOtherStackedOnMe(ItemStack belt, ItemStack otherStack, Slot slot, ClickAction clickAction, Player player, SlotAccess slotAccess) { - if (clickAction != ClickAction.SECONDARY || !slot.allowModification(player)) { - return false; - } - - UtilityBeltInventory inv = getInventoryFromTag(belt); - - if (!handleStack(otherStack, inv, slotAccess::set)) { - return false; - } - - playInsertSound(player); - belt.getOrCreateTag().put("Inventory", inv.createTag()); - return true; - } - - @Override - public boolean canEquip(ItemStack stack, SlotInfo slot) { - Container container = BaubleUtils.getBaubleContainer(slot.wearer(), slot.identifier()); - - if (container != null && container.hasAnyMatching((s) -> s.getItem() == this)) { - return false; - } - - return slot.identifier().equals(DefaultSlotIdentifiers.BELT.curioId()) || slot.identifier().equals(DefaultSlotIdentifiers.BELT.trinketIds()[0]); - } - - @Override - public void onUnequip(ItemStack stack, SlotInfo slot) { - Player player = (Player) slot.wearer(); - if (player.level().isClientSide) { - StateManager.getClientInstance().setInBelt(player, false); - StateManager.getClientInstance().setSelectedBeltSlot(player, 0); - ClientNetworking.sendNewStateToServer(false, 0, false); - } - } - - @Override - public DropRule getDropRule(ItemStack stack, SlotInfo slot) { - return DropRule.ALWAYS_DROP; - } +public class UtilityBeltItem extends Item { + + private static final int BAR_COLOR = Mth.color(0.4F, 0.4F, 1.0F); + + public UtilityBeltItem() { + super(new Item.Properties().stacksTo(1)); + } + + @SuppressWarnings("BooleanMethodIsAlwaysInverted") + private static boolean handleStack(ItemStack stack, UtilityBeltInventory inv, Consumer slotAccess) { + if (stack.isEmpty()) { + for (int i = 0; i < inv.getContainerSize(); i++) { + if (!inv.getItem(i).isEmpty()) { + ItemStack removed = inv.removeItemNoUpdate(i); + slotAccess.accept(removed); + return true; + } + } + } else if (isValidItem(stack)) { + for (int i = 0; i < inv.getContainerSize(); i++) { + if (inv.getItem(i).isEmpty()) { + inv.setItem(i, stack); + slotAccess.accept(ItemStack.EMPTY); + return true; + } + } + } + + return false; + } + + private static void playInsertSound(Entity entity) { + entity.playSound(SoundEvents.BUNDLE_INSERT, 0.8F, 0.8F + entity.level().getRandom().nextFloat() * 0.4F); + } + + public static boolean isValidItem(ItemStack stack) { + return stack.getItem() instanceof TieredItem || stack.getItem() instanceof ProjectileWeaponItem || stack.getItem() instanceof FishingRodItem || stack.getItem() instanceof SpyglassItem || stack.getItem() instanceof TridentItem || stack.getItem() instanceof FlintAndSteelItem || stack.getItem() instanceof ShearsItem || stack.getItem() instanceof BrushItem || stack.isEmpty() || stack.is(UtilityBelt.ALLOWED_IN_UTILITY_BELT); + } + + public static UtilityBeltInventory getInventoryFromTag(ItemStack stack) { + UtilityBeltInventory inv = new UtilityBeltInventory(); + + if (stack != null) { + CompoundTag tag = stack.getOrCreateTag(); + if (!tag.contains("Inventory")) { + tag.put("Inventory", inv.createTag()); + } else { + inv.fromTag(tag.getList("Inventory", CompoundTag.TAG_COMPOUND)); + } + } + + return inv; + } + + @Nullable + public static ItemStack getBelt(Player player) { + ItemStack stack = UtilityBeltPlatform.getStackInBeltSlot(player); + + if (stack != null && stack.getItem() == UtilityBelt.UTILITY_BELT_ITEM.get()) { + return stack; + } else { + return null; + } + } + + @Override + public boolean isBarVisible(ItemStack itemStack) { + return getInventoryFromTag(itemStack).hasAnyMatching(s -> !s.isEmpty()); + } + + @Override + public int getBarWidth(ItemStack itemStack) { + long size = getInventoryFromTag(itemStack).getItems().stream().filter((s) -> !s.isEmpty()).count(); + return size == 4L ? 13 : (int) (size * 3); + } + + @Override + public int getBarColor(ItemStack itemStack) { + return BAR_COLOR; + } + + @Override + public void appendHoverText(ItemStack itemStack, @Nullable Level level, List list, TooltipFlag tooltipFlag) { + UtilityBeltInventory inv = getInventoryFromTag(itemStack); + + for (int i = 0; i < inv.getContainerSize(); i++) { + ItemStack stack = inv.getItem(i); + if (!stack.isEmpty()) { + list.add(Component.literal("- ").append(stack.getHoverName())); + } + } + } + + @Override + public boolean overrideStackedOnOther(ItemStack belt, Slot slot, ClickAction clickAction, Player player) { + if (clickAction != ClickAction.SECONDARY || !slot.allowModification(player)) { + return false; + } + + ItemStack slotStack = slot.getItem(); + UtilityBeltInventory inv = getInventoryFromTag(belt); + + if (!handleStack(slotStack, inv, slot::set)) { + return false; + } + + playInsertSound(player); + belt.getOrCreateTag().put("Inventory", inv.createTag()); + return true; + } + + @Override + public boolean overrideOtherStackedOnMe(ItemStack belt, ItemStack otherStack, Slot slot, ClickAction clickAction, Player player, SlotAccess slotAccess) { + if (clickAction != ClickAction.SECONDARY || !slot.allowModification(player)) { + return false; + } + + UtilityBeltInventory inv = getInventoryFromTag(belt); + + if (!handleStack(otherStack, inv, slotAccess::set)) { + return false; + } + + playInsertSound(player); + belt.getOrCreateTag().put("Inventory", inv.createTag()); + return true; + } + + public void onUnequip(LivingEntity wearer) { + if (wearer instanceof Player player && player.level().isClientSide) { + StateManager.getClientInstance().setInBelt(player, false); + StateManager.getClientInstance().setSelectedBeltSlot(player, 0); + ClientNetworking.sendNewStateToServer(false, 0, false); + } + } } diff --git a/common/src/main/java/io/github/jamalam360/utility_belt/UtilityBeltPlatform.java b/common/src/main/java/io/github/jamalam360/utility_belt/UtilityBeltPlatform.java new file mode 100644 index 0000000..d512450 --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/utility_belt/UtilityBeltPlatform.java @@ -0,0 +1,14 @@ +package io.github.jamalam360.utility_belt; + +import dev.architectury.injectables.annotations.ExpectPlatform; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +public class UtilityBeltPlatform { + @Nullable + @ExpectPlatform + public static ItemStack getStackInBeltSlot(LivingEntity entity) { + return null; + } +} diff --git a/common/src/main/java/io/github/jamalam360/utility_belt/client/BeltRenderer.java b/common/src/main/java/io/github/jamalam360/utility_belt/client/BeltRenderer.java index 66d8b1a..c7b194e 100644 --- a/common/src/main/java/io/github/jamalam360/utility_belt/client/BeltRenderer.java +++ b/common/src/main/java/io/github/jamalam360/utility_belt/client/BeltRenderer.java @@ -3,9 +3,8 @@ import com.google.common.base.Suppliers; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; -import earth.terrarium.baubly.client.BaubleRenderer; -import earth.terrarium.baubly.common.SlotInfo; import io.github.jamalam360.utility_belt.UtilityBelt; +import java.util.function.Supplier; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; @@ -17,43 +16,39 @@ import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; - -import java.util.function.Supplier; @Environment(EnvType.CLIENT) -public class BeltRenderer implements BaubleRenderer { - private static final ResourceLocation TEXTURE = UtilityBelt.id("textures/entity/belt.png"); - private static final Supplier> MODEL = Suppliers.memoize(() -> - new BeltModel(BeltModel.createLayerDefinition().bakeRoot()) - ); +public class BeltRenderer { + + private static final ResourceLocation TEXTURE = UtilityBelt.id("textures/entity/belt.png"); + private static final Supplier> MODEL = Suppliers.memoize(() -> + new BeltModel(BeltModel.createLayerDefinition().bakeRoot()) + ); - // shamelessly copied from https://github.com/emilyploszaj/trinkets/blob/main/src/main/java/dev/emi/trinkets/api/client/TrinketRenderer.java - // MIT licensed; thanks Trinkets contributors! - private static void followBodyRotations(final LivingEntity entity, final HumanoidModel model) { - EntityRenderer render = Minecraft.getInstance() - .getEntityRenderDispatcher().getRenderer(entity); + // shamelessly copied from https://github.com/emilyploszaj/trinkets/blob/main/src/main/java/dev/emi/trinkets/api/client/TrinketRenderer.java + // MIT licensed; thanks Trinkets contributors! + private static void followBodyRotations(final LivingEntity entity, final HumanoidModel model) { + EntityRenderer render = Minecraft.getInstance() + .getEntityRenderDispatcher().getRenderer(entity); - if (render instanceof LivingEntityRenderer) { - //noinspection unchecked - LivingEntityRenderer> livingRenderer = - (LivingEntityRenderer>) render; - EntityModel entityModel = livingRenderer.getModel(); + if (render instanceof LivingEntityRenderer) { + //noinspection unchecked + LivingEntityRenderer> livingRenderer = + (LivingEntityRenderer>) render; + EntityModel entityModel = livingRenderer.getModel(); - if (entityModel instanceof HumanoidModel bipedModel) { - bipedModel.copyPropertiesTo(model); - } - } - } + if (entityModel instanceof HumanoidModel bipedModel) { + bipedModel.copyPropertiesTo(model); + } + } + } - @Override - public void render(ItemStack stack, SlotInfo slotContext, PoseStack matrixStack, EntityModel entityModel, MultiBufferSource renderTypeBuffer, int light, float limbAngle, float limbDistance, float tickDelta, float animationProgress, float netHeadYaw, float headPitch) { - HumanoidModel model = MODEL.get(); - LivingEntity entity = slotContext.wearer(); - model.setupAnim(entity, limbAngle, limbDistance, animationProgress, animationProgress, headPitch); - model.prepareMobModel(entity, limbAngle, limbDistance, tickDelta); - followBodyRotations(entity, model); - VertexConsumer vertexConsumer = renderTypeBuffer.getBuffer(model.renderType(TEXTURE)); - model.renderToBuffer(matrixStack, vertexConsumer, light, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1); - } + public static void render(LivingEntity entity, PoseStack matrixStack, MultiBufferSource renderTypeBuffer, int light, float limbAngle, float limbDistance, float tickDelta, float animationProgress, float headPitch) { + HumanoidModel model = MODEL.get(); + model.setupAnim(entity, limbAngle, limbDistance, animationProgress, animationProgress, headPitch); + model.prepareMobModel(entity, limbAngle, limbDistance, tickDelta); + followBodyRotations(entity, model); + VertexConsumer vertexConsumer = renderTypeBuffer.getBuffer(model.renderType(TEXTURE)); + model.renderToBuffer(matrixStack, vertexConsumer, light, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1); + } } diff --git a/common/src/main/java/io/github/jamalam360/utility_belt/client/UtilityBeltClient.java b/common/src/main/java/io/github/jamalam360/utility_belt/client/UtilityBeltClient.java index 745df1d..3bac63c 100644 --- a/common/src/main/java/io/github/jamalam360/utility_belt/client/UtilityBeltClient.java +++ b/common/src/main/java/io/github/jamalam360/utility_belt/client/UtilityBeltClient.java @@ -5,7 +5,6 @@ import dev.architectury.platform.Platform; import dev.architectury.registry.client.keymappings.KeyMappingRegistry; import dev.architectury.registry.menu.MenuRegistry; -import earth.terrarium.baubly.client.BaublyClient; import io.github.jamalam360.utility_belt.StateManager; import io.github.jamalam360.utility_belt.UtilityBelt; import io.github.jamalam360.utility_belt.UtilityBeltItem; @@ -37,7 +36,6 @@ public static void init() { ClientTickEvent.CLIENT_POST.register(UtilityBeltClient::onEndClientTick); ClientRawInputEvent.MOUSE_SCROLLED.register(UtilityBeltClient::onMouseScrolled); ClientPlayerEvent.CLIENT_PLAYER_RESPAWN.register(UtilityBeltClient::onPlayerRespawn); - UtilityBelt.UTILITY_BELT.listen(belt -> BaublyClient.registerBaubleRenderer(belt, new BeltRenderer())); UtilityBelt.MENU_TYPE.listen(menu -> MenuRegistry.registerScreenFactory(UtilityBelt.MENU_TYPE.get(), UtilityBeltScreen::new)); KeyMappingRegistry.register(SWAP_TOGGLE); KeyMappingRegistry.register(SWAP_HOLD); diff --git a/fabric/build.gradle b/fabric/build.gradle index 936959c..78f0669 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -26,8 +26,7 @@ dependencies { modApi libs.architectury.fabric modRuntimeOnly libs.modmenu modImplementation libs.jamlib.fabric - modImplementation libs.baubly.fabric - include libs.baubly.fabric + modImplementation libs.trinkets common(project(path: ":common", configuration: "namedElements")) { transitive false } shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false } @@ -41,7 +40,7 @@ if (System.getenv("CURSEFORGE_API_KEY") != null && System.getenv("MODRINTH_API_K changelog = rootProject.file("CHANGELOG.md").text releaseType = project.version.contains("beta") ? "beta" : "release" gameVersions = [project.minecraft_version] - gameLoaders = ["fabric"] + gameLoaders = ["fabric", "quilt"] mainPublication tasks.remapJar @@ -86,7 +85,8 @@ processResources { "minecraft_version": project.minecraft_version, "fabric_api_version": libs.versions.fabric.api.get(), "architectury_version": libs.versions.architectury.get(), - "jamlib_version": libs.versions.jamlib.get() + "jamlib_version": libs.versions.jamlib.get(), + "trinkets_version": libs.versions.trinkets.get() } inputs.property "version", project.version @@ -94,6 +94,7 @@ processResources { inputs.property "fabric_api_version", libs.versions.fabric.api.get() inputs.property "architectury_version", libs.versions.architectury.get() inputs.property "jamlib_version", libs.versions.jamlib.get() + inputs.property "trinkets_version", libs.versions.trinkets.get() } shadowJar { diff --git a/fabric/src/main/java/io/github/jamalam360/utility_belt/fabric/UtilityBeltFabric.java b/fabric/src/main/java/io/github/jamalam360/utility_belt/fabric/UtilityBeltFabric.java index e1f99c2..4215fa1 100644 --- a/fabric/src/main/java/io/github/jamalam360/utility_belt/fabric/UtilityBeltFabric.java +++ b/fabric/src/main/java/io/github/jamalam360/utility_belt/fabric/UtilityBeltFabric.java @@ -1,12 +1,14 @@ package io.github.jamalam360.utility_belt.fabric; +import dev.emi.trinkets.api.TrinketsApi; import io.github.jamalam360.utility_belt.UtilityBelt; import net.fabricmc.api.ModInitializer; public class UtilityBeltFabric implements ModInitializer { - + @Override public void onInitialize() { UtilityBelt.init(); + UtilityBelt.UTILITY_BELT_ITEM.listen((utilityBelt) -> TrinketsApi.registerTrinket(utilityBelt, new UtilityBeltTrinket())); } } diff --git a/fabric/src/main/java/io/github/jamalam360/utility_belt/fabric/UtilityBeltFabricClient.java b/fabric/src/main/java/io/github/jamalam360/utility_belt/fabric/UtilityBeltFabricClient.java new file mode 100644 index 0000000..45c35bb --- /dev/null +++ b/fabric/src/main/java/io/github/jamalam360/utility_belt/fabric/UtilityBeltFabricClient.java @@ -0,0 +1,14 @@ +package io.github.jamalam360.utility_belt.fabric; + +import dev.emi.trinkets.api.client.TrinketRendererRegistry; +import io.github.jamalam360.utility_belt.UtilityBelt; +import io.github.jamalam360.utility_belt.client.BeltRenderer; +import net.fabricmc.api.ClientModInitializer; + +public class UtilityBeltFabricClient implements ClientModInitializer { + + @Override + public void onInitializeClient() { + UtilityBelt.UTILITY_BELT_ITEM.listen((item) -> TrinketRendererRegistry.registerRenderer(item, (stack, slotReference, contextModel, matrices, vertexConsumers, light, entity, limbAngle, limbDistance, tickDelta, animationProgress, headYaw, headPitch) -> BeltRenderer.render(entity, matrices, vertexConsumers, light, limbAngle, limbDistance, tickDelta, animationProgress, headPitch))); + } +} diff --git a/fabric/src/main/java/io/github/jamalam360/utility_belt/fabric/UtilityBeltPlatformImpl.java b/fabric/src/main/java/io/github/jamalam360/utility_belt/fabric/UtilityBeltPlatformImpl.java new file mode 100644 index 0000000..e9bc4d3 --- /dev/null +++ b/fabric/src/main/java/io/github/jamalam360/utility_belt/fabric/UtilityBeltPlatformImpl.java @@ -0,0 +1,29 @@ +package io.github.jamalam360.utility_belt.fabric; + +import dev.emi.trinkets.api.SlotReference; +import dev.emi.trinkets.api.TrinketComponent; +import dev.emi.trinkets.api.TrinketsApi; +import io.github.jamalam360.utility_belt.UtilityBelt; +import java.util.List; +import java.util.Optional; +import net.minecraft.util.Tuple; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +public class UtilityBeltPlatformImpl { + + @Nullable + public static ItemStack getStackInBeltSlot(LivingEntity entity) { + Optional component = TrinketsApi.getTrinketComponent(entity); + + if (component.isPresent()) { + List> l = component.get().getEquipped(UtilityBelt.UTILITY_BELT_ITEM.get()); + if (!l.isEmpty()) { + return l.get(0).getB(); + } + } + + return null; + } +} diff --git a/fabric/src/main/java/io/github/jamalam360/utility_belt/fabric/UtilityBeltTrinket.java b/fabric/src/main/java/io/github/jamalam360/utility_belt/fabric/UtilityBeltTrinket.java new file mode 100644 index 0000000..09ac996 --- /dev/null +++ b/fabric/src/main/java/io/github/jamalam360/utility_belt/fabric/UtilityBeltTrinket.java @@ -0,0 +1,27 @@ +package io.github.jamalam360.utility_belt.fabric; + +import dev.emi.trinkets.api.SlotReference; +import dev.emi.trinkets.api.Trinket; +import dev.emi.trinkets.api.TrinketEnums.DropRule; +import io.github.jamalam360.utility_belt.UtilityBeltItem; +import io.github.jamalam360.utility_belt.UtilityBeltPlatform; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; + +public class UtilityBeltTrinket implements Trinket { + + @Override + public void onUnequip(ItemStack stack, SlotReference slot, LivingEntity entity) { + // FIXME: for some reason, Trinkets is calling this even when the item is not being unequipped + // To test, go into survival and break a block/attack an entity using an item in the belt + + if (UtilityBeltPlatform.getStackInBeltSlot(entity) == null) { + ((UtilityBeltItem) stack.getItem()).onUnequip(entity); + } + } + + @Override + public DropRule getDropRule(ItemStack stack, SlotReference slot, LivingEntity entity) { + return DropRule.DROP; + } +} diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 9a3eba9..d6e5cf8 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -18,6 +18,9 @@ "entrypoints": { "main": [ "io.github.jamalam360.utility_belt.fabric.UtilityBeltFabric" + ], + "client": [ + "io.github.jamalam360.utility_belt.fabric.UtilityBeltFabricClient" ] }, "mixins": [ @@ -29,7 +32,6 @@ "minecraft": ">=${minecraft_version}", "architectury": ">=${architectury_version}", "jamlib": ">=${jamlib_version}", - "baubly": "*", - "trinkets": "*" + "trinkets": ">=${trinkets_version}" } } diff --git a/forge/build.gradle b/forge/build.gradle deleted file mode 100644 index a5b5a7d..0000000 --- a/forge/build.gradle +++ /dev/null @@ -1,124 +0,0 @@ -plugins { - id "com.github.johnrengelman.shadow" version "7.1.2" - id "me.shedaniel.unified-publishing" -} - -architectury { - platformSetupLoomIde() - forge() -} - -base { - archivesName = "utility-belt-forge" -} - -loom { - forge { - convertAccessWideners = true - mixinConfig "utility_belt.mixins.json" - } -} - -configurations { - common - shadowCommon - compileClasspath.extendsFrom common - runtimeClasspath.extendsFrom common - developmentForge.extendsFrom common -} - -dependencies { - forge libs.forge - modApi libs.architectury.forge - modImplementation libs.jamlib.forge - modImplementation libs.baubly.forge - include libs.baubly.forge - compileOnly libs.mixin.extras.common - annotationProcessor libs.mixin.extras.common - implementation libs.mixin.extras.forge - include libs.mixin.extras.forge - - // Dependency of JamLib - forgeRuntimeLibrary "blue.endless:jankson:1.2.3" - - common(project(path: ":common", configuration: "namedElements")) { transitive false } - shadowCommon(project(path: ":common", configuration: "transformProductionForge")) { transitive = false } -} - -if (System.getenv("CURSEFORGE_API_KEY") != null && System.getenv("MODRINTH_API_KEY") != null) { - unifiedPublishing { - project { - displayName = "V${project.version} (Forge ${project.minecraft_version})" - changelog = rootProject.file("CHANGELOG.md").text - releaseType = project.version.contains("beta") ? "beta" : "release" - gameVersions = [project.minecraft_version] - gameLoaders = ["forge"] - - mainPublication tasks.remapJar - - relations { - depends { - curseforge = "architectury-api" - modrinth = "architectury-api" - } - - depends { - curseforge = "jamlib" - modrinth = "jamlib" - } - - depends { - curseforge = "curios" - modrinth = "curios" - } - } - - curseforge { - token = System.getenv("CURSEFORGE_API_KEY") - id = "664053" - } - - modrinth { - token = System.getenv("MODRINTH_API_KEY") - id = "9ewe2JHJ" - } - } - } -} - -processResources { - filesMatching("mods.toml") { - expand "minecraft_version": project.minecraft_version, - "architectury_version": libs.versions.architectury.get(), - "jamlib_version": libs.versions.jamlib.get() - } - - inputs.property "minecraft_version", project.minecraft_version - inputs.property "architectury_version", libs.versions.architectury.get() - inputs.property "jamlib_version", libs.versions.jamlib.get() -} - -shadowJar { - exclude "fabric.mod.json" - exclude "architectury.common.json" - - configurations = [project.configurations.shadowCommon] - archiveClassifier = "dev-shadow" -} - -remapJar { - input.set shadowJar.archiveFile - dependsOn shadowJar -} - -sourcesJar { - def commonSources = project(":common").sourcesJar - dependsOn commonSources - from commonSources.archiveFile.map { zipTree(it) } -} - -components.java { - withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { - skip() - } -} diff --git a/forge/gradle.properties b/forge/gradle.properties deleted file mode 100644 index 8242585..0000000 --- a/forge/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -loom.platform=forge diff --git a/forge/src/main/java/io/github/jamalam360/utility_belt/forge/UtilityBeltForge.java b/forge/src/main/java/io/github/jamalam360/utility_belt/forge/UtilityBeltForge.java deleted file mode 100644 index 47880d3..0000000 --- a/forge/src/main/java/io/github/jamalam360/utility_belt/forge/UtilityBeltForge.java +++ /dev/null @@ -1,14 +0,0 @@ -package io.github.jamalam360.utility_belt.forge; - -import io.github.jamalam360.utility_belt.UtilityBelt; -import dev.architectury.platform.forge.EventBuses; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; - -@Mod(UtilityBelt.MOD_ID) -public class UtilityBeltForge { - public UtilityBeltForge() { - EventBuses.registerModEventBus(UtilityBelt.MOD_ID, FMLJavaModLoadingContext.get().getModEventBus()); - UtilityBelt.init(); - } -} diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml deleted file mode 100644 index 5a93d0c..0000000 --- a/forge/src/main/resources/META-INF/mods.toml +++ /dev/null @@ -1,57 +0,0 @@ -modLoader = "javafml" -loaderVersion = "[47,)" -license = "MIT" -issueTrackerURL="https://github.com/JamCoreModding/utility-belt/issues" - -[[mods]] -modId = "utility_belt" -version = "${file.jarVersion}" -displayName = "Utility Belt" -displayURL="https://github.com/JamCoreModding/utility-belt" -logoFile = "icon.png" -authors = "Jamalam" -description = ''' -Free your hotbar -''' - -[[dependencies.utility_belt]] -modId = "forge" -mandatory = true -versionRange = "[49,)" -ordering = "NONE" -side = "BOTH" - -[[dependencies.utility_belt]] -modId = "minecraft" -mandatory = true -versionRange = "[${minecraft_version},)" -ordering = "NONE" -side = "BOTH" - -[[dependencies.utility_belt]] -modId = "architectury" -mandatory = true -versionRange = "[${architectury_version},)" -ordering = "AFTER" -side = "BOTH" - -[[dependencies.utility_belt]] -modId = "jamlib" -mandatory = true -versionRange = "[${jamlib_version},)" -ordering = "AFTER" -side = "BOTH" - -[[dependencies.utility_belt]] -modId = "baubly" -mandatory = true -versionRange = "*" -ordering = "AFTER" -side = "BOTH" - -[[dependencies.utility_belt]] -modId = "curios" -mandatory = true -versionRange = "*" -ordering = "AFTER" -side = "BOTH" diff --git a/forge/src/main/resources/pack.mcmeta b/forge/src/main/resources/pack.mcmeta deleted file mode 100644 index 103835d..0000000 --- a/forge/src/main/resources/pack.mcmeta +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pack": { - "description": "Utility Belt", - "pack_format": 15 - } -} diff --git a/gradle.properties b/gradle.properties index 754bb86..8b31bb4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,4 +8,8 @@ branch=main group=io.github.jamalam360 mod_name=Utility Belt mod_id=utility_belt -enabled_platforms=fabric,quilt,forge,neoforge +enabled_platforms=fabric,neoforge + +systemProp.javax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl +systemProp.javax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl +systemProp.javax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index db9a6b8..48c0a02 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/libs.versions.toml b/libs.versions.toml index 8efc2cc..6bdb790 100644 --- a/libs.versions.toml +++ b/libs.versions.toml @@ -17,10 +17,13 @@ quilt-loader = "0.24.0" quilted-fabric-api = "7.4.0+0.90.0-1.20.1" # https://maven.jamalam.tech/#/releases -jamlib = "1.0.8+1.20.4" +jamlib = "1.0.9+1.20.4" -# https://github.com/terrarium-earth/Baubly/blob/1.20.x/gradle.properties -baubly = "1.1.1" +# https://modrinth.com/mod/trinkets/versions +trinkets = "3.8.1" + +# https://modrinth.com/mod/curios/versions +curios = "7.4.1+1.20.4" # https://github.com/LlamaLad7/MixinExtras/releases mixin-extras = "0.3.5" @@ -50,10 +53,9 @@ jamlib-quilt = { module = "io.github.jamalam360:jamlib-quilt", version.ref = "ja jamlib-forge = { module = "io.github.jamalam360:jamlib-forge", version.ref = "jamlib" } jamlib-neoforge = { module = "io.github.jamalam360:jamlib-neoforge", version.ref = "jamlib" } -baubly-common = { module = "earth.terrarium.baubly:baubly-common-1.20.4", version.ref = "baubly" } -baubly-fabric = { module = "earth.terrarium.baubly:baubly-fabric-1.20.4", version.ref = "baubly" } -baubly-forge = { module = "earth.terrarium.baubly:baubly-forge-1.20.4", version.ref = "baubly" } -baubly-neoforge = { module = "earth.terrarium.baubly:baubly-neoforge-1.20.4", version.ref = "baubly" } +trinkets = { module = "dev.emi:trinkets", version.ref = "trinkets" } + +curios-neoforge = { module = "top.theillusivec4.curios:curios-neoforge", version.ref = "curios" } mixin-extras-common = { module = "io.github.llamalad7:mixinextras-common", version.ref = "mixin-extras" } # Everything other than Forge already includes mixin extras diff --git a/neoforge/build.gradle b/neoforge/build.gradle index f9cc9c9..0d0b77c 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -31,8 +31,7 @@ dependencies { neoForge libs.neoforge modApi libs.architectury.neoforge modImplementation libs.jamlib.neoforge - modImplementation libs.baubly.neoforge - include libs.baubly.neoforge + modImplementation libs.curios.neoforge // Dependency of JamLib forgeRuntimeLibrary "blue.endless:jankson:1.2.3" @@ -86,12 +85,14 @@ processResources { filesMatching("mods.toml") { expand "minecraft_version": project.minecraft_version, "architectury_version": libs.versions.architectury.get(), - "jamlib_version": libs.versions.jamlib.get() + "jamlib_version": libs.versions.jamlib.get(), + "curios_version": libs.versions.curios.get() } inputs.property "minecraft_version", project.minecraft_version inputs.property "architectury_version", libs.versions.architectury.get() inputs.property "jamlib_version", libs.versions.jamlib.get() + inputs.property "curios_version", libs.versions.curios.get() } shadowJar { diff --git a/neoforge/src/main/java/io/github/jamalam360/utility_belt/neoforge/UtilityBeltCurio.java b/neoforge/src/main/java/io/github/jamalam360/utility_belt/neoforge/UtilityBeltCurio.java new file mode 100644 index 0000000..d9474d8 --- /dev/null +++ b/neoforge/src/main/java/io/github/jamalam360/utility_belt/neoforge/UtilityBeltCurio.java @@ -0,0 +1,22 @@ +package io.github.jamalam360.utility_belt.neoforge; + +import io.github.jamalam360.utility_belt.UtilityBeltItem; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.NotNull; +import top.theillusivec4.curios.api.SlotContext; +import top.theillusivec4.curios.api.type.capability.ICurio.DropRule; +import top.theillusivec4.curios.api.type.capability.ICurioItem; + +public class UtilityBeltCurio implements ICurioItem { + + @Override + public void onUnequip(SlotContext slotContext, ItemStack newStack, ItemStack stack) { + ((UtilityBeltItem) stack.getItem()).onUnequip(slotContext.entity()); + } + + @Override + public @NotNull DropRule getDropRule(SlotContext slotContext, DamageSource source, int lootingLevel, boolean recentlyHit, ItemStack stack) { + return DropRule.ALWAYS_DROP; + } +} diff --git a/neoforge/src/main/java/io/github/jamalam360/utility_belt/neoforge/UtilityBeltNeoForge.java b/neoforge/src/main/java/io/github/jamalam360/utility_belt/neoforge/UtilityBeltNeoForge.java index 3cf822c..62b1d7e 100644 --- a/neoforge/src/main/java/io/github/jamalam360/utility_belt/neoforge/UtilityBeltNeoForge.java +++ b/neoforge/src/main/java/io/github/jamalam360/utility_belt/neoforge/UtilityBeltNeoForge.java @@ -1,11 +1,19 @@ package io.github.jamalam360.utility_belt.neoforge; import io.github.jamalam360.utility_belt.UtilityBelt; +import net.neoforged.api.distmarker.Dist; import net.neoforged.fml.common.Mod; +import net.neoforged.fml.loading.FMLEnvironment; +import top.theillusivec4.curios.api.CuriosApi; @Mod(UtilityBelt.MOD_ID) public class UtilityBeltNeoForge { public UtilityBeltNeoForge() { UtilityBelt.init(); + UtilityBelt.UTILITY_BELT_ITEM.listen((utilityBelt) -> CuriosApi.registerCurio(utilityBelt, new UtilityBeltCurio())); + + if (FMLEnvironment.dist == Dist.CLIENT) { + UtilityBeltNeoforgeClient.init(); + } } } diff --git a/neoforge/src/main/java/io/github/jamalam360/utility_belt/neoforge/UtilityBeltNeoforgeClient.java b/neoforge/src/main/java/io/github/jamalam360/utility_belt/neoforge/UtilityBeltNeoforgeClient.java new file mode 100644 index 0000000..d2c83f5 --- /dev/null +++ b/neoforge/src/main/java/io/github/jamalam360/utility_belt/neoforge/UtilityBeltNeoforgeClient.java @@ -0,0 +1,25 @@ +package io.github.jamalam360.utility_belt.neoforge; + +import com.mojang.blaze3d.vertex.PoseStack; +import io.github.jamalam360.utility_belt.UtilityBelt; +import io.github.jamalam360.utility_belt.client.BeltRenderer; +import net.minecraft.client.model.EntityModel; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import top.theillusivec4.curios.api.SlotContext; +import top.theillusivec4.curios.api.client.CuriosRendererRegistry; +import top.theillusivec4.curios.api.client.ICurioRenderer; + +public class UtilityBeltNeoforgeClient { + + protected static void init() { + UtilityBelt.UTILITY_BELT_ITEM.listen((utilityBelt) -> CuriosRendererRegistry.register(utilityBelt, () -> new ICurioRenderer() { + @Override + public > void render(ItemStack stack, SlotContext slotContext, PoseStack matrixStack, RenderLayerParent renderLayerParent, MultiBufferSource renderTypeBuffer, int light, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch) { + BeltRenderer.render(slotContext.entity(), matrixStack, renderTypeBuffer, light, limbSwing, limbSwingAmount, partialTicks, ageInTicks, headPitch); + } + })); + } +} diff --git a/neoforge/src/main/java/io/github/jamalam360/utility_belt/neoforge/UtilityBeltPlatformImpl.java b/neoforge/src/main/java/io/github/jamalam360/utility_belt/neoforge/UtilityBeltPlatformImpl.java new file mode 100644 index 0000000..fc6090d --- /dev/null +++ b/neoforge/src/main/java/io/github/jamalam360/utility_belt/neoforge/UtilityBeltPlatformImpl.java @@ -0,0 +1,16 @@ +package io.github.jamalam360.utility_belt.neoforge; + +import io.github.jamalam360.utility_belt.UtilityBelt; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; +import top.theillusivec4.curios.api.CuriosApi; +import top.theillusivec4.curios.api.SlotResult; + +public class UtilityBeltPlatformImpl { + + @Nullable + public static ItemStack getStackInBeltSlot(LivingEntity entity) { + return CuriosApi.getCuriosInventory(entity).flatMap(i -> i.findFirstCurio(UtilityBelt.UTILITY_BELT_ITEM.get())).map(SlotResult::stack).orElse(null); + } +} diff --git a/neoforge/src/main/resources/META-INF/mods.toml b/neoforge/src/main/resources/META-INF/mods.toml index 5b92df1..2dbd43f 100644 --- a/neoforge/src/main/resources/META-INF/mods.toml +++ b/neoforge/src/main/resources/META-INF/mods.toml @@ -42,17 +42,10 @@ versionRange = "[${jamlib_version},)" ordering = "AFTER" side = "BOTH" -[[dependencies.utility_belt]] -modId = "baubly" -mandatory = true -versionRange = "*" -ordering = "AFTER" -side = "BOTH" - [[dependencies.utility_belt]] modId = "curios" -mandatory = true -versionRange = "*" +type = "required" +versionRange = "[${curios_version},)" ordering = "AFTER" side = "BOTH" diff --git a/quilt/build.gradle b/quilt/build.gradle deleted file mode 100644 index ef47ef4..0000000 --- a/quilt/build.gradle +++ /dev/null @@ -1,129 +0,0 @@ -plugins { - id "com.github.johnrengelman.shadow" version "7.1.2" - id "me.shedaniel.unified-publishing" -} - -architectury { - platformSetupLoomIde() - loader("quilt") -} - -base { - archivesName = "utility-belt-quilt" -} - -configurations { - common - shadowCommon - compileClasspath.extendsFrom common - runtimeClasspath.extendsFrom common - developmentFabric.extendsFrom common -} - -repositories { - maven { - name = "Quilt" - url = "https://maven.quiltmc.org/repository/release/" - } -} - -dependencies { - modImplementation libs.quilt.loader - modApi libs.quilted.fabric.api - modApi(libs.architectury.fabric) { - exclude group: "net.fabricmc" - exclude group: "net.fabricmc.fabric-api" - } - modRuntimeOnly libs.modmenu - modImplementation libs.jamlib.quilt - modImplementation libs.baubly.fabric - include libs.baubly.fabric - - common(project(path: ":common", configuration: "namedElements")) { transitive false } - shadowCommon(project(path: ":common", configuration: "transformProductionQuilt")) { transitive false } -} - -if (System.getenv("CURSEFORGE_API_KEY") != null && System.getenv("MODRINTH_API_KEY") != null) { - unifiedPublishing { - project { - displayName = "V${project.version} (Quilt ${project.minecraft_version})" - changelog = rootProject.file("CHANGELOG.md").text - releaseType = project.version.contains("beta") ? "beta" : "release" - gameVersions = [project.minecraft_version] - gameLoaders = ["quilt"] - - mainPublication tasks.remapJar - - relations { - depends { - curseforge = "qsl" - modrinth = "qsl" - } - - depends { - curseforge = "architectury-api" - modrinth = "architectury-api" - } - - depends { - curseforge = "jamlib" - modrinth = "jamlib" - } - - depends { - curseforge = "trinkets" - modrinth = "trinkets" - } - } - - curseforge { - token = System.getenv("CURSEFORGE_API_KEY") - id = "664053" - } - - modrinth { - token = System.getenv("MODRINTH_API_KEY") - id = "9ewe2JHJ" - } - } - } -} - -processResources { - filesMatching("quilt.mod.json") { - expand "version": project.version, - "minecraft_version": project.minecraft_version, - "architectury_version": libs.versions.architectury.get(), - "jamlib_version": libs.versions.jamlib.get() - } - - inputs.property "version", project.version - inputs.property "minecraft_version", project.minecraft_version - inputs.property "architectury_version", libs.versions.architectury.get() - inputs.property "jamlib_version", libs.versions.jamlib.get() -} - -shadowJar { - exclude "architectury.common.json" - - configurations = [project.configurations.shadowCommon] - archiveClassifier = "dev-shadow" -} - -remapJar { - injectAccessWidener = true - input.set shadowJar.archiveFile - dependsOn shadowJar -} - -sourcesJar { - def commonSources = project(":common").sourcesJar - dependsOn commonSources - from commonSources.archiveFile.map { zipTree(it) } -} - -components.java { - withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { - skip() - } -} diff --git a/quilt/gradle.properties b/quilt/gradle.properties deleted file mode 100644 index 4fb20b8..0000000 --- a/quilt/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -loom.platform=quilt diff --git a/quilt/src/main/java/io/github/jamalam360/utility_belt/quilt/UtilityBeltQuilt.java b/quilt/src/main/java/io/github/jamalam360/utility_belt/quilt/UtilityBeltQuilt.java deleted file mode 100644 index b5e9bc5..0000000 --- a/quilt/src/main/java/io/github/jamalam360/utility_belt/quilt/UtilityBeltQuilt.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.github.jamalam360.utility_belt.quilt; - -import io.github.jamalam360.utility_belt.UtilityBelt; -import org.quiltmc.loader.api.ModContainer; -import org.quiltmc.qsl.base.api.entrypoint.ModInitializer; - -public class UtilityBeltQuilt implements ModInitializer { - @Override - public void onInitialize(ModContainer mod) { - UtilityBelt.init(); - } -} diff --git a/quilt/src/main/resources/quilt.mod.json b/quilt/src/main/resources/quilt.mod.json deleted file mode 100644 index 2931ae0..0000000 --- a/quilt/src/main/resources/quilt.mod.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "schema_version": 1, - "mixin": [ - "utility_belt.mixins.json" - ], - "quilt_loader": { - "group": "io.github.jamalam360", - "id": "utility_belt", - "version": "${version}", - "metadata": { - "name": "Utility Belt", - "description": "Free your hotbar", - "contributors": { - "Jamalam": "Owner" - }, - "contact": { - "sources": "https://github.com/JamCoreModding/utility-belt" - }, - "icon": "assets/utility_belt/icon.png" - }, - "intermediate_mappings": "net.fabricmc:intermediary", - "entrypoints": { - "init": ["io.github.jamalam360.utility_belt.quilt.UtilityBeltQuilt"] - }, - "depends": [ - { - "id": "fabricloader", - "version": ">=0.15.0" - }, - { - "id": "quilt_base", - "version": "*" - }, - { - "id": "minecraft", - "version": ">=${minecraft_version}" - }, - { - "id": "architectury", - "version": ">=${architectury_version}" - }, - { - "id": "jamlib", - "version": ">=${jamlib_version}" - }, - { - "id": "baubly", - "version": "*" - }, - { - "id": "trinkets", - "version": "*" - } - ] - }, - "minecraft": { - "environment": "*" - } -} diff --git a/settings.gradle b/settings.gradle index b129035..d4cb553 100644 --- a/settings.gradle +++ b/settings.gradle @@ -30,6 +30,4 @@ dependencyResolutionManagement { rootProject.name = "utility_belt" include("common") include("fabric") -include("quilt") include("neoforge") -include("forge")