Giter VIP home page Giter VIP logo

accessories's Introduction


αccessories

Maven metadata URL

Overview

Accessories is a Data-Driven Accessory mod for NeoForge and Fabric with emphasis on using a Common API for both platforms when possible

This API is based on the works of Curios and Trinkets with credit going to both TheIllusiveC4 and emilyploszaj for their work on Accessory mods for Minecraft.

Build Setup

Groovy

repositories {
    maven { url 'https://maven.wispforest.io/releases' }
    maven { url 'https://maven.su5ed.dev/releases' }
    maven { url 'https://maven.fabricmc.net' }
    maven { url 'https://maven.shedaniel.me/' }
}

dependencies {
    // Fabric
    modImplementation("io.wispforest:accessories-fabric:${project.accessories_version}")
    
    // Neoforge 
    implementation("io.wispforest:accessories-neoforge:${project.accessories_version}")

    // Arch Common
    modImplementation("io.wispforest:accessories-common:${project.accessories_version}")

    // Multiloader Common Intermediary
    compileOnly("io.wispforest:accessories-common:${project.accessories_version}")

    // Multiloader Common Mojang Mappings
    compileOnly("io.wispforest:accessories-common:${project.accessories_version}-mojmap")
}

Kotlin DSL

repositories {
    maven("https://maven.wispforest.io/releases")
    maven("https://maven.su5ed.dev/releases")
    maven("https://maven.fabricmc.net")
    maven("https://maven.shedaniel.me/")
}

dependencies {
    // Fabric
    modImplementation("io.wispforest:accessories-fabric:${properties["accessories_version"]}")
    
    // Neoforge 
    implementation("io.wispforest:accessories-neoforge:${properties["accessories_version"]}")

    // Arch Common
    modImplementation("io.wispforest:accessories-common:${properties["accessories_version"]}")

    // Multiloader Common Intermediary
    compileOnly("io.wispforest:accessories-common:${properties["accessories_version"]}")

    // Multiloader Common Mojang Mappings
    compileOnly("io.wispforest:accessories-common:${properties["accessories_version"]}-mojmap")
}

Features

  • Compatibility Layers with existing Accessory Mods like Curios and Trinkets
  • Full Support for NBT-based Accessories (More Info on Wiki {TODO: ADD LINK TO WIKI})
  • Existing API Events for Piglin Neutral Items, Enderman Masks, Looting Adjustments, Fortune Adjustments, and Snow Walking Ability.
  • Unique Slot API for Mod Specific Accessories (More Info on Wiki {TODO: ADD LINK TO WIKI})

accessories's People

Contributors

dragon-seeker avatar chyzman avatar basiqueevangelist avatar alphamode avatar azuredoom avatar

Stargazers

MMarchjr avatar Jonas avatar ITRR avatar  avatar TexTrue avatar SamTheGit avatar PrangellPlays avatar Vinícius Gama Santos avatar bscit avatar OnixTheCat avatar Eset avatar TheMattaBase avatar NoaW avatar Vaibhav Malaviya avatar  avatar  avatar  avatar Liski avatar dima_dencep avatar Lily avatar  avatar

Watchers

Liski avatar

accessories's Issues

Mod suggestion

could you please add more trinket slots to allow more mod trinkets to be used ie Botania etc? please just how the mod Not Enough Trinket Slots mod 💯

[Bug] Curios Items disappear instead of being migrated

I know that relics / artifacts were supposed to stay or return to the inventory, but after logging into the server - the inventory for relics is empty, used:

curios-forge-5.9.1+1.20.1.jar
trinkets-3.7.2.jar

deleted, then installed:

accessories_cclayer-7.4.0-alpha.10+1.20.jar
accessories_tclayer-3.8.1-alpha.9+1.20.jar
accessories-1.0.0-alpha.22+1.20-neoforge.jar

using:

Minecraft: 1.20.1
Forge: 47.2.30

I know it's hard to check, but I'll help in any way I can, can send a whole modpack if it helps!

[Bug] [Forge 1.20.1] When 'keepInventory' gamerule is set to 'true', dying drops equipped accessories, but keeps everything else.

When turning the keepInventory gamerule on, equiped accessories are dropped on death, but everything else in the inventory is kept.

VIDEO DEMONSTRATION: https://streamable.com/5sd09x

I am using the latest version for 1.20.1 forge "accessories-1.0.0-alpha.24+1.20-neoforge"

Note: I am using Forge version "47.3.3", and not NeoForge. But I tested this on NeoForge "47.1.99" and it still did the same thing.
Also using the Curios compat layer alpha 13 alongside Terra Curio
But testing this with other Curios mods, and also Trinkets still did the same thing of dropping accessories.

Unless there is a separate option/way to keep accessories on death then this seems to be a bug.

[Bug] [Forge 1.20.1] Curios/Trinkets with a 3D model do not appear to other players in multiplayer.

In multiplayer, when a player equips an accessory with a visual 3D model on them, other players can't see it.

Video demonstration: https://streamable.com/t9uzl9

In the video I'm using the Terra Curio mod alongside the Curios compat layer.
But I have also tested this with the Craftable Capes mod alongside the Trinkets compat layer, and in both cases, other players in multiplayer scenarios could not see the equipped accessory's model in game.

Forge Version: 47.3.3
Minecraft Version: 1.20.1

Accessory mods used:
accessories-1.0.0-alpha.24+1.20-neoforge
accessories_cclayer-7.4.0-alpha.13+1.20
accessories_tclayer-3.8.1-alpha.12+1.20

[Feature] Ability to adjust accessory UI position

the mod Scout adds accessories that add more slots to the inventory, when you equip a pouch the extra slots appear on top of the accessory ui which makes changing out accessories difficult
having a way to adjust the ui should help fix this sort of thing

