From 4e151a1bef567a1ffe413e595738ba61bcd921de Mon Sep 17 00:00:00 2001 From: endernon Date: Fri, 24 Jan 2025 19:30:11 +0000 Subject: [PATCH] 2.1.1: 2024 Jan. 20 (GHOST PATCH: Jan. 24) --- .../shaders/core/position_color.json | 6 +- assets/minecraft/font/default.json | 2 +- assets/minecraft/font/screen.json | 1 - assets/minecraft/font/screen/static.json | 1 + assets/minecraft/font/screen/transition.json | 1 + .../minecraft/items/petrified_oak_slab.json | 1 + assets/minecraft/items/snow.json | 2 +- assets/minecraft/models/item/short_grass.json | 1 - assets/minecraft/models/item/snow.json | 2 +- .../item/wynn/jigsaw/bonny/bonny_head.json | 2 +- .../shaders/core/position_color.json | 2 +- .../minecraft/shaders/core/position_tex.json | 2 +- assets/minecraft/shaders/core/render/gui.vsh | 3 +- assets/minecraft/shaders/core/render/item.vsh | 1 + assets/minecraft/shaders/core/render/text.fsh | 25 ++- assets/minecraft/shaders/core/render/text.vsh | 25 ++- .../rendertype_entity_translucent_cull.json | 2 +- .../shaders/core/rendertype_gui.json | 2 +- .../shaders/core/rendertype_text.json | 2 +- .../shaders/include/config/effect.glsl | 10 + assets/minecraft/shaders/include/effect.glsl | 13 +- assets/minecraft/shaders/include/gui.glsl | 5 +- assets/minecraft/shaders/include/item.glsl | 2 - assets/minecraft/shaders/include/text.glsl | 16 +- .../minecraft/shaders/include/transition.glsl | 207 ++++++++++++++++++ assets/minecraft/shaders/include/util.glsl | 15 +- assets/minecraft/sounds/instrument/bass.ogg | Bin 7890 -> 7890 bytes assets/minecraft/sounds/instrument/bell.ogg | Bin 10624 -> 10624 bytes assets/minecraft/sounds/instrument/brass.ogg | Bin 10319 -> 10319 bytes assets/minecraft/sounds/instrument/drum.ogg | Bin 10304 -> 10304 bytes assets/minecraft/sounds/instrument/flute.ogg | Bin 10895 -> 10895 bytes assets/minecraft/sounds/instrument/guitar.ogg | Bin 11298 -> 11298 bytes assets/minecraft/sounds/instrument/harp.ogg | Bin 10806 -> 10806 bytes assets/minecraft/sounds/instrument/hat.ogg | Bin 9894 -> 9894 bytes assets/minecraft/sounds/instrument/kora.ogg | Bin 12922 -> 12922 bytes .../minecraft/sounds/instrument/marimba.ogg | Bin 11636 -> 11636 bytes assets/minecraft/sounds/instrument/piano.ogg | Bin 12273 -> 12273 bytes assets/minecraft/sounds/instrument/pizz.ogg | Bin 13169 -> 13169 bytes assets/minecraft/sounds/instrument/snare.ogg | Bin 12938 -> 12938 bytes .../minecraft/sounds/instrument/tamborine.ogg | Bin 8730 -> 8730 bytes assets/minecraft/sounds/instrument/tom.ogg | Bin 14829 -> 14829 bytes .../sounds/instrument/vibraphone.ogg | Bin 9914 -> 9914 bytes .../minecraft/sounds/instrument/woodblock.ogg | Bin 8595 -> 8595 bytes assets/minecraft/sounds/other/blank.ogg | Bin 153 -> 153 bytes assets/minecraft/sounds/ui/click.ogg | Bin 2948 -> 2948 bytes .../minecraft/textures/entity/iron_golem.png | Bin 1904 -> 0 bytes assets/minecraft/textures/font/common.png | Bin 1481 -> 1548 bytes .../font/screen/{ => static}/death.png | Bin .../font/screen/{ => static}/fade.png | Bin .../font/screen/{ => static}/flash.png | Bin .../font/screen/{ => static}/load.png | Bin .../font/screen/{ => static}/trans.png | Bin .../font/screen/{ => static}/warp.png | Bin .../font/screen/{ => static}/wynncraft.png | Bin .../font/screen/transition/marker.png | Bin 0 -> 79 bytes pack.mcmeta | 2 +- 56 files changed, 323 insertions(+), 30 deletions(-) delete mode 100644 assets/minecraft/font/screen.json create mode 100644 assets/minecraft/font/screen/static.json create mode 100644 assets/minecraft/font/screen/transition.json create mode 100644 assets/minecraft/items/petrified_oak_slab.json delete mode 100644 assets/minecraft/models/item/short_grass.json create mode 100644 assets/minecraft/shaders/include/transition.glsl delete mode 100644 assets/minecraft/textures/entity/iron_golem.png rename assets/minecraft/textures/font/screen/{ => static}/death.png (100%) rename assets/minecraft/textures/font/screen/{ => static}/fade.png (100%) rename assets/minecraft/textures/font/screen/{ => static}/flash.png (100%) rename assets/minecraft/textures/font/screen/{ => static}/load.png (100%) rename assets/minecraft/textures/font/screen/{ => static}/trans.png (100%) rename assets/minecraft/textures/font/screen/{ => static}/warp.png (100%) rename assets/minecraft/textures/font/screen/{ => static}/wynncraft.png (100%) create mode 100644 assets/minecraft/textures/font/screen/transition/marker.png diff --git a/1_21_2/assets/minecraft/shaders/core/position_color.json b/1_21_2/assets/minecraft/shaders/core/position_color.json index ccfbd842b..85a21452a 100644 --- a/1_21_2/assets/minecraft/shaders/core/position_color.json +++ b/1_21_2/assets/minecraft/shaders/core/position_color.json @@ -1,9 +1,7 @@ { "vertex": "core/render/gui", - "fragment": "core/position_color", - "samplers": [ - { "name": "Sampler0" } - ], + "fragment": "core/render/gui", + "samplers": [], "uniforms": [ { "name": "ModelViewMat", diff --git a/assets/minecraft/font/default.json b/assets/minecraft/font/default.json index 3fae49b88..a507e29f2 100644 --- a/assets/minecraft/font/default.json +++ b/assets/minecraft/font/default.json @@ -1 +1 @@ -{"providers":[{"type":"space","advances":{" ":4,"‌":0,"":5,"À":1,"֎":0,"⁤":-1,"":-6,"":-7,"":-14,"":-517,"":-66,"":-158}},{"type":"reference","id":"overlay"},{"type":"bitmap","file":"font/profession.png","ascent":7,"chars":["ⒿⓀⒷⒸⓁⒽⒶⒹⒺⒻⒼⒾ"]},{"type":"bitmap","file":"font/common.png","ascent":8,"height":10,"chars":["❋✤✹✦❉✣❤✺\u0000\u0000\u0000⬣⬌⬤✖✔","\u0000\u0000❁➲\u0000✃⚘\u0000☠✜➽⚔➼☀⛨⌛","⚕\u0000\u0000\u0000\u0000\u0000\u0000⌚⬟\u0000\u0000\u0000\u0000\u0000⬠\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000⬡"]},{"type":"bitmap","file":"font/language/wynnic.png","ascent":7,"chars":["⑽⑾⑿\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u00001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00000\u0000","\u0000⑴⑵⑶⑷⑸⑹⑺⑻⑼\u0000\u0000\u0000\u0000\u00002","\u0000⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪","⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"]},{"type":"bitmap","file":"font/language/high_gavellian.png","ascent":7,"chars":["\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞ","ⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"]},{"type":"bitmap","file":"font/screen/fade.png","ascent":512,"height":1024,"chars":["Á"]},{"type":"bitmap","file":"font/screen/trans.png","ascent":512,"height":1024,"chars":[""]},{"type":"bitmap","file":"font/screen/flash.png","ascent":512,"height":1024,"chars":[""]},{"type":"bitmap","file":"font/currency.png","ascent":8,"chars":["½²¼"]},{"type":"bitmap","file":"font/rank.png","ascent":7,"height":7,"chars":["","","","","","","","","","","","","","","","","",""]},{"type":"bitmap","file":"font/badge.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/sb.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/class.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/five.png","ascent":6,"height":7,"chars":["","",""]},{"type":"bitmap","file":"font/chat/banner_full.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/chat/banner.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/chat/banner_start.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/chat/banner_end.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/chat/banner_end_alt.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/chat/banner_short.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/chat.png","ascent":8,"height":9,"chars":["\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"]}]} \ No newline at end of file +{"providers":[{"type":"space","advances":{" ":4,"‌":0,"":5,"À":1,"֎":0,"⁤":-1,"":-6,"":-7,"":-14,"":-517,"":-66,"":-158}},{"type":"reference","id":"overlay"},{"type":"bitmap","file":"font/profession.png","ascent":7,"chars":["ⒿⓀⒷⒸⓁⒽⒶⒹⒺⒻⒼⒾ"]},{"type":"bitmap","file":"font/common.png","ascent":8,"height":10,"chars":["❋✤✹✦❉✣❤✺\u0000\u0000\u0000⬣⬌⬤✖✔","\u0000\u0000❁➲\u0000✃⚘\u0000☠✜➽⚔➼☀⛨⌛","⚕\u0000\u0000\u0000\u0000\u0000\u0000⌚⬟\u0000\u0000\u0000\u0000\u0000⬠\u0000","\u0000\u0000\u0000⭑\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000⬡"]},{"type":"bitmap","file":"font/language/wynnic.png","ascent":7,"chars":["⑽⑾⑿\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u00001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00000\u0000","\u0000⑴⑵⑶⑷⑸⑹⑺⑻⑼\u0000\u0000\u0000\u0000\u00002","\u0000⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪","⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"]},{"type":"bitmap","file":"font/language/high_gavellian.png","ascent":7,"chars":["\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞ","ⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"]},{"type":"bitmap","file":"font/screen/static/fade.png","ascent":512,"height":1024,"chars":["Á"]},{"type":"bitmap","file":"font/screen/static/trans.png","ascent":512,"height":1024,"chars":[""]},{"type":"bitmap","file":"font/screen/static/flash.png","ascent":512,"height":1024,"chars":[""]},{"type":"bitmap","file":"font/currency.png","ascent":8,"chars":["½²¼"]},{"type":"bitmap","file":"font/rank.png","ascent":7,"height":7,"chars":["","","","","","","","","","","","","","","","","",""]},{"type":"bitmap","file":"font/badge.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/sb.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/class.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/five.png","ascent":6,"height":7,"chars":["","",""]},{"type":"bitmap","file":"font/chat/banner_full.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/chat/banner.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/chat/banner_start.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/chat/banner_end.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/chat/banner_end_alt.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/chat/banner_short.png","ascent":7,"height":7,"chars":[""]},{"type":"bitmap","file":"font/chat.png","ascent":8,"height":9,"chars":["\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"]}]} \ No newline at end of file diff --git a/assets/minecraft/font/screen.json b/assets/minecraft/font/screen.json deleted file mode 100644 index 6f4d2ce0e..000000000 --- a/assets/minecraft/font/screen.json +++ /dev/null @@ -1 +0,0 @@ -{"providers":[{"type":"reference","id":"space"},{"type":"space","advances":{"":-1025}},{"type":"bitmap","file":"font/screen/flash.png","ascent":1024,"height":2048,"chars":[""]},{"type":"bitmap","file":"font/screen/trans.png","ascent":1024,"height":2048,"chars":[""]},{"type":"bitmap","file":"font/screen/death.png","ascent":24,"height":64,"chars":[""]},{"type":"bitmap","file":"font/screen/warp.png","ascent":24,"height":64,"chars":[""]},{"type":"bitmap","file":"font/screen/wynncraft.png","ascent":48,"height":64,"chars":["","\u0000\u0000"]},{"type":"bitmap","file":"font/screen/load.png","ascent":16,"height":32,"chars":[""]}]} \ No newline at end of file diff --git a/assets/minecraft/font/screen/static.json b/assets/minecraft/font/screen/static.json new file mode 100644 index 000000000..c5989d97e --- /dev/null +++ b/assets/minecraft/font/screen/static.json @@ -0,0 +1 @@ +{"providers":[{"type":"reference","id":"space"},{"type":"space","advances":{"":-1025}},{"type":"bitmap","file":"font/screen/static/flash.png","ascent":1024,"height":2048,"chars":[""]},{"type":"bitmap","file":"font/screen/static/trans.png","ascent":1024,"height":2048,"chars":[""]},{"type":"bitmap","file":"font/screen/static/death.png","ascent":24,"height":64,"chars":[""]},{"type":"bitmap","file":"font/screen/static/warp.png","ascent":24,"height":64,"chars":[""]},{"type":"bitmap","file":"font/screen/static/wynncraft.png","ascent":48,"height":64,"chars":["","\u0000\u0000"]},{"type":"bitmap","file":"font/screen/static/load.png","ascent":16,"height":32,"chars":[""]}]} \ No newline at end of file diff --git a/assets/minecraft/font/screen/transition.json b/assets/minecraft/font/screen/transition.json new file mode 100644 index 000000000..e4d82acc3 --- /dev/null +++ b/assets/minecraft/font/screen/transition.json @@ -0,0 +1 @@ +{"providers":[{"type":"reference","id":"space"},{"type":"bitmap","file":"font/screen/transition/marker.png","ascent":-1024,"height":1,"chars":["",""]}]} \ No newline at end of file diff --git a/assets/minecraft/items/petrified_oak_slab.json b/assets/minecraft/items/petrified_oak_slab.json new file mode 100644 index 000000000..11f84898e --- /dev/null +++ b/assets/minecraft/items/petrified_oak_slab.json @@ -0,0 +1 @@ +{"model":{"type":"minecraft:model","model":"minecraft:block/variants/dark_cobblestone_half_slab"}} \ No newline at end of file diff --git a/assets/minecraft/items/snow.json b/assets/minecraft/items/snow.json index 9b08c5c52..5c3a9fdd5 100644 --- a/assets/minecraft/items/snow.json +++ b/assets/minecraft/items/snow.json @@ -1 +1 @@ -{"model":{"type":"minecraft:model","model":"minecraft:item/snow"}} \ No newline at end of file +{"model":{"type":"minecraft:empty"}} \ No newline at end of file diff --git a/assets/minecraft/models/item/short_grass.json b/assets/minecraft/models/item/short_grass.json deleted file mode 100644 index c60c21916..000000000 --- a/assets/minecraft/models/item/short_grass.json +++ /dev/null @@ -1 +0,0 @@ -{"parent":"item/generated","textures":{"layer0":"block/grass"}} \ No newline at end of file diff --git a/assets/minecraft/models/item/snow.json b/assets/minecraft/models/item/snow.json index 287571004..f87f4972b 100644 --- a/assets/minecraft/models/item/snow.json +++ b/assets/minecraft/models/item/snow.json @@ -1 +1 @@ -{"parent":"builtin/generated","textures":{"layer0":"wynn/missingno"},"display":{"thirdperson_righthand":{"rotation":[-90,0,0],"translation":[0,1,-3],"scale":[0.55,0.55,0.55]},"thirdperson_lefthand":{"rotation":[-90,0,0],"translation":[0,1,-3],"scale":[0.55,0.55,0.55]},"firstperson_righthand":{"rotation":[0,-135,25],"translation":[0,4,2],"scale":[1.7,1.7,1.7]},"firstperson_lefthand":{"rotation":[0,-135,25],"translation":[0,4,2],"scale":[1.7,1.7,1.7]}}} \ No newline at end of file +{"parent":"builtin/generated","textures":{"layer0":"wynn/missingno"}} \ No newline at end of file diff --git a/assets/minecraft/models/item/wynn/jigsaw/bonny/bonny_head.json b/assets/minecraft/models/item/wynn/jigsaw/bonny/bonny_head.json index 7b0492280..8f2586254 100644 --- a/assets/minecraft/models/item/wynn/jigsaw/bonny/bonny_head.json +++ b/assets/minecraft/models/item/wynn/jigsaw/bonny/bonny_head.json @@ -1 +1 @@ -{"textures":{"0":"wynn/jigsaw/bonny/flame","2":"wynn/jigsaw/bonny/eyes","particle":"wynn/jigsaw/bonny/flame"},"elements":[{"from":[5,4,5],"to":[11,20,11],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[5,0,11,16],"texture":"#0"},"east":{"uv":[11,0,5,16],"texture":"#0"},"south":{"uv":[5,0,11,16],"texture":"#0"},"west":{"uv":[11,0,5,16],"texture":"#0"},"down":{"uv":[5,10,11,16],"texture":"#0"}}},{"from":[11,4,5],"to":[5,20,11],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[11,0,5,16],"texture":"#0"},"east":{"uv":[5,0,11,16],"texture":"#0"},"south":{"uv":[11,0,5,16],"texture":"#0"},"west":{"uv":[5,0,11,16],"texture":"#0"},"down":{"uv":[5,10,11,16],"texture":"#0"}}},{"from":[3.5,2.5,4.5],"to":[12.5,9.5,11.5],"rotation":{"angle":0,"axis":"y","origin":[8,3.5,8]},"faces":{"north":{"uv":[4,5,12,11],"texture":"#2"},"east":{"uv":[0,0,0,0],"texture":"#2"},"south":{"uv":[0,0,0,0],"texture":"#2"},"west":{"uv":[0,0,0,0],"texture":"#2"},"up":{"uv":[0,0,0,0],"texture":"#2"},"down":{"uv":[0,0,0,0],"texture":"#2"}}}],"display":{"head":{"scale":[1.65,1.65,1.65]}}} \ No newline at end of file +{"textures":{"0":"wynn/jigsaw/bonny/flame","1":"wynn/jigsaw/bonny/eyes","particle":"wynn/jigsaw/bonny/flame"},"elements":[{"from":[5,4,5],"to":[11,20,11],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[5,0,11,16],"texture":"#0"},"east":{"uv":[11,0,5,16],"texture":"#0"},"south":{"uv":[5,0,11,16],"texture":"#0"},"west":{"uv":[11,0,5,16],"texture":"#0"},"down":{"uv":[5,10,11,16],"texture":"#0"}}},{"from":[11,4,5],"to":[5,20,11],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[11,0,5,16],"texture":"#0"},"east":{"uv":[5,0,11,16],"texture":"#0"},"south":{"uv":[11,0,5,16],"texture":"#0"},"west":{"uv":[5,0,11,16],"texture":"#0"},"down":{"uv":[5,10,11,16],"texture":"#0"}}},{"from":[3.5,2.5,4.5],"to":[12.5,9.5,11.5],"rotation":{"angle":0,"axis":"y","origin":[8,3.5,8]},"faces":{"north":{"uv":[4,5,12,11],"texture":"#1"}}}],"display":{"head":{"scale":[1.65,1.65,1.65]}}} \ No newline at end of file diff --git a/assets/minecraft/shaders/core/position_color.json b/assets/minecraft/shaders/core/position_color.json index 81bac4b5c..4cb84cd39 100644 --- a/assets/minecraft/shaders/core/position_color.json +++ b/assets/minecraft/shaders/core/position_color.json @@ -1 +1 @@ -{"blend":{"func":"add","srcrgb":"srcalpha","dstrgb":"1-srcalpha"},"vertex":"render/gui","fragment":"position_color","attributes":["Color"],"samplers":[],"uniforms":[{"name":"ModelViewMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ProjMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ColorModulator","type":"float","count":4,"values":[1.0,1.0,1.0,1.0]}]} \ No newline at end of file +{"blend":{"func":"add","srcrgb":"srcalpha","dstrgb":"1-srcalpha"},"vertex":"render/gui","fragment":"render/gui","samplers":[],"uniforms":[{"name":"ModelViewMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ProjMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ColorModulator","type":"float","count":4,"values":[1.0,1.0,1.0,1.0]}]} \ No newline at end of file diff --git a/assets/minecraft/shaders/core/position_tex.json b/assets/minecraft/shaders/core/position_tex.json index b6878d89b..3eff8ad15 100644 --- a/assets/minecraft/shaders/core/position_tex.json +++ b/assets/minecraft/shaders/core/position_tex.json @@ -1 +1 @@ -{"blend":{"func":"add","srcrgb":"srcalpha","dstrgb":"1-srcalpha"},"vertex":"render/texture","fragment":"render/texture","attributes":["Position","UV0"],"samplers":[{"name":"Sampler0"}],"uniforms":[{"name":"ModelViewMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ProjMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ColorModulator","type":"float","count":4,"values":[1.0,1.0,1.0,1.0]},{"name":"ScreenSize","type":"float","count":2,"values":[0.0,0.0]},{"name":"GameTime","type":"float","count":1,"values":[1.0]}]} \ No newline at end of file +{"blend":{"func":"add","srcrgb":"srcalpha","dstrgb":"1-srcalpha"},"vertex":"render/texture","fragment":"render/texture","samplers":[{"name":"Sampler0"}],"uniforms":[{"name":"ModelViewMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ProjMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ColorModulator","type":"float","count":4,"values":[1.0,1.0,1.0,1.0]},{"name":"ScreenSize","type":"float","count":2,"values":[0.0,0.0]},{"name":"GameTime","type":"float","count":1,"values":[1.0]}]} \ No newline at end of file diff --git a/assets/minecraft/shaders/core/render/gui.vsh b/assets/minecraft/shaders/core/render/gui.vsh index c776b7bbb..8625cefff 100644 --- a/assets/minecraft/shaders/core/render/gui.vsh +++ b/assets/minecraft/shaders/core/render/gui.vsh @@ -19,11 +19,10 @@ void main() { transform.color = Color; transform.position = Position; transform.projMat = ProjMat; - transform.vertexColor = Color; gl_Position = ProjMat * ModelViewMat * vec4(transform.position, 1.0); disableBadges(2); disableTooltips(); - vertexColor = transform.vertexColor; + vertexColor = transform.color; } \ No newline at end of file diff --git a/assets/minecraft/shaders/core/render/item.vsh b/assets/minecraft/shaders/core/render/item.vsh index 483751595..cbfcffc5b 100644 --- a/assets/minecraft/shaders/core/render/item.vsh +++ b/assets/minecraft/shaders/core/render/item.vsh @@ -6,6 +6,7 @@ #moj_import #moj_import #moj_import +#moj_import #moj_import in vec3 Position; diff --git a/assets/minecraft/shaders/core/render/text.fsh b/assets/minecraft/shaders/core/render/text.fsh index ae54594be..af45e7ae0 100644 --- a/assets/minecraft/shaders/core/render/text.fsh +++ b/assets/minecraft/shaders/core/render/text.fsh @@ -4,7 +4,11 @@ #define RENDERTYPE_TEXT_SEE_THROUGH #moj_import +#moj_import +#moj_import #moj_import +#moj_import +#moj_import #moj_import uniform sampler2D Sampler0; @@ -13,6 +17,8 @@ uniform vec4 ColorModulator; uniform float FogStart; uniform float FogEnd; uniform vec4 FogColor; +uniform float GameTime; +uniform vec2 ScreenSize; in float vertexDistance; in vec4 vertexColor; @@ -21,16 +27,33 @@ in vec2 texCoord0; in float depth; in float shadow; +flat in int transition; +flat in int vertexId; +in vec2 topRight; +in vec2 bottomLeft; +in vec2 screen; + out vec4 fragColor; void main() { transform.vertexColor = vertexColor; transform.colorMod = ColorModulator; transform.texColor = texture(Sampler0, texCoord0); - transform.color = transform.texColor * vertexColor * ColorModulator; + transform.color = transform.texColor * transform.vertexColor * transform.colorMod; + transform.gameTime = GameTime; + transform.screenSize = ScreenSize; + transform.centerUV = gl_FragCoord.xy / transform.screenSize - 0.5; + transform.aspectRatio = transform.screenSize.y / transform.screenSize.x; transform.textDepth = depth; transform.isShadow = shadow > 0.5; + transform.transition = transition; + transform.vertexId = vertexId; + transform.topRight = topRight; + transform.bottomLeft = bottomLeft; + transform.screen = screen; + + applyTransitions(); disableShadow(2200); #if defined(MC_1_21_2) diff --git a/assets/minecraft/shaders/core/render/text.vsh b/assets/minecraft/shaders/core/render/text.vsh index 906ecb897..2bb03529d 100644 --- a/assets/minecraft/shaders/core/render/text.vsh +++ b/assets/minecraft/shaders/core/render/text.vsh @@ -6,6 +6,8 @@ #moj_import #moj_import #moj_import +#moj_import +#moj_import #moj_import in vec3 Position; @@ -29,6 +31,12 @@ out vec2 texCoord0; out float depth; out float shadow; +flat out int transition; +flat out int vertexId; +out vec2 topRight; +out vec2 bottomLeft; +out vec2 screen; + vec4 fetchAtlas(ivec2 coords) { return texelFetch(Sampler0, coords, 0) * 255.0; } @@ -37,6 +45,7 @@ void main() { transform.color = Color; transform.textureColor = getVertexColor(Sampler0, gl_VertexID, UV0) * 255; transform.textureUV = UV0; + transform.texture = round(texture(Sampler0, transform.textureUV) * 255); transform.screenSize = ScreenSize; transform.position = Position; transform.screenOffset = vec4(0); @@ -44,6 +53,16 @@ void main() { transform.gameTime = GameTime; transform.textDepth = Position.z; + topRight = bottomLeft = vec2(0); + vertexId = gl_VertexID % 4; + transform.screen = corners[vertexId]; + + if(vertexId == 0) + topRight = transform.textureUV * 256; + if(vertexId == 2) + bottomLeft = transform.textureUV * 256; + transform.transition = 0; + shadow = fract(transform.position.z) < 0.01 ? 1.0 : 0.0; transform.isShadow = shadow > 0.5; @@ -61,6 +80,11 @@ void main() { screenAnchor(fetchAtlas(ivec2(6, 8)), 47, vec2(0, 0), 4); offset(3, vec2(0, 0), vec2(0, 1), true); + gl_Position = (ProjMat * ModelViewMat * vec4(transform.position, 1.0)) + transform.screenOffset; + + initTransitions(); + transition = transform.transition; + screen = transform.screen; depth = Position.z; texCoord0 = transform.textureUV; vertexDistance = fog_distance(transform.position, FogShape); @@ -77,5 +101,4 @@ void main() { vertexColor = transform.color; #endif - gl_Position = (ProjMat * ModelViewMat * vec4(transform.position, 1.0)) + transform.screenOffset; } \ No newline at end of file diff --git a/assets/minecraft/shaders/core/rendertype_entity_translucent_cull.json b/assets/minecraft/shaders/core/rendertype_entity_translucent_cull.json index 2c4a03a91..800c9cab3 100644 --- a/assets/minecraft/shaders/core/rendertype_entity_translucent_cull.json +++ b/assets/minecraft/shaders/core/rendertype_entity_translucent_cull.json @@ -1 +1 @@ -{"blend":{"func":"add","srcrgb":"srcalpha","dstrgb":"1-srcalpha"},"vertex":"render/item","fragment":"render/item","attributes":["Position","Color","UV0","UV1","UV2","Normal"],"samplers":[{"name":"Sampler0"},{"name":"Sampler2"}],"uniforms":[{"name":"ModelViewMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ProjMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ColorModulator","type":"float","count":4,"values":[1.0,1.0,1.0,1.0]},{"name":"Light0_Direction","type":"float","count":3,"values":[0.0,0.0,0.0]},{"name":"Light1_Direction","type":"float","count":3,"values":[0.0,0.0,0.0]},{"name":"FogStart","type":"float","count":1,"values":[0.0]},{"name":"FogEnd","type":"float","count":1,"values":[1.0]},{"name":"FogColor","type":"float","count":4,"values":[0.0,0.0,0.0,0.0]},{"name":"FogShape","type":"int","count":1,"values":[0]},{"name":"GameTime","type":"float","count":1,"values":[1.0]}]} \ No newline at end of file +{"blend":{"func":"add","srcrgb":"srcalpha","dstrgb":"1-srcalpha"},"vertex":"render/item","fragment":"render/item","samplers":[{"name":"Sampler0"},{"name":"Sampler2"}],"uniforms":[{"name":"ModelViewMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ProjMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ColorModulator","type":"float","count":4,"values":[1.0,1.0,1.0,1.0]},{"name":"Light0_Direction","type":"float","count":3,"values":[0.0,0.0,0.0]},{"name":"Light1_Direction","type":"float","count":3,"values":[0.0,0.0,0.0]},{"name":"FogStart","type":"float","count":1,"values":[0.0]},{"name":"FogEnd","type":"float","count":1,"values":[1.0]},{"name":"FogColor","type":"float","count":4,"values":[0.0,0.0,0.0,0.0]},{"name":"FogShape","type":"int","count":1,"values":[0]},{"name":"GameTime","type":"float","count":1,"values":[1.0]}]} \ No newline at end of file diff --git a/assets/minecraft/shaders/core/rendertype_gui.json b/assets/minecraft/shaders/core/rendertype_gui.json index 9b4da0f6f..4cb84cd39 100644 --- a/assets/minecraft/shaders/core/rendertype_gui.json +++ b/assets/minecraft/shaders/core/rendertype_gui.json @@ -1 +1 @@ -{"blend":{"func":"add","srcrgb":"srcalpha","dstrgb":"1-srcalpha"},"vertex":"render/gui","fragment":"render/gui","attributes":["Color"],"samplers":[],"uniforms":[{"name":"ModelViewMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ProjMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ColorModulator","type":"float","count":4,"values":[1.0,1.0,1.0,1.0]}]} \ No newline at end of file +{"blend":{"func":"add","srcrgb":"srcalpha","dstrgb":"1-srcalpha"},"vertex":"render/gui","fragment":"render/gui","samplers":[],"uniforms":[{"name":"ModelViewMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ProjMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ColorModulator","type":"float","count":4,"values":[1.0,1.0,1.0,1.0]}]} \ No newline at end of file diff --git a/assets/minecraft/shaders/core/rendertype_text.json b/assets/minecraft/shaders/core/rendertype_text.json index ac5a336ec..7f1922150 100644 --- a/assets/minecraft/shaders/core/rendertype_text.json +++ b/assets/minecraft/shaders/core/rendertype_text.json @@ -1 +1 @@ -{"blend":{"func":"add","srcrgb":"srcalpha","dstrgb":"1-srcalpha"},"vertex":"render/text","fragment":"render/text","attributes":["Position","Color","UV0","UV2"],"samplers":[{"name":"Sampler0"},{"name":"Sampler2"}],"uniforms":[{"name":"ModelViewMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ProjMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ColorModulator","type":"float","count":4,"values":[1.0,1.0,1.0,1.0]},{"name":"FogStart","type":"float","count":1,"values":[0.0]},{"name":"FogEnd","type":"float","count":1,"values":[1.0]},{"name":"FogColor","type":"float","count":4,"values":[0.0,0.0,0.0,0.0]},{"name":"ScreenSize","type":"float","count":2,"values":[1.0,1.0]},{"name":"GameTime","type":"float","count":1,"values":[1.0]}]} \ No newline at end of file +{"blend":{"func":"add","srcrgb":"srcalpha","dstrgb":"1-srcalpha"},"vertex":"render/text","fragment":"render/text","samplers":[{"name":"Sampler0"},{"name":"Sampler2"}],"uniforms":[{"name":"ModelViewMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ProjMat","type":"matrix4x4","count":16,"values":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]},{"name":"ColorModulator","type":"float","count":4,"values":[1.0,1.0,1.0,1.0]},{"name":"FogStart","type":"float","count":1,"values":[0.0]},{"name":"FogEnd","type":"float","count":1,"values":[1.0]},{"name":"FogColor","type":"float","count":4,"values":[0.0,0.0,0.0,0.0]},{"name":"ScreenSize","type":"float","count":2,"values":[1.0,1.0]},{"name":"GameTime","type":"float","count":1,"values":[1.0]}]} \ No newline at end of file diff --git a/assets/minecraft/shaders/include/config/effect.glsl b/assets/minecraft/shaders/include/config/effect.glsl index ef15334e8..92edd9a7f 100644 --- a/assets/minecraft/shaders/include/config/effect.glsl +++ b/assets/minecraft/shaders/include/config/effect.glsl @@ -4,4 +4,14 @@ EFFECT(0, 240, 0) { EFFECT(0, 240, 4) { effectGradient(rgb(245, 98, 23), rgb(11, 72, 107)); +} + +EFFECT(0, 240, 8) { + effectFade(1.0); + overrideColor(rgb(90, 240, 130)); +} + +EFFECT(0, 240, 12) { + effectBlink(1.0); + overrideColor(rgb(230, 50, 50)); } \ No newline at end of file diff --git a/assets/minecraft/shaders/include/effect.glsl b/assets/minecraft/shaders/include/effect.glsl index 7840a5248..fb343d453 100644 --- a/assets/minecraft/shaders/include/effect.glsl +++ b/assets/minecraft/shaders/include/effect.glsl @@ -16,7 +16,6 @@ void overrideShadow(float factor) { void overrideColor(vec3 color) { transform.color.rgb = color; overrideShadow(0.25); - //overrideColor(rgb(255, 255, 255)); } void effectRainbow() { @@ -33,10 +32,20 @@ void effectGradient(vec3 color1, vec3 color2) { } void effectPulse(vec3 color1, vec3 color2) { - transform.color.rgb = mix(color1, color2, sin(transform.gameTime * 600.0 * TAU) * 0.5 + 0.5); + transform.color.rgb = mix(color1, color2, sin(transform.gameTime * 800.0 * TAU) * 0.5 + 0.5); overrideShadow(0.25); } +void effectFade(float speed) { + transform.color.a = mix(transform.color.a, 0.0, sin(transform.gameTime * 1200 * speed * PI) * 0.5 + 0.5); +} + +void effectBlink(float speed) { + if(sin(transform.gameTime * 6400 * speed * PI) < 0.0) { + transform.color.a = 0.0; + } +} + void applyEffects() { uint vertexColorId = colorId(floor(round(transform.color.rgb * 255.0) / 4.0) / 255.0); #ifdef RENDERTYPE_TEXT diff --git a/assets/minecraft/shaders/include/gui.glsl b/assets/minecraft/shaders/include/gui.glsl index 1efa77759..6c761b9d2 100644 --- a/assets/minecraft/shaders/include/gui.glsl +++ b/assets/minecraft/shaders/include/gui.glsl @@ -5,7 +5,6 @@ struct Transform { vec4 color; - vec4 vertexColor; vec3 position; mat4 projMat; } transform; @@ -19,7 +18,7 @@ void disableBadges(float x) { case 0xE84F58: case 0xEAC864: case 0xCFCFCF: - transform.vertexColor = vec4(0); + transform.color = vec4(0); break; } } @@ -27,7 +26,7 @@ void disableBadges(float x) { void disableTooltips() { if (isTooltip(transform.projMat, transform.position) && (gl_Position.x > 1 || gl_Position.x < -0.99)) { - transform.vertexColor = vec4(0); + transform.color = vec4(0); } } #endif diff --git a/assets/minecraft/shaders/include/item.glsl b/assets/minecraft/shaders/include/item.glsl index e70fffd85..41979c7bd 100644 --- a/assets/minecraft/shaders/include/item.glsl +++ b/assets/minecraft/shaders/include/item.glsl @@ -9,8 +9,6 @@ struct Transform { float gameTime; } transform; -#moj_import - void anchorZ(float depth, float target) { if(transform.position.z != depth) { return; diff --git a/assets/minecraft/shaders/include/text.glsl b/assets/minecraft/shaders/include/text.glsl index e6ea82380..e07707dcb 100644 --- a/assets/minecraft/shaders/include/text.glsl +++ b/assets/minecraft/shaders/include/text.glsl @@ -7,17 +7,18 @@ struct Transform { vec4 color; vec4 textureColor; vec2 textureUV; + vec4 texture; vec2 screenSize; vec3 position; vec4 screenOffset; vec4 initScreen; float gameTime; float textDepth; + int transition; + vec2 screen; bool isShadow; } transform; -#moj_import - void hideScoreboardNumbers(vec3 position, vec3 numberColor, int vertex) { if(transform.position.z != position.z || gl_VertexID % vertex > 0) return; @@ -103,8 +104,19 @@ struct Transform { vec4 color; vec4 colorMod; vec4 vertexColor; + float gameTime; float textDepth; bool isShadow; + + vec2 screenSize; + vec2 centerUV; + float aspectRatio; + + int transition; + int vertexId; + vec2 topRight; + vec2 bottomLeft; + vec2 screen; } transform; void disableShadow(float depth) { diff --git a/assets/minecraft/shaders/include/transition.glsl b/assets/minecraft/shaders/include/transition.glsl new file mode 100644 index 000000000..e620cdf3b --- /dev/null +++ b/assets/minecraft/shaders/include/transition.glsl @@ -0,0 +1,207 @@ +#version 150 +#if defined(RENDERTYPE_TEXT) + +#ifdef VERTEX_SHADER + +void offsetTransition(float marker) { + if(int(transform.texture.b) == marker) { + gl_Position.z = -0.26; + } +} + +void initTransitions() { + if(transform.position.z == 2400.12 || transform.position.z == 2400.06 || transform.position.z == 1000.03) { + if(transform.texture.a == 253) { + transform.transition = int(transform.texture.b); + + if(transform.transition != 0) { + transform.textureUV = vec2(transform.textureUV - transform.screen * 56 / 256); + gl_Position.xy = vec2(transform.screen * 2 - 1) * vec2(1, -1); + gl_Position.zw = vec2(-1, 1); + + offsetTransition(7); + offsetTransition(16); + } + + if(transform.isShadow) { + transform.textureColor = vec4(0); + } + } + } +} + +#endif + +#ifdef FRAGMENT_SHADER + +#define UV (transform.centerUV / vec2(transform.aspectRatio, 1)) +#define PROGRESS (cos(transform.vertexColor.a * PI / 2)) + +vec2 screen1 = round(transform.topRight / (transform.vertexId == 0 ? 1 - transform.screen.x : 1 - transform.screen.y)); +vec2 screen2 = round(transform.bottomLeft / (transform.vertexId == 0 ? transform.screen.y : transform.screen.x)); + +ivec2 resolution = ivec2(abs(screen1 - screen2)); +ivec2 offset = ivec2(min(screen1, screen2)); + +void resetColor() { + transform.color = vec4(0); +} + +void transitionIris() { + transform.color = vec4(transform.vertexColor.rgb, (length((gl_FragCoord.xy / transform.screenSize - 0.5) / vec2(transform.screenSize.y / transform.screenSize.x, 1)) + 0.1 - PROGRESS * 1.5) * (1 - PROGRESS) * 100); +} + +void transitionBlink() { + transform.color = vec4(transform.vertexColor.rgb, clamp(length(transform.centerUV * vec2(1, 0.5 / (1 - transform.vertexColor.a))) - 1, 0, 1)); +} + +void transitionSpeed(float speed, float radius, float count, float blur) { + resetColor(); + float angle = (atan(transform.centerUV.y, transform.centerUV.x) / PI / 2 + 0.5) * count; + float time = transform.gameTime * speed + hash(int(angle)) % 100 * 64.2343; + float s = (abs(fract(angle) - 0.5) * 20 / count - 0.2) * length(transform.centerUV) + radius + (1 - transform.vertexColor.a) * 0.05 + abs(fract(time) - 0.5) * 0.25; + + if(s < 0) { + transform.color = vec4(transform.vertexColor.rgb, clamp(-s * blur, 0, 1)); + } +} + +void transitionDiamond() { + vec2 grid = (ivec2(gl_FragCoord.xy / 64) * 64); + vec2 inGrid = gl_FragCoord.xy - grid - 32; + float size = grid.y / transform.screenSize.y; + size = (size - transform.vertexColor.a * 2 + 1) * 64; + + transform.color = (abs(inGrid.x) + abs(inGrid.y) > size) ? vec4(transform.vertexColor.rgb, 1) : vec4(0); +} + +void transitionNoise() { + ivec2 grid = ivec2(gl_FragCoord.xy / 64) * 64; + + transform.color = abs(hash(grid.x ^ hash(grid.y)) % 0x100) < int(transform.vertexColor.a * (length(grid / transform.screenSize.xy - 0.5) * 2 + 1) * 0x100) ? vec4(transform.vertexColor.rgb, 1) : vec4(0); +} + +void transitionLoad(float speed) { + resetColor(); + float radius = length(UV); + + if(radius >= 0.07 && radius < 0.1 && transform.vertexColor.a >= 0.99) { + float angle = fract(-atan(UV.y, UV.x) / TAU - transform.gameTime * speed); + transform.color = vec4(transform.vertexColor.rgb, angle); + } +} + +void transitionVignette(float intensity) { + vec2 coord = UV * (resolution.x / resolution.y); + coord.x *= coord.x / 2.5; + float rf = sqrt(dot(coord, coord)) * transform.aspectRatio * intensity; + float rf2_1 = rf * rf; + float vignette = rf2_1 * rf2_1; + + transform.color = vec4(transform.vertexColor.rgb, vignette) * (1 - PROGRESS); +} + +void transitionClose(float direction) { + float s = 2 - abs(direction / (1 - PROGRESS) - 1); + + transform.color = vec4(transform.vertexColor.rgb, smoothstep(0, 0, s)); +} + +void transitionFade() { + transform.color = vec4(transform.vertexColor.rgb, mix(0, 1, (1 - PROGRESS))); +} + +void transitionLetterbox() { + resetColor(); + float top = 2 - abs((transform.centerUV.y - 0.5) / (1 - PROGRESS)); + float bottom = 2 - abs((transform.centerUV.y + 0.5) / (1 - PROGRESS)); + + if(UV.y > 1 - (1.2 * 0.5)) + transform.color = vec4(transform.vertexColor.rgb, smoothstep(0, 0, top)); + if(UV.y < (-0.8 * 0.5)) + transform.color = vec4(transform.vertexColor.rgb, smoothstep(0, 0, bottom)); +} + +void transitionWheel() { + float circPos = atan(UV.y, UV.x) + PROGRESS * 2; + float signed = sign(PROGRESS - mod(circPos, 3.14 / 4)); + + transform.color = vec4(transform.vertexColor.rgb, step(signed, 0.5)); +} + +void transitionAngular(float startingAngle) { + float os = startingAngle * PI / 180.0; + float angle = atan(UV.y, UV.x) + os; + float normal = (angle + PI) / (2.0 * PI); + normal = normal - floor(normal); + + transform.color = vec4(transform.vertexColor.rgb, step(normal, (1 - PROGRESS))); +} + +void transitionStatic() { + float time = transform.gameTime * 2000; + float t1 = time * 0.654321; + float t2 = time * (t1 * 0.123456); + + vec3 st = vec3(noise(UV, t1, t2)); + + transform.color = vec4(transform.vertexColor.rgb, st * (1 - PROGRESS)); +} + +void applyTransitions() { + if(transform.transition != 0) { + switch(transform.transition) { + case 1: + transitionIris(); + break; + case 2: + transitionBlink(); + break; + case 3: + transitionSpeed(2000, 0.07, 30, 200); + break; + case 4: + transitionDiamond(); + break; + case 5: + transitionNoise(); + break; + case 6: + transitionLoad(1000); + break; + case 7: + transitionVignette(3); + break; + case 8: + transitionClose(transform.centerUV.y - 0.5); + break; + case 9: + transitionClose(transform.centerUV.y + 0.5); + break; + case 10: + transitionClose(transform.centerUV.x - 0.5); + break; + case 11: + transitionClose(transform.centerUV.x + 0.5); + break; + case 12: + transitionFade(); + break; + case 13: + transitionLetterbox(); + break; + case 14: + transitionWheel(); + break; + case 15: + transitionAngular(90); + break; + case 16: + transitionStatic(); + break; + } + } +} + +#endif +#endif \ No newline at end of file diff --git a/assets/minecraft/shaders/include/util.glsl b/assets/minecraft/shaders/include/util.glsl index 5b47153b4..2503386b9 100644 --- a/assets/minecraft/shaders/include/util.glsl +++ b/assets/minecraft/shaders/include/util.glsl @@ -1,5 +1,5 @@ #define PI 3.14159265359 -#define TAU 6.28318530718 +#define TAU (PI * 2) const vec2[] corners = vec2[4](vec2(0, 0), vec2(0, 1), vec2(1, 1), vec2(1, 0)); @@ -69,4 +69,17 @@ vec3 hsvToRgb(vec3 c) { vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +int hash(int x) { + x += (x << 10); + x ^= (x >> 6); + x += (x << 3); + x ^= (x >> 11); + x += (x << 15); + return x; +} + +float noise(vec2 uv, float t1, float t2) { + return fract(sin(uv.x * t1 + uv.y * t2) * 56789); } \ No newline at end of file diff --git a/assets/minecraft/sounds/instrument/bass.ogg b/assets/minecraft/sounds/instrument/bass.ogg index 80ecc6320a71d5922476c796826acdd97d388d7d..a7648ae9aaf59b70d67475358bfe10883ffbdb92 100644 GIT binary patch delta 69 zcmca)d&ySHKRrE|fr$YMOr#!N1TjrY+~Oxn>G6R0j6nVlk^Md!L)LPF1wg7FFz!p- J%*%CD1ORKM6C?lt delta 69 zcmca)d&ySHKRrE|fr$YMoULCS2QlAkdPGi?(&GW~8G-yA-Mm~IL)LPF1wg91+1t)< J=H)sn0sw;K6NCT& diff --git a/assets/minecraft/sounds/instrument/bell.ogg b/assets/minecraft/sounds/instrument/bell.ogg index 8dae41ede7a9e2943f5274e17b6c750126a4d838..9f079203af8e6cc28ad9d751b7d95fdcc95869f5 100644 GIT binary patch delta 69 zcmZn&ZU~n0PfrhKU}AuRQzfepftcG5FPkw@N{vdB7I**v delta 69 zcmZn&ZU~n0PfrhKU}As*p*JeeKup8n*m)DB^mssgMj*eMH|PDv5J@hu07$isuhyo` Im0axd07g6!iU0rr diff --git a/assets/minecraft/sounds/instrument/brass.ogg b/assets/minecraft/sounds/instrument/brass.ogg index b544b822aa8b8fb9743321e68e7a46f91f863724..9920e94acd03ef3ed4188f45bca6a32422bcf47e 100644 GIT binary patch delta 69 zcmX>fa6UlFKRrE|fr$YMyif0a31Uuq;BbDTlpYU=&j{ozFwFb5F+`sWEC5pd(@6c^ J=6fa6UlFKRrE|fr$YM+WMXALCg~hmbDY5^mssgMj+qj+Od+2A^Kck0g!4*gN-?x J`?(It0swPG68iuE diff --git a/assets/minecraft/sounds/instrument/drum.ogg b/assets/minecraft/sounds/instrument/drum.ogg index 209285011bbdb274159342ae4f7bb811902699a2..d976ebc7e27e7169be9019b1e4ffdbf5c511409b 100644 GIT binary patch delta 69 zcmX>Qa3Da+KRrE|fr$YM9xzYk1ui;EH3 JEYGDV2LNH!5efhR delta 69 zcmX>Qa3Da+KRrE|fr$YM;`V*(1TiPG*jr7M(&GW~8G-!De1pJ^A^SPO0wC2d^%cHs JmgiEG0|1t^6aN4J diff --git a/assets/minecraft/sounds/instrument/flute.ogg b/assets/minecraft/sounds/instrument/flute.ogg index 5c3c95805dee7b61d2f19b79fd79b33233650ba4..073449c234ede4af9d04439e7c4c447fdf9abfa5 100644 GIT binary patch delta 69 zcmeAV?GKgmPfrhKU}AuR?39?_Af`g#;SUp~^mssgMj$`!T6@pN5FReD07!Mi=ADZ+ J=Wr=2004(G6hi<2 delta 69 zcmeAV?GKgmPfrhKU}AuRbxTUyK+GEDyK^Q=>G6R0j6nXow+AP04B_Dd3xHG~cyayE J<{U0%1pu@47C!(0 diff --git a/assets/minecraft/sounds/instrument/guitar.ogg b/assets/minecraft/sounds/instrument/guitar.ogg index 08481a7f1425e35dbd8d1ef09f38dc4801281703..021fb76c002b117fed891842a7a51243d5758844 100644 GIT binary patch delta 69 zcmZ1!u_!{yKRrE|fr$YM>aKP3fS9~tUu7ps>G6R0j6lBIn%B`ALzuY00wC3KEHf%M JCvhE61OQx05@!Ga delta 69 zcmZ1!u_!{yKRrE|fr$YMb_z)wftZWbB6%lD>G6R0j6nXi<@G-{hA?q~1wg7F9&sz& JoWylN5da+C5ljF8 diff --git a/assets/minecraft/sounds/instrument/harp.ogg b/assets/minecraft/sounds/instrument/harp.ogg index 546c9e87a0d2303b305818900dde5c0cbd3ea1c3..a6ad9b05ed611ca15be2c4f967665d8527973c2c 100644 GIT binary patch delta 69 zcmdlMvMof)KRrE|fr$YMOg>KX0WtM=d%d10rN;x}GXnXq+*hpJ7^2Dr767R>jg@?} Jxs_|9JOGh56dV8m delta 69 zcmdlMvMof)KRrE|fr$YML=B&<1u-wZII(1+lpYU=&j{qVZS&oXhsjf|xxEgG?q$>G6R0j6i$v`?0|2Gu6HfpD delta 69 zcmeyB@+(EkKRrE|fr$YMz8!iV0%GPqk29JmrN;x}GXnY7*PmwC7$V07767U4Xqex* JxsL0PIsg=k7zO|U diff --git a/assets/minecraft/sounds/instrument/marimba.ogg b/assets/minecraft/sounds/instrument/marimba.ogg index d3b28d7b8246d61e54d8bb5247d6d5b0e99c90a5..118ca21b37eabf6256be32ebdb146d400695fac7 100644 GIT binary patch delta 69 zcmewo^(9KmKRrE|fr$YM`V4jFftX(%U*DQ2rN;x}GXnW%X9P{y7-G)_767Rh&nzg~ JJfG{T5&)+M6aWAK delta 69 zcmewo^(9KmKRrE|fr$YM1m(-?LCiF!jZ-H|>G6R0j6nX8Of#j8A@*Eg0g!6epO?36 Jp3ikv2>?JK5$FH_ diff --git a/assets/minecraft/sounds/instrument/piano.ogg b/assets/minecraft/sounds/instrument/piano.ogg index fb6e210409a37f2cc60080c04d9f1c4cd89b2fc1..502c83873169fe78b3c45831502a6d56b5921f4e 100644 GIT binary patch delta 69 zcmewu|1n<5KRrE|fr$YM*1Ntd1~FfVe|bGoN{G6R0j6iG6R0j6lA!lfUZ55OyxG07!L+@~@=L I>0Dfz0D7kp!~g&Q diff --git a/assets/minecraft/sounds/instrument/snare.ogg b/assets/minecraft/sounds/instrument/snare.ogg index f9a6bc6541db805677af782ab8d14d1185b89b3d..d9821bb83860f60353e02117b6ec73b42de6f4df 100644 GIT binary patch delta 69 zcmeB5?MjvMPfrhKU}As*?X!KqLCjYdVpu0i>G6R0j6nV=u3CG6R0j6i-|Sw{875K%6$07!K(=jJ7w IOSwcf0A>CXYXATM diff --git a/assets/minecraft/sounds/instrument/tamborine.ogg b/assets/minecraft/sounds/instrument/tamborine.ogg index 0ed071172081d7559288148d88f99832625b7afe..dd465bd67aa1ad8bb5a1f1c10c82daaf74b109cf 100644 GIT binary patch delta 69 zcmbQ`GRsBEKRrE|fr$YMl!X?7S?u4h&6_Bt#{=Rs0!3ao{kgO;WECe^0HpdjYi7)5 IE-nEH055M4rvLx| delta 69 zcmbQ`GRsBEKRrE|fr$YMf&))&2QeM@p8PyfN{wKRrE|fr$YMV)Daxf|$#G9JQV(rN;x}GXnV<&O*00h8*Dp3xHHl*`f4i JvkF(fH~?+L6Gs35 delta 69 zcmbR2JlR>wKRrE|fr$YM4ld0<4Pt6Vwb@OS(&GW~8G-yC6TH@K3^~FH767S!D}Ud7 JvkF(fH~^o(6)*q* diff --git a/assets/minecraft/sounds/other/blank.ogg b/assets/minecraft/sounds/other/blank.ogg index 68ab369a8ce842681bd67cf04fda69a4c60b811e..697a20e2d17f7ae69505fb51216d146d3718dd45 100644 GIT binary patch delta 50 ucmbQqIFnJzKRrE|fr$YMWZxw^ftajC3NaI<^mssgMj-!$_l8pwLtFv->kF*_ delta 50 ucmbQqIFnJzKRrE|fr$YM)EO&^LCkxa=jTn7(&GW~8G-x&IX>};A+7-S*$Mst diff --git a/assets/minecraft/sounds/ui/click.ogg b/assets/minecraft/sounds/ui/click.ogg index a0f0c68d2555d9ce18e43be35d61fdab4801b2ae..961ec3ef63f190add4526a8b7f7bd473e35b6d54 100644 GIT binary patch delta 69 zcmZn>ZxNUBPfrhKU}AuR(w$njKuqadFY6{s>G6R0j6l9%`l9-cAu~9@0wC4C%i1?? J{=w111ORCN6jJ~I delta 69 zcmZn>ZxNUBPfrhKU}AuR(*ma=LCl%EBF{{e(&GW~8G(GgIS-y~44J_J767S!E8cx! J^AC<5CIEF?6#f7J diff --git a/assets/minecraft/textures/entity/iron_golem.png b/assets/minecraft/textures/entity/iron_golem.png deleted file mode 100644 index 7e58019080c23da34c1bf88d52043390fd95c38e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1904 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 delta 1412 zcmV-~1$+9849N?SR)1beL_t(|+U;1!vYs~x#bk!HAAw=PHpS)cQ}-@=MhhMw<^3~) zqapu|d-<;$DMvye9r(BxZ2FwUU!*h(tVHSEB#7?a$D(A>y~0};vTcPJaWgTZ`$W26 zCZNJf)&P;xn^~S)weKfB05srn)w#I0zS)`Dxv{jMBSuFrrhm1EEZY{A>3D_DktqT` zhSBI??oeAVRI~1P+m75oN_K83Lw43>?YDu$ikKk72%x!mY4q?}3I{0_I}#{OF;3u3 zAXX6wT2bD}i3LTaz^$sne3@?x6=VtlDKaL8kj1#r%~tO{K_g2qNJvLy-Vq8unblEY zC6Qz4cC?ht*nhf2qWfJoB!HDWm+Vr`hSY8JI+r4X)CsC-ok&6o7C!dcHmPJJizJ9W zs0eVJQZw*C(FRjic_$tUvEG{(K~yoR6PIUp<~p+^?7SY?iR?{NgczQ5}W1ZwyXL2%5RIB{#xH~A)?mT*J&j2B3J$aej~RS= zb=mi)2@Qc65I8+`Be}{(Q6_Fe{hoUafo^I}WF^xTNsUj6SJ_8}u#8CSoEup|MA6?@ zhbW|_@og#7w+{h})r6d?#p*J129bR)lPV&V@_(b%quH4exo}3Zl?^9?rTt)04fM;& zxQlfLRu_w`KCt?y5{ndB_Pu-}Fw^r%y3=A1KMdV=BFeqH)c>_NZ~XiZ(vJPltwY75Q=Vpi5}DhGEqF-i{39vs!!NnlsKj38L-+| z*MFjWUerK(u0%hNK9`871n41f*(9YG4U*Ick7RzZOpO>+l#q0+W=q10&0r0va`0oznoA9fT zjowZa|GguDX|F&v*04$!+kIm!i{9I^ ztCYZlBA^-F?`cLbw`+WXUmjEuM26Y?1wQ2_kk=sa;6W8Z5KD5;UO9dG3MKI1K^Fmu zq+Im##*aV{Pz5hAMW%w@!t>sqC1tFyGsC4@Yg5Nj{gOlVt#`- S4x3#70000