[EMF] Entity Model Features [Fabric & Forge]

[EMF] Entity Model Features [Fabric & Forge]

28M Downloads

[Idea] Some ideas for EMF

PixalThePixeled opened this issue · 1 comments

commented

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
(player_rot_<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"

commented

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