(Forge 1.20.1, using sinytra connector and trinkets compat layer to load scout)
image

[1.21] Performance Improvement Suggestions

This is a suggestion on API improvements based on observed performance issue of Curios in 1.20.1

Problem: Too many mods rely on Optional<ItemStack> findFirst(Predicate<ItemStack> predicate) for checking if a player or entity has certain items. This requires iteration over all slots and often cause lag.

Solution: Have some better optimized methods for common use cases

  • Optional<ItemStack> findFirst(Item item)
    • This can have result cached, and when iterating, it could just iterate over slot types that the item has tag on, skipping unrelated slots.
    • Huge improvements for modpacks where player have many many slots for certain slot types)
  • Optional<ItemStack> findFirst(TagKey<Item> tag)
    • The result can be cached.
    • Large improvements for invocations that's called many times per tick.
    • Ender mask can be part of this, for simple ender mask items
  • Optional<ItemStack> findFirst(NamedFilter filter):
    • an improved version of previous method where the filter can be more than just a tag. The result would also be cached
    • NamedFilter has a ResourceLocation as id for caching purpose. The filter requirement should be static to make caching valid.
  • Add NO_REPEAT tag for items that can only have 1 worn on a player, so that mods don't need to do this check themselves. This should take effect across slot types, so that it works on items that can be placed in multiple slots

[Info] Mod Compatibility Issues

Below is a list of all current mod incompatibilities that are present with the Compatibility Layers and the corresponding Issues:

  • Inventory Hud+ [Link] - Crashes or lags game with errors [Issue] Fixed
  • Sophisticated Backpacks (Unoffical Fabric port) [Link] - Various aspects of equipping and general use case within Accessories Slot is broken [Issue] Fixed
  • Inventorio [Forge/Fabric] [Link] - Crashes out right or issues involved with opening inventory leading to inability to open the screen [Issue]

[Bug] Inventorio incompatibility

Inventory does not show up when using mod Inventorio along with Accessories and Accessories Curios Compat Layer.
Note that the issue might be on the Inventorio side.

Mods used (using the last version for each of them):

  • Accessories [Forge] (Fabric crashes)
  • Sinytra Connector [Forge]
  • Cloth Config [Forge]
  • Kotlin [Forge]
  • Inventorio [Forge]
  • Forgified Fabric API [Forge]
  • Accessories Curios Compat Layer [Fabric]

Logs: https://mclo.gs/avBxVc3

EDIT: Works with Fabric version of Inventorio (And Forge version of Accessories) but then it crashes when using Accessories Trinkets Compat Layer (latest.log, crash-report)

[Feature] Add Wide slot tab option instead of scrolling slots menu

Would be also possible to use the "wide window" format instead of the scrolling version of the menu?
Both curios and Trinket had a version of that so that you wouldn't need to scroll down a giant list of slots, depending on the modpack
image
image

So maybe use the Tabs from Accessory to work as a "filter" so that when you press them, it toggles those slots to be visualized in the menu window.
image

Elytra support?

Please support wearing chest plate, backpack, and elytra simultaneously. Thx.

[Bug] Inmis: Compatibility with Trinkets doesn't work, no custom backpack slot.

Based on the description on Modrinth, if Trinkets is installed on the client, Inmis adds a separate slot for backpacks. Accessories TC Layer doesn't seem to do that, because there is no backpack slot, but there is an additional cloak slot at the bottom of the list (Aether adds the same one at the top). I can still put the backpack in the chestplate slot and open its inventory, so the mod itself definitely works. There is no any crash-reports or regular logs. I'm using Sinytra Connector.

[Bug] [Forge 1.20.1] Multiplayer Syncing Problem on Player Join

When attempting to play Multiplayer/LAN with the accessories mod, only one player can access the accessory GUI at a time. The game will also crash when another player tries to access the accessory GUI screen. The crash is the same for both cases as it seems to be a client side crash.

Crash log: https://pastebin.com/av3zfkq1

In the case of a multiplayer server, only the player who joined the server first can access the accessory GUI, anyone who joins after can press the inventory button, but nothing will happen. If the first player disconnects and reconnects the second player can now open the GUI, but when the first player presses the inventory button, they will crash, and subsequently anyone who joins after, can't open the GUI again.
Also trying to use the "H" keybind to open the GUI does not work either and will also crash the game.

Server video demonstration: https://streamable.com/njru9f

For LAN hosted single player world its pretty much the same but no crash since the host cant disconnect and reconnect. Only the LAN host can access the accessory GUI and not any other players.

Singleplayer LAN video demonstration: https://streamable.com/l45uwa

Note: I have connector present, and I'm using regular Forge, but I have done a lot of troubleshooting, with and without connector installed, using NeoForge, using different curios mods and trinkets mods. I also tested on a clean profile with just accessories and cloth config installed, and it all ends up in the same bug/crash.

Forge Version: 47.3.3
Minecraft Version: 1.20.1

Accessory mods used:
accessories-1.0.0-alpha.24+1.20-neoforge
accessories_cclayer-7.4.0-alpha.13+1.20
accessories_tclayer-3.8.1-alpha.12+1.20

[Bug] Incompatibility between itemstages and Accessories

I am not sure whether I should expect it to work or if it is too much to ask, or even if it should be fixed at the itemstages level, but anyway I inform you of the following issue:

itemstages allows to check that you are not wearing a forbidden equipment regarding the player's stages. In case the player does not have the stage required to wear an equipment, this one is tossed when trying to put it on.

However, when the equipment is placed in a Accessories slot, itemstages does not react (probably it does not check those slots).

I did not try yet incontrol which allows to add potion effects to the players wearing an equipement depending on the player's gamestage, but it is probable that we observe the same issue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.