Silent Gear

Silent Gear

30M Downloads

Silent Gear 4 Changes (Open Discussion)

SilentChaos512 opened this issue ยท 2 comments

commented

This is an open discussion for the Silent Gear port/rewrite for Minecraft 1.21(.1) (NeoForge) and beyond. AKA the OMG I'M DROWNING IN CODECS update.

I'm mainly just trying to document what I am working on. Mojang's addition of DataComponents (which are awesome) spurred me to make a bunch of changes that were honestly overdue. So, here is a non-exhausted list of changes, ranging from less to more technical.

Completed or In-Progress Changes

  • Tiers have been completely removed from everything (gear, parts, and materials). This has implications for a lot of systems, including synergy and repairs.
  • Synergy calculations have changed based on #267. Tiers were removed. Rarity has less impact. Most bonuses and penalties are now based on materials sharing categories. If there is no one category that matches all materials, it's a big penalty. Other shared categories (2 or more materials) will give small bonuses (exact numbers pending testing).
  • Stats have been replaced with "properties". Properties can store any type of value, not just numbers. Most are still just numerical, of course. Mods can add new property types, but data packs cannot.
    • Number properties store numbers (floats) and an operation.
    • Harvest tier properties store an object that specifies a block tag containing blocks that the tool cannot mine, and a "name" component which is currently displayed as-is, but may get translated later on.
    • The trait list property stores a list of traits. Yes, traits are now stored in a property instead of a dedicated data structure.
  • Parts can no longer be made with multiple materials. Mixing can only occur at the material (alloy) level. The "legacy mixing" config option was removed, and a "creative mixer" will be added to replace it.
  • Traits now contain a list of "effects". The traits themselves no longer have any distinguishing properties; the effects are everything that makes a trait do anything unique.
  • Magnetic trait replaced with a configurable effect. You will be able to control which items are attracted and how strongly. An "attract everything" trait will still be possible to create, but won't be as easy to get as before (it won't be on iron...)
  • Compound materials will be referred to as "alloys" (even non-metal ones). This lines up with the terminology the community seems to prefer. The compounder blocks will now be called alloy makers.
  • Material model data has been simplified, removing parts that were unused by existing code.
  • "select_tier" loot function (generated random gear items) removed
  • Many things now have actual registries (gear types, part types, properties, trait conditions, trait effects, material/part serializers)
  • Major refactoring of all gear-related systems (gear items, traits, parts, materials). If it exists, it probably changed...
    • MaterialInstance and PartInstance had their interfaces and all other implementations removed. Those classes can handle any context now.
    • Everything updated to use properties... generic types, anyone?
  • Codecs... Codecs everywhere...
  • More codecs

Planned Changes

  • A "creative mixer" alloy maker block. It will be able to make alloys from any materials without restrictions. It will have no recipe by default. It will have 4 to 8 input slots. Adding a recipe with a data pack will now be the equivalent of enabling the legacy mixing config lol.
  • Add maces
  • Add necklaces

Undecided

  • The exact rules for repairing gear hasn't been decided. At time of writing, only the same material will work. One idea is to assign categories/groups to the materials, and the materials can repair any other in the same category. Perhaps the "repair groups" could be assigned in a new JSON file type, so the entire set of material files does not need to be overridden.