Traben-0 / Entity_Model_Features

Other
99 stars 18 forks source link

[Idea] Some ideas for EMF #251

Open PixalThePixeled opened 1 month ago

PixalThePixeled commented 1 month ago

While I was creating my roleplay pack, I came up with several ideas for EMF

[Idea 1] Separate armor parts into 4 different models and other armor ideas My idea is to separate the armor parts into 4 models (helmet.jem, chestplate.jem, leggings.jem, boots.jem) and add new properties instead of mob dependent models to avoid creating duplicate models.

The models of the helmet, chestplate and boots will be identical so that armor with extra parts can be created. Additional parts will initially be hidden, but can be enabled using .visible For example, chestplate - jacket with hood on the head: "head.visible": "body.visible"

Which mob is wearing an armor will be determined by the "wearer" property. wearer.1=zombie husk wearer.2=minecraft:skeleton minecraft:stray

Which armor piece the mob is wearing will be determined by the "item" property. item.1=iron_helmet minecraft:diamond_helmet

Using the "itemName" property you can determine the name of the wearing item (also will work with regex:, iregex:, pattern: and ipattern:). It will be easier for creating packs, since the player and mobs use different formats In 1.21 nbt tags were replaced with components and some components have different names (and they may change in future versions) itemName.1=Military helmet

[Idea 2] Leather armor overlay texture (not tinted) can be specified using "texture_overlay":"" in a model. Example: "texture": "textures/models/custom/jacket.png", "texture_overlay": "textures/models/custom/jacket_overlay.png"

[Idea 3] ETF armor/elytra should override Cit Resewn armor/elytra because Cit Resewn doesn't work with textures in not-vanilla folders.

[Idea 4] Variable names for texture animation Can be used to animate textures like breeze wind If the animation goes beyond the texture then the texture will loop

For Box UV cubes: tu - Translation along the u axis. tv - Translation along the v axis.

For Per-face UV cubes: tun - Translation of the north face along the u axis. tue - Translation of the east face along the u axis. tus - Translation of the south face along the u axis. tuw - Translation of the west face along the u axis. tuu - Translation of the up face along the u axis. tud - Translation of the down face along the u axis. tvn - Translation of the north face along the v axis. tve - Translation of the east face along the v axis. tvs - Translation of the south face along the v axis. tvw - Translation of the west face along the v axis. tvu - Translation of the up face along the v axis. tvd - Translation of the down face along the v axis. sun - Scale the north face along the u axis. sue - Scale the east face along the u axis. sus - Scale the south face along the u axis. suw - Scale the west face along the u axis. suu - Scale the up face along the u axis. sud - Scale the down face along the u axis. svn - Scale the north face along the v axis. sve - Scale the east face along the v axis. svs - Scale the south face along the v axis. svw - Scale the west face along the v axis. svu - Scale the up face along the v axis. svd - Scale the down face along the v axis.

[Idea 5] Single-sided cubes "double-sided" definition for model parts will make it possible to make single-sided parts (like block models) "double-sided": <true|false> (defaulf is true) Example: "id": "flower", "translate": [0, 0, 0], "double-sided": false

[Idea 6] Cubes without shade "shade" definition for model parts that will allow you to disable the shade for the cubes (like in block models) "shade": <true|false> (defaulf is true) Example: "id": "flame", "translate": [0, 0, 0], "shade": false

[Idea 7] Applying color on a model parts New variable names will allow you to apply color to the cubes using animations red Overlays with red color green Overlays with green color blue Overlays with blue color alpha Translucency of a overlay colors Setting all to 0 disables all color overlays Example: "body.red": "if(is_hurt, 0.7, 0)", "body.alpha": "if(is_hurt, 0.5, 0)"

[Idea 8] Camera rotation render parameters "camera_rot_x" and "camera_rot_y" - parameters that will returns player's camera rotation Can be used with previous two ideas to create fake particles (playerrot<x|y> returns rotation of a player's head, not a camera's and sometimes it doesn't look right with mods that allow you to move it separated) player rotation

[Idea 9] Player (and Player Armor) exclusive animation variable Variable "pixel.u.v.channel" will return color/alpha channel value of a specific pixel of the player's skin (0-255) u - defines the horizontal position of a pixel on the texture v - defines the vertical position of a pixel on the texture channel - determines exactly what channel value will be returned (red, green, blue or alpha) Example: "body.sy": "if(pixel.0.16.alpha == 123, 1/12 * (8 + min(pixel.0.16.red, 4)), 1)", "left_ear.visible": "pixel.3.16.red==1 && pixel.3.16.alpha==123"

Traben-0 commented 1 month ago

Some good ideas, a few are not very feasible with how things work behind the scenes but ill keep them in mind