From 2552cfb76698acf37dd528ee6d21ecc3a2f41c12 Mon Sep 17 00:00:00 2001 From: XiaoMoMi <972454774@qq.com> Date: Wed, 29 Oct 2025 03:42:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=BB=98=E8=AE=A4=E8=B5=84?= =?UTF-8?q?=E4=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common-files/src/main/resources/config.yml | 71 ++++++---- .../textures/block/custom/amethyst_torch.png | Bin 152 -> 140 bytes .../block/custom/chessboard_block.png | Bin 269 -> 256 bytes .../textures/block/custom/chinese_lantern.png | Bin 450 -> 443 bytes .../block/custom/chinese_lantern_top.png | Bin 505 -> 492 bytes .../textures/block/custom/copper_coil.png | Bin 169 -> 157 bytes .../textures/block/custom/copper_coil_on.png | Bin 180 -> 168 bytes .../block/custom/copper_coil_on_side.png | Bin 160 -> 148 bytes .../block/custom/copper_coil_side.png | Bin 149 -> 137 bytes .../block/custom/deepslate_topaz_ore.png | Bin 347 -> 346 bytes .../custom/ender_pearl_flower_stage_0.png | Bin 130 -> 118 bytes .../custom/ender_pearl_flower_stage_1.png | Bin 203 -> 182 bytes .../custom/ender_pearl_flower_stage_2.png | Bin 252 -> 224 bytes .../textures/block/custom/fairy_flower_1.png | Bin 279 -> 262 bytes .../textures/block/custom/fairy_flower_2.png | Bin 323 -> 300 bytes .../textures/block/custom/fairy_flower_3.png | Bin 320 -> 295 bytes .../textures/block/custom/fairy_flower_4.png | Bin 332 -> 305 bytes .../textures/block/custom/flame_cane_1.png | Bin 194 -> 182 bytes .../textures/block/custom/flame_cane_2.png | Bin 196 -> 184 bytes .../textures/block/custom/gunpowder_block.png | Bin 223 -> 202 bytes .../textures/block/custom/hami_melon.png | Bin 211 -> 204 bytes .../block/custom/hami_melon_bottom.png | Bin 188 -> 172 bytes .../textures/block/custom/hami_melon_top.png | Bin 202 -> 195 bytes .../textures/block/custom/magma_plant.png | Bin 419 -> 377 bytes .../textures/block/custom/netherite_anvil.png | Bin 206 -> 202 bytes .../block/custom/netherite_anvil_top.png | Bin 230 -> 214 bytes .../block/custom/palm_door_bottom.png | Bin 200 -> 195 bytes .../textures/block/custom/palm_door_top.png | Bin 228 -> 209 bytes .../textures/block/custom/palm_leaves.png | Bin 215 -> 207 bytes .../textures/block/custom/palm_log.png | Bin 179 -> 163 bytes .../textures/block/custom/palm_log_top.png | Bin 207 -> 203 bytes .../textures/block/custom/palm_planks.png | Bin 189 -> 174 bytes .../textures/block/custom/palm_sapling.png | Bin 203 -> 190 bytes .../textures/block/custom/palm_trapdoor.png | Bin 219 -> 209 bytes .../textures/block/custom/pebble.png | Bin 460 -> 434 bytes .../minecraft/textures/block/custom/reed.png | Bin 364 -> 360 bytes .../block/custom/safe_block_bottom.png | Bin 158 -> 143 bytes .../block/custom/safe_block_front.png | Bin 234 -> 231 bytes .../block/custom/safe_block_front_open.png | Bin 227 -> 221 bytes .../textures/block/custom/safe_block_top.png | Bin 174 -> 168 bytes .../block/custom/solid_gunpowder_block.png | Bin 97 -> 72 bytes .../block/custom/stripped_palm_log.png | Bin 189 -> 184 bytes .../block/custom/stripped_palm_log_top.png | Bin 207 -> 203 bytes .../textures/block/custom/topaz_ore.png | Bin 334 -> 333 bytes .../entity/equipment/humanoid/topaz.png | Bin 453 -> 424 bytes .../equipment/humanoid_leggings/topaz.png | Bin 281 -> 259 bytes .../entity/equipment/wings/flame_elytra.png | Bin 301 -> 280 bytes .../minecraft/textures/font/image/emojis.png | Bin 656 -> 626 bytes .../gui/sprites/tooltip/topaz_background.png | Bin 163 -> 116 bytes .../gui/sprites/tooltip/topaz_frame.png | Bin 362 -> 338 bytes .../minecraft/textures/item/custom/bench.png | Bin 585 -> 582 bytes .../item/custom/broken_flame_elytra.png | Bin 210 -> 198 bytes .../item/custom/ender_pearl_flower_seeds.png | Bin 176 -> 164 bytes .../textures/item/custom/fairy_flower.png | Bin 216 -> 201 bytes .../textures/item/custom/flame_cane.png | Bin 204 -> 185 bytes .../textures/item/custom/flame_elytra.png | Bin 223 -> 208 bytes .../textures/item/custom/flower_basket.png | Bin 1082 -> 1038 bytes .../textures/item/custom/flower_basket_2d.png | Bin 311 -> 275 bytes .../textures/item/custom/hami_melon_seeds.png | Bin 219 -> 207 bytes .../textures/item/custom/hami_melon_slice.png | Bin 225 -> 203 bytes .../textures/item/custom/magma_fruit.png | Bin 249 -> 227 bytes .../textures/item/custom/palm_door.png | Bin 151 -> 139 bytes .../minecraft/textures/item/custom/pebble.png | Bin 184 -> 173 bytes .../minecraft/textures/item/custom/reed.png | Bin 198 -> 186 bytes .../minecraft/textures/item/custom/sofa.png | Bin 702 -> 669 bytes .../textures/item/custom/table_lamp.png | Bin 299 -> 279 bytes .../textures/item/custom/table_lamp_on.png | Bin 299 -> 275 bytes .../minecraft/textures/item/custom/topaz.png | Bin 298 -> 289 bytes .../textures/item/custom/topaz_axe.png | Bin 267 -> 240 bytes .../textures/item/custom/topaz_boots.png | Bin 271 -> 252 bytes .../textures/item/custom/topaz_bow.png | Bin 196 -> 184 bytes .../item/custom/topaz_bow_pulling_0.png | Bin 249 -> 231 bytes .../item/custom/topaz_bow_pulling_1.png | Bin 250 -> 231 bytes .../item/custom/topaz_bow_pulling_2.png | Bin 241 -> 223 bytes .../textures/item/custom/topaz_crossbow.png | Bin 332 -> 304 bytes .../item/custom/topaz_crossbow_arrow.png | Bin 376 -> 341 bytes .../item/custom/topaz_crossbow_firework.png | Bin 390 -> 351 bytes .../item/custom/topaz_crossbow_pulling_0.png | Bin 335 -> 308 bytes .../item/custom/topaz_crossbow_pulling_1.png | Bin 343 -> 315 bytes .../item/custom/topaz_crossbow_pulling_2.png | Bin 337 -> 308 bytes .../textures/item/custom/topaz_helmet.png | Bin 257 -> 234 bytes .../textures/item/custom/topaz_hoe.png | Bin 247 -> 216 bytes .../textures/item/custom/topaz_leggings.png | Bin 276 -> 258 bytes .../textures/item/custom/topaz_pickaxe.png | Bin 280 -> 251 bytes .../textures/item/custom/topaz_rod.png | Bin 211 -> 199 bytes .../textures/item/custom/topaz_rod_cast.png | Bin 173 -> 161 bytes .../textures/item/custom/topaz_shovel.png | Bin 247 -> 220 bytes .../textures/item/custom/topaz_sword.png | Bin 317 -> 291 bytes .../textures/item/custom/topaz_trident.png | Bin 178 -> 166 bytes .../textures/item/custom/topaz_trident_3d.png | Bin 298 -> 266 bytes .../textures/item/custom/wooden_chair.png | Bin 306 -> 284 bytes .../textures/font/gui/custom/blasting.png | Bin 354 -> 340 bytes .../font/gui/custom/brewing_recipe.png | Bin 1532 -> 1515 bytes .../textures/font/gui/custom/campfire.png | Bin 360 -> 352 bytes .../textures/font/gui/custom/category.png | Bin 1031 -> 996 bytes .../font/gui/custom/cooking_recipe.png | Bin 1308 -> 1274 bytes .../font/gui/custom/crafting_recipe.png | Bin 1772 -> 1747 bytes .../textures/font/gui/custom/item_browser.png | Bin 1034 -> 1000 bytes .../textures/font/gui/custom/no_recipe.png | Bin 1017 -> 994 bytes .../textures/font/gui/custom/smelting.png | Bin 354 -> 349 bytes .../gui/custom/smithing_transform_recipe.png | Bin 1294 -> 1283 bytes .../textures/font/gui/custom/smoking.png | Bin 351 -> 348 bytes .../textures/font/offset/space_split.png | Bin 124 -> 67 bytes .../textures/item/custom/gui/cooking_info.png | Bin 354 -> 334 bytes .../textures/item/custom/gui/exit.png | Bin 170 -> 165 bytes .../textures/item/custom/gui/get_item.png | Bin 146 -> 134 bytes .../textures/item/custom/gui/next_page_0.png | Bin 161 -> 158 bytes .../textures/item/custom/gui/next_page_1.png | Bin 156 -> 154 bytes .../item/custom/gui/previous_page_0.png | Bin 160 -> 158 bytes .../item/custom/gui/previous_page_1.png | Bin 158 -> 155 bytes .../textures/item/custom/gui/return.png | Bin 163 -> 162 bytes .../core/pack/AbstractPackManager.java | 65 +++++---- .../core/plugin/config/Config.java | 132 ++++++++++-------- .../momirealms/craftengine/core/util/CRC.java | 43 ++++++ .../craftengine/core/util/CharacterUtils.java | 4 + .../craftengine/core/util/FileUtils.java | 67 ++++----- .../craftengine/core/util/PngOptimizer.java | 11 +- gradle.properties | 6 +- 118 files changed, 250 insertions(+), 149 deletions(-) create mode 100644 core/src/main/java/net/momirealms/craftengine/core/util/CRC.java diff --git a/common-files/src/main/resources/config.yml b/common-files/src/main/resources/config.yml index a3e6d2400..e2e3d2e7b 100644 --- a/common-files/src/main/resources/config.yml +++ b/common-files/src/main/resources/config.yml @@ -85,13 +85,12 @@ resource-pack: # If your resource pack is compliant with the standard, you can disable validation to improve the resource pack generation speed. validation: enable: true - # [Premium Exclusive] # Fix images that are not within the texture atlas. It is unreasonable to always rely on plugins to fix your mistakes. # You should strive to make your resource pack more standardized after gaining some experience with resource packs. fix-atlas: true # Optimize your resource pack by reducing its size without any quality loss. optimization: - enable: false + enable: true # .png texture: enable: true @@ -105,41 +104,57 @@ resource-pack: json: enable: true exclude: [] + # [Premium Exclusive] # Protect your resource pack from being cracked by others protection: # Prevent thieves from extracting your resource pack. These options will crash their software. + # Some of these options may impact your resource pack size. crash-tools: method-1: false - method-2: false - method-3: false # Enable this would increase the resource pack size by 0.67MB - # [Premium Exclusive] + method-2: false # This would increase the resource pack size by 64KB + method-3: false # This would increase the resource pack size by 0.67MB + method-4: false + method-5: true # This can reduce the resource pack size, also it prevents some software from extracting it + # Create incorrect crc data + incorrect-crc: false + # Spoof huge files + fake-file-size: false + # Escape the JSON to make it human-unreadable + escape-json: false + # Create fake folders to hide original files + fake-directory: false + # Corrupt the texture file to prevent thieves from opening it + break-texture: false # Obfuscate your resource pack to prevent thieves from restoring its original structure obfuscation: enable: false seed: 0 # 0 = random seed - fake-directory: false # Create fake folders to deceive thieves - escape-unicode: false # Escape the JSON to make it human-unreadable - resource-location: - enable: true - random-namespace: - amount: 8 # 0 = disable - length: 9 - random-path: - source: obf - depth: 8 - anti-unzip: false - random-atlas: - images-per-canvas: 256 # 0 = disable - # Sometimes, some vanilla files that have been overwritten might be mistakenly obfuscated - # Please add the ignored textures/models/sounds here if that happens - bypass-textures: - # - minecraft:block/farmland - - "@legacy_unicode" - - "@vanilla_textures" - bypass-models: - - "@vanilla_models" - bypass-sounds: [] - bypass-equipments: [] + # Determines the number and length of obfuscated namespaces. + namespace: + amount: 32 # 0 = disable + length: 2 + # Determines the depth of the obfuscated path. + path: + source: obf + depth: 4 + length: 2 + # Prevent straightforward unzip + anti-unzip: false + # A larger atlas will result in slower generation speed, but it will also lead to a smaller resource pack size. + atlas: + prefix: atlas # The prefix of the folder where the generated atlas will be located + images-per-canvas: 256 + # Sometimes, some vanilla files that have been overwritten might be mistakenly obfuscated + # Please add the ignored textures/models/sounds here if that happens + bypass-textures: + - minecraft:block/farmland # bypass a specified resource location + - "@vanilla_textures" # bypass vanilla textures + bypass-models: + - custom:item/do_not_obfuscate + - "@vanilla_models" # bypass vanilla models + bypass-sounds: + - "@vanilla_sounds" # bypass vanilla sounds + bypass-equipments: [] # This section controls how to send the resource pack to players delivery: # Send the resource pack on joining the server diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/amethyst_torch.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/amethyst_torch.png index e05d6ff443c5a53421154ecdd2042dd9dbc2c656..4e903b534d76a000a0e1264725cb81c92691161b 100644 GIT binary patch delta 41 wcmbQi*uywMmQVik|3n4`hG0(@$B>F!6U_q!&Wp-r14S4-UHx3vIVCg!01z<@qW}N^ delta 53 pcmeBSoWVFjR*C@vm^@t^Ln>}Td4V9_MD0KUD4)U8)z1aQ1_1Rq2owMS diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chessboard_block.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chessboard_block.png index a9b102833c73d1e712c39ae6a6e361e3bac3561d..9ae83007f862f4158ad2320d5fc4ef71f273ef60 100644 GIT binary patch delta 235 zcmVRjTteniaupkr+(5#@;w4l(eoFEhs(6pqwuLsQl004qXL_t(|+C`7s7Q`S3 z0|QdQ+S~5`f9yu7XY=MbLPX6RC9|W7K3y&=hybt=FkdA&d1UqpRIg@~k%p=?9fn7^ zPtco)m4Ls7bP^hz-~@+d_AP_8fAvA}oL-x#++rwm76G>r5x9Gt)8JX{|6~-@0X{F_ lbsC((Z_&7CW32tF&ksgB1RYue_C^2z002ovPDHLkV1gy3WcdI9 delta 248 zcmZo*>SdZBTh9OimH|E?t}+5V3L-!xpd!Mf0wg5_G$aIURAi2 zdSUaP!cN6Y9e5 z(+_!B_*6I!ga)hYzWu$Me`U(A7kU4xRC{&$vK<(dg8B*)w*9I%;=aW)pLK&DyU_<- bi+dS9zyH1a%)B*~qY~;G22WQ%7Z4i&ADMw1iZ+gjD?e_^^0H_~^8ZTrm9f*uaozm}E3$NyYyF00BKoL_t(|+U=AJu7n^A zMXw(aPyyZlV&7>ElRPs^n5%)?)1qx+)bf&+5JC$s+ZGi>B7Y?o^MaO;45Y0PsF6sM zD^c21EH`avvbrKqZ!Rx#ux*2U1OC9zktsc38ZjUY^2CA05-&@391{%C-x3yXw<@fq z5iHHE=$33~jOteFOIl-$ExK%5wIdQavzQljkJ&)hPM}62&#p{q({8z0Xtugto|emt z97uzF1OC9zk$*WqU>-3b4)Vm2#xgIT^E6F68&&>N^f13JFNA?>MnWu8P1CwjPbt%f8giH(I0S( z7*Gd!;!0zkmvuXisRroptS7fy+U2?l&f6{H(>#+hsv+Co_wo8Ze*ceu|BpWge<72F Sq)5vE0000(ikC delta 431 zcmdnZe2961Y&`=6SO)lnxc0;t%t$erlVh_W$7Vx?%a)dq9W5aTCS-iMGvUXR6+d2V z`SE7MpD!o=e7W)G$C*EWp8Waq=FguWfByV|8p7o1;uunK3&LYG1M%KY;qE)4z~daO zQUBuozxLSM9TT_BQtkbon;=p zOVb*6K5pW>#v1%I&wC;Wx@+tZre_j%d9w#O%}M(c4WuW#!F{~ip`_-o^Mz$#`8x&V$tESw{QT^+gjBqY zT=?v;{Pf89)TCJ4z5$PbFOuAB_kX`*z>V(Te=VY#&U1rL(D zE;p=y8G>$WoPXEAA#x0JTpu8u7TlpA*64^Y%z-a~9j{7sgCV3uWa!L9JZmkIa*Q(^ zW=8=(cbwJf#L3|C6?8dY8hTqMZ5uAceX!s#6XpsK7jGbd&JHp6lpa_vu3^Q46`nRd+RZtyNO)H!_ZcQU5jC zaB2C|w*0hhC1WPN9g^z{1kgPr_MXxc%hgsI9we{l`}&{%$9etF_u~}b{A1Q{Pf8D_{{wL5sWUQS*c!Ukpf9%ybHK_tE%FIa16f`m32Hs|C9&2p{c66H%rqlO?Z2HwdyR z5lNM{je0E_cxmo!Y16iO+Ir1riM#@Lst}hRAb<`IG4#~j zuv}W}iU-N#_PPG$6y_Dm7@D*qrHv&#K`dHWb_Eg2B42V5X>w_@NKm31U6d%QqZ*^u zic#)27HMar{A+~MrR`7K_HG;6f|)QEjJA{)2%zJF7<+1-SgwQ?@F00TKiB{MKaT5v czaNMA0bMUg8vpF!6V3euKE7JG4k*Il>FVdQ&MBb@04L@SQ~&?~ delta 53 pcmeBVoXR*sR*C@vm^@t^Ln>}Td43??L~TC-D4)U8)z1aQ1_1Ma2nYZG diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/deepslate_topaz_ore.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/deepslate_topaz_ore.png index 1f6bb03a18966755f727d8fa5e2265ccd6972275..c054d4288daa47b1c3f944cb8816a011792ad9a0 100644 GIT binary patch delta 326 zcmV-M0lEI$0@?zQ9e*cv1wQ})05ecbR7FrwP&_<9WMpJ`cz7%k7RCwCml1XyKAP_@)0vj{f z_djhU_`i~Pm8v8gvjWky)UOaX!BREDM&~|4v4m%ZWagH$1bD*g(JP{Qybh2g^lfgejm{F!P~KG#@9rhXzRL_EE(hz@?|*xw^X;Ag zTXbd!YG|t@OxB*F6&#weIzxqVLp|4|vRyiAC%qJIJl@qfH#^g}!1lnl%U)@3&fd5c zIy=*JL4oWHt_wTY7wykFWv-0e1s%< Pw;t+622WQ%7Z4i&5Coem diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_0.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_0.png index 34cc1a98c8ca06c372d1b6f97438c28bd7957f50..dc94c4c8326dde919953a70edf56d25316d67443 100644 GIT binary patch delta 40 vcmZo-ESn(9C;$0>A_D`1t*47)NX4y*=GFo~UK>XPMHoC?{an^LB{Ts56T=No delta 52 ocmXSGVw@l=#Q*_Jo-U3d6}O-~YY=auwzUA1&*16m=K^8_0O#umy8r+H diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_1.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_1.png index 84a0836e0450ddc995a645b986b02521ad7e8deb..73695f379b2a70871f959b644f32a4be0471b813 100644 GIT binary patch delta 166 zcmX@jxQ%gwL_G^L0|Ud`yN`l^lw5#Mh%1neHi>qSa;S-}$@9zUFYGs&*|E5*ULY=z z$K1d~S-u;ng0UpXFPOpM*^M+H$Ia8lF{I*Fa)N@iibLi$9yW0{HZgXwKA&d-3d&a; zYBp_P2ynU>u_J^>GBIQ>WsgveVW8bg=d#Wzp$PyU`!JXQ delta 187 zcmdnSc$#s7L_G%^0~|1Ux;TbZ+=B93K)mDx307x@8E4-7@Sm6_AlAX%B0cH(^w07w zfg+2z58Y7cRbZ|-!+YS*tQWKX|84zygO|ax!N5b%L+6&tum6wMRc%O{Ako3Uc%#*I z$5V{!I3k%(2uR2;Xv7Lj*wU&?X*ceA!kOnhZnQK W*_IqOhSRSmyns2-)78%f#0CHkw?mHr diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_2.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_2.png index 4342fd0aae7a551a8c912e7bc10df7f3f7d6bf08..dba763520584b2ce672118ba78ec0dbce72cc14e 100644 GIT binary patch delta 208 zcmeyv_<(VOL_G^L0|Ud`yN`l^lvaRGh%1nu*%u#e673-6P!nCVWNsa^ngX}46Pu-> z$;=L&vl|z8)%SdPq}o!lV_|tIP&H#okY6x^!?PP{Ku(IMi(^Q|t>gp;ra8h3dV;qG zG^R?j3b;v6IT&_vDnlB_lIey9Tnv(nayWSwGAWdKIxuuAGczwvXgI|-onb-`_hm8l z2~ujR&jnb+fV8OcVuuB@4lpREr*5!3cIp%xPk`7228OAR1biYpiX?y*GI+ZBxvX5rQwpfbtW@A7I)R_oZSf3#a9yK7tHV<89-&2JY5_^DsDk}sUTiye>7i% z0uRe?7tMnIuWv0;Q5qIpD$k8`P5fsdFYe=2~&zEPrvHR6;|8Q$TIuo zhG*gezZ+KZ3xuUh^9wX;DfRLxIhm!;kWK73`Ht^1-@CMT2L+AS&wn^GUgbKIA=E+! KPgg$|5E}p{qE(mx diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_1.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_1.png index 1956ad357d39032a48430d61db4693c337f8038e..74b311a1323a6506d93dcda3d6c4e2ce07d17f73 100644 GIT binary patch delta 246 zcmV0)_&R7=Hu<0001iRALSK(1IBO^(olS?OB`LdI zBu^*P%Pj8W9N^eRo(w^?00001bW%=J06^y0W&i*HlSxEDRCwB@&oK_dFboCIZzqK{ zm2!ZnC&q+;^_2qw&&Q(rkF!@SOxZa we$0A>%7kmeQY#v)H+AiDI@)mjfgASa4d5~lc$Ok$0RR9107*qoM6N<$g7YC{3jhEB literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?!jIF~BFp_5c6>7TFpK4NmVK%d{_5Rq3$_V5N)yx_6tph9nH8ZvL0mrYb#!h+bz1h! s+OUP$P4Ack8R(5x&bq>JI8Dn4xTd z73#I9pkSXnn^2w&%&db!(D+|nfS5&663Nj6TZQa^yn)57u-GZ0TOr15gIe4@?4!N| e(j`dvV_sa<0uh=%Dp5oL0000I*n`Fm#Ug{Z&&eGe{jP! zW7=AaYz>16hu%GwQOus?vh;fW#?uzF&&Btv#&j;Yd|C&pU9cp`FPH(S9|b@qnLJ$_ zLn>}Tc?&?iqZbW@nhkhdF6!Uh*m2P4yL~Q~lZL}GkF-rwyUn%xStf_DuQw_@SDeZu zBeO%`HM1m>!vx-tCqf}B^A)CQ?CMQmDdBh{eqbNNs#gzIU7YeH&vJIP(hZe_Z{`)20j91q^?T Z7lPyhx#!V6JPZH;002ovPDHLkV1oX0c1HjJ literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?!kzIKU^w_5c6>TdU36m#V7xt3SBmde!>= zQOk1{*&4emG~YdzIUW*nd6L^@H@EnH)t!=uFQ3+V5FZcKE?5%e7t8?Ej{=~QOr9=| zAr-fvytyFW(Tlr<4lD4uTf1f9{Jb5VlgY>=CNuoD!xrH!dwy`l-_K$`TrX8#k?axUwHLz@iI+VfF)z1aQ1^}U`c`yI~ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_4.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_4.png index 13aeab68a5d529dd0a4c87121e024d20d892b01e..c5df8c110730b2d86f67cf595bc11e1019f5cc11 100644 GIT binary patch delta 285 zcmV+&0pkA508YH|LEMVl?sJk~P~0tbYKogp2@~!vgQQZ(y%+ zzo8?x>jbofcI_ayqL&=<6STq$A4|Xp@DR{10DS?N+1hLm2P8y_kq}e=`(F8?Mqb;s4A=YtN*?f@qC}l zgBz~zdcQ$1=xaOs{7EaktaSO^@2;v>Rc#`js0gvm&*E|DZG*`D~?3Fo|-6oe8Y~c zgsZwW&o*vmU}G~mQa797z(c-(Lf?ScTE_5~u6<%X4Lpr;j9=Ill-SfRy`FUTO10_f zx4(HEzSjPcyK|B?)N7fEVC97XesD;?&tkf!@My0`gtfvv(IECE!bkKt pW(e&PP4ZeXDM;pRw0g2%<9w#`@}F7CZn5S;9n0Y9>gNJt0|1)Af(`%x diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/flame_cane_1.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/flame_cane_1.png index 950288d9e2cf69903c94ade87a0433b1372c7195..034aae1fa759128641a5035fb5638a128c50c51b 100644 GIT binary patch delta 41 wcmX@axQ%gwET8=6|A`C?47Hvvjv*DdCYo0Zm_08l1&T0uy85}Sb4q9e04$3Q;s5{u delta 53 pcmdnSc!+U=tP}$TFnPK-hE&{w@~T0+iQ3fyP(FjFtDg&q4FC;g2)qCQ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/flame_cane_2.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/flame_cane_2.png index dcea21a6aa82002efde579460948b7932b6d9c1f..8988333d7863077e589c04c4ae0b96523327385f 100644 GIT binary patch delta 41 wcmX@YxPx(mET8=6|A`C?4E3Hajv*DdCYsj@+&Ja83Mj(h>FVdQ&MBb@05+=*fB*mh delta 53 pcmdnNc!Y6+tP}$TFnPK-hE&{w@@hf6iQ2USP(FjFtDg&q4FC>{2*dyY diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/gunpowder_block.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/gunpowder_block.png index fba17699b31e12fd414e464ed434aafc09503f12..7effd753940e92fb115ceca0bf191e6b93862aa3 100644 GIT binary patch delta 185 zcmV;q07n1c0m=c88Gir(0026epuGS90Fg;VK~#9!C66%@L?H}9bG#fNg#`r#g=LQM zkG}X}m4l+2$=m^6>tkxarW0vIK ndle>xegXQA;pkQK52yYCec@ms?C!*|00000NkvXXu0mjfsjqp^8b0^6xj@htw}&A-Q!EaAbX4MNk6SpA)28_m j#}m!q|8WUxHr@8%oM8Ot`5As~9p+CkM|-;Zxq#RJy$eRu diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/hami_melon.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/hami_melon.png index 096242e7864116dac219f9ae370df4e25faccae0..862393833a796798dc10e4bd4a01f3a193c02bf3 100644 GIT binary patch delta 188 zcmV;t07L)N0n7oA7=Hu<0002(-QrRJ000tDOjJdf#8BYeXl$%R*u-4m>~KtwK<9_- zqyPW_bxA})RCwAI%*zeLAPfb-XF>rFHU;2(?gZpJYf(X>?Z1^(&La&}m_P{-!6+<5 z+EzclAjCZi=qMx2Dbb;mu`mW4B!{cx^%#UuiDMni*mZluj5UvnhLkIo%%r(isI}#4 qdqeJR57(pEtXa2y;x@C}p5Gs%)(>%*0bD)+0000R?fy;tr3_vhqH=R}S8m-KdDU l(i3wx7#Z{EB;TCYtDA{{x1~yF%7luHQz#xWJ2M1BFEPJv0%RIM50qtS%boFyt I=akR{0MrgJHvj+t literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!j|C%`Af)n|f3&Kj2s8+>jYiGhkUdAc}; zRNR8{VnIC9{++xB9C!|E6#btY{DbKR>r-~2HEXwBm6G|oqwvOl5%=sl9-h(f~xc+TU>^AOlKT;KcC5eisNn@riDH)UxLw|Z?2+pb}X-`S87a#&={#K^2WQo h6L9H$b*5ZGwI7|y360p0-`xNJ002ovPDHLkV1jqyO~?QM literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!jID8MJg)n|f3&Kj2)M*?mfiFt4*HTjW4rZ(NZTnTON}1R#`e9Q*P^AilouXq b{2y<&_vhUDH|&#QnBKr#=jrO_0%8LIGEh8n diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/magma_plant.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/magma_plant.png index 48590241d13b02b20fe389e698b59da8dbac60de..9a3dc134469ec80f9584a74de43a20905f0c7730 100644 GIT binary patch delta 362 zcmV-w0hRuv1Nj1w7=Hu<0001v3~j3b001XYOjJbx002)*Ph4DF+kYoIJ4olON6u6a zwp9|WJPXG}36LoVGBZ6>A`2cCYlZ*-00DGTPE!Ct=GbNc0096=L_t(|+G8+HHcn$e z2FYo`r~+pg&;W+O0D@2m#byfS8wUUhRtC1@Py>blAcKL~fPaBCfFVH1)L03~V+dx{ zoG4%nRHvjlQ3yzLP83oUagm(BInfbJBb&{PZW*fqnm}qWnt+fZYXFJ>w}Tt9CZMd~ zZUh@>M+$=q%qNOqmAeH5Af7T&P=LrNsw9Ib1qMMC12D~~y@3hHU{YXF0P?^z6G$zi z0*e5X0FYLJ&|}ODT1&hZF&Hp2C@yha!T{84Akxv{$c&&F%9X?mmC6w`N28;lh>Ju6 z*Fq32wSZwXec((V4Cu*$IRHJugpH<;5u83SKmefxGwjj_0LrR#genIK$N&HU07*qo IM6N<$f_935DgXcg literal 419 zcmeAS@N?(olHy`uVBq!ia0vp^3P7B|!3-p!Ks~@G#P#_acOW+=CdS{}|6BLt*kvJXtD<@ao?_2hic(13Gxg6&+s1spb|`;E{-7;w;()50TA!)l!JMP z4S1ZtdZ_os{Qdv^-GpVCZA)c0oZjGSu5^AuP|4 i`OgkV&;EFrVdtlZ=FbkZr~Z(d4-F{>Pgg$|5E}qYUaG_Z diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/netherite_anvil.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/netherite_anvil.png index 2172d0a1c373661669ab93dba47bbff7ec15e749..2c3ff189fb8855fe7f09407baf10ef72b6c431c4 100644 GIT binary patch delta 186 zcmX@dc#3g?L_G^L0|Ud`yN`l^lxToYh^vi(fsccOkB5(ehDJn41Q2+5c+7Q+vjr+B z@N{tuskkNDbCH+HkjHuMYo@}Z47pbrl~NfkT3H3|HvCOj_`6Z{_f3Y}dX0vj@8_E4FJ|GKw#X{%g6~X7vZP mr-7Z z&9_q)*zR;T-SSPz%DL&meIHhj4Wc=#)ei2yUFKC}UGrj}pSIjHCHW_TwOfBrVmbGB eiPxdkb$kn^|2RJH599KqOw(a5^mO%e0kHv|Rzc?g diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/netherite_anvil_top.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/netherite_anvil_top.png index 8ccf04bd5dc22ea8241148b40aaf382f4aa6ceac..185437b1c9391d6515a6739dc71da1c16388767d 100644 GIT binary patch delta 198 zcmaFHc#Uy_L_G^L0|Ud`yN`l^lw5#Mi0l9V|9w4uZH$b39GyK}J)**+tSzk#HMR6L zG@Tusr(E-~0IFmx3GxeOaCmkj4aiCJba4!+xRsocU?yTBW|ja1WxTwiEQT`<#l*<4 zHt>A&aDVQ?Y;f2$Adpc-^raG0A`2Innv-OJX`_9UQUY7>g2f6`65ntH>s;bU>#*c% vl01{>DVv~~Chq8XkZD3$a&qcYCN_o#KLpo`&S887w35No)z4*}Q$iB}0{=ci literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!jIF2EzMj4wt{ze0QP!5$&JND{ z8k&ZhS~f;TK90^%m0Tr3e!&btr4RrWW%6`!45_#U<;8<|v3;IQ4F(*{o?TP_{6B1# zxAt7)VTXne4$cD_K`|X?c`CcJJelt#lXE_bjpYK=yxtbkRUEEs&unEIerF?hQAxq#RJKYvC> diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_door_bottom.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_door_bottom.png index 2b72a0acf89b4dc38f978cd2c83e0729fd6ccc52..4734bea36146c9841f7b55003bae3cc2b29f82b6 100644 GIT binary patch delta 179 zcmV;k08IbL0mA{17=Hu<0002(-QrRJ0002C1?LVE&fcaPBfPmK*U{6ipo z1S3+2<|4G^JUE3`;XqcQ^b~u_1|>psG?&2fX)2nFsFhW5x-2;NDW9^!BT8Y2GH9ay hUmm-y#CdGD%nN5v5W>7z59R;>002ovPDHLkV1hSxOdJ3J literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!jIBEToaH6y2@Ai|@eW6FerkOeIXTV|9T zS<`Z6&jhF%CQlc~kcwMSUMz?gd)`op$&rWIQTNh`|Njje`MZuDWbxXiljw1*;G6*O z%QGe2rduX#*m!E=+gwX6winZEoYT6?BUI0SSp6g;!`sPwQq9ygNqh5-URo=2cI}`4 aLaXHyvVY$B&Q{OB(gt&zr>ma}hz$VxJVSH< diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_door_top.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_door_top.png index 4d79ec91758de49e03c466804b827eb53f233b17..3fa6afd2b3888e6b7aefbf7457659cb43ed3234d 100644 GIT binary patch delta 193 zcmaFDc#&~}L_G^L0|Ud`yN`l^lw5#Mh%1oZI=g&wQOJ???dSJSTGXCc6ye#>JvBSO zDnCD8V&jh2KoyK7L4Lsu4$p3+0Xd1DE{-7;w~`CY3Jc2$4GU8YL|B*=*^aBIx+*Xk ziAc<7^ypa_(Adb@;UcN#^Z%jHP9sPo(3~CXBr>ma}hz$UQWlsM9 diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_leaves.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_leaves.png index 9a03a87247a08475b65c1ad919cfad6a1f836ef8..72b9532ff91b749559c7e079d9ba0bf938d0afc7 100644 GIT binary patch delta 191 zcmV;w06_oO0nY)D7=Hu<0002(-QrRJ000kAOjJbx004J&cW7j2n3Zrwmc1m)Rx5{>EL~RJMhO?uAF^WtZP17V@qeWf-k}XgFavEvNIcWCt?dRD3az t(|1qK=pNCitVpdC@Z*NA5bF8YWk2Y<4I0vGcIN;9002ovPDHLkV1k^%QZN7j literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!j|Kfou%70Av=$tW)^pD}aB&OJM!QmiFG ze!&d?fdDGNgNJt0{~sRKmY&$ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_log.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_log.png index 1fdcd93b06f24296d97ae02cbf346157dda3d164..e976b8ed380397f57398678111cd0369c8a2581a 100644 GIT binary patch delta 147 zcmV;E0BrxW0iyws7=Ho-0001Dofq-|000b7OjJdXbWC_yJfwtJTtF~NWdGLy002@+ zL_t(|+6{@J5x^i2!14l9Q`IGy;zxJ^rUuUv)UZcunWoDix%ML>5@N4{;mmOuCT-zX z%F5a6c2l1epnU56?5sf}WWSYoAxR9~Uty}0A1ApKNd2Fwt_%PG002ovPDHLkV1g9+ BJFEZz literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!j|C%`AfHO9f9BEn`uiO-Uj2&g!dr;B4q z#Vsf=1jGyNcjRL+H?DlI6rb52HDvlcRfS2#?or8&2?qb={F=50i9Hqzd&qu!I^zVGGdx}WTtI99 Di3u~& diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_log_top.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_log_top.png index 4d4aadd22095a5c587f53c51204531d98c021bdc..f06fb497d25c074b6428e970f45411f02463736a 100644 GIT binary patch delta 187 zcmV;s07U=K0m}i97=Hu<0002(-QrRJ000$GOjJd*m~@bERG@@l#H@s*gjkStOn6v4 zJ!S(P0001SNkld@9d66{=CnlL;)&Yb+6HPJ&Fw>e~q{KIPz@2D6UY)+=Xfy-iF0dLJRw0TKvo|vg p^}R6m1n_1wK1Zu0B`^GSb5y2*UrHpRV=)8P->LKXHjwSDT3esDMJ=yNNqDY|0GZ=Y8B&3%n7 g`@OifclUQ}nH63CSoJLTqip70m=ir+{aiq70Ft3XhyVZp diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_planks.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_planks.png index 2e269c8bcb6179bad94760249c251dde439e430e..e6ad1e5e806fd3ea8357d960f8a716c3b48321ba 100644 GIT binary patch delta 158 zcmV;P0Ac^V0j>d%7=Hu<0002(-QrRJ000kAOjJe0tc1+GkhGX|poCzMa8#`q-#Y*R z09r{zK~#9!EsaqPKrsjdZzvcJ7#5fV@UQ8?^7=uVa%nMbE!~K%b_nRR!i`%Im8^Yq zQVhhG0&coHV31o`C_XL5nZLUa+NZOq%Gc96j~UXvIg_88o);d=4?Kemzv%Ttm;e9( M07*qoM6N<$f~M3#`v3p{ literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!j|Kfou%bwWYNf|i6WGfIxEX*siJ0#u60 z)5S5Q;ue$_4dVIspA=+pWtL0ZBjX$m zonP~x1xhoP1o;IsI6S+N2IK^Kx;TbZ+)7ShU{qt%2w)TJaahCfjLX1)vq92{$B8Y0 zZE=&5i|XbEsgV8+5>qB-Fr*qBmgEdzlkO3W<65X58GD-f08gJ-IJ-f!>XN06jf@P+ XAJ{Dzg&*Dln$FgTe~DWM4ff1fqb delta 187 zcmdnTc$#s7L_G%^0~|1Ux;TbZ+=B93K)mDx1xBBH??29OjA6JWV}DU>KVz!*+ke41 z)@IHQvp!1pB{FQvHL!Dh{@AER<#r-NinNdL35NAX-j|%^Qy9)DY~o?aY?5>;yVGnE zoWl@#&ixzPO*S8mkAL@Xu@&lZ%rTi{8t!`YpZe_y7Vd}tEASYxqzQDW-C{`bHE4D) UG26lA?!U zof6`Z00001bW%=J06^y0W&i*HYDq*vRCwB5&M^vrFbsv^=imVn)7{qMEGq78rMqAc z;NbnQU@eMZrZ@Z_1k-b{;>fMSSVnU+rVr39HjmoF{sv<_6*|SVchDI*B8H~biAZiT v52okB`HtrS>myNADaTZ}$NRZ&Uv~00000NkvXXu0mjfM)_0D literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!jIG{7gs70BK?yZp%d_C@W9lZ!%%B0SIU zodi|DUJ~RN%Wk!=&6v$qh+$~ zn_<^R#^mHhbA63Acph6V;CXani2KKMhb=RMK5QusduYU>vz;ab^yHBztf5gnbBP9}l{KJ>mXW zdD7H_f`YH~(=_Smy&CUUyH6rX&ql1rqLw^TR-u5&#Be%-1(fKRI{|qrJ>?qvA=a;H-`EyskpHnj{nuIG6bnlP|s;{5@sl zYra%8-$tUmFj2NqLAu{8@z=5;rK&uEeQ8O4Z?(7KLCMF0_a;=K>mWcc2Om(N_B+GH z%!r^+EBBmATz{>ZRZB&0IU#`CW3@%#e<19Z)w@-cQ@R6XvC4}w=A{&%&|sJt=3h4l zRN&4zD0r+R!1Omz`)sc25h-&{D7jTOp30%a+q%!x+fgNIj2btWN8d!DhqwcmvmSu^sEce6P^qb^ifz;Y<@NTf!^= O0000^~L_G&H0~`ni_=LC?6%_#mV&dZ4TAExu1Ln`329;+k3Gxg6&+s1zpdw73 zE{-7;w;(*mP!KP4a^SkB20Tvv{AvHA=kYK9o~ae;70tvF>@}-RY_8dpy9_O}7`R@G z@Op4GOo$B;uP^1$)p^2jX~MQl&*x%qZuviXQe5)+!Io3Ofuf=kckjAbJmsH|Tz2Pf zE33U^`1Cm|Z{DqLT*v7c%j(*vxI|SlCa^r(^YEJ8(u#-9oX%!rNw}q^(P8{t$9RL4 zv9L}3Dr1!i=Tw&bWHZ>${d7A=y5zf(Rd1MUA|)@qVcVOyL-jnHX?HLZf4$*7t=9@IHe!`rO)tBz>eJFRJ_4bWPVddL1fB%eM zKi%fQs)c8nW#&61O)kG@(|PyqUG4MYDZ#A!WitBrJWO*^IPWaH&tLr3)W+%D4Vn4p z-u;u=>p00{Rz^|7`~Dqm0#nSJY8qHxg!2?kfALS{*R7ALJ9pRX{$>=2n7H}t(n7g7 WK8}CPl508ApdrrS>FVbKVgmp}T(_tI diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/reed.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/reed.png index 01f6572a58225fdfedff54bf04eaa51c90bdf2d3..9152768a856e8322f1fc59eac2ae8ca7b2db6da6 100644 GIT binary patch delta 345 zcmV-f0jB=!0_Xye7=Hu<0001iRAn zEXqKF8%Y{0uz3TLfH08S1QTFZW?&LQ6W|d7Dl>wa3{o$^Vtn0iXboKod|fU_=P800oqdkp!F^fC7sV z0t$`}3Jl7^EXV>t6;fyd3Ia$1Oh7{y5ELjt7GMOL02E+G6JRoi@)syDvTFea*v(-A zh3ev3jfFz&(^6pq6_w&MI$A3Jqp#sw)r-r3w rhNh;4K?P=J&df~9oR*fB2H^t$?5{Hq=qg#T00000NkvXXu0mjfm_>Z^ literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?!jIJ-{c#70AAFam$t&#cMiKk8kYTyLHlr z#r0P%EW3Gi)%N8r+m<)&Thno6M;}xRZ%L3}FvEW&0F_|!ba4!+xCQ0i1o4($GZE(@)_b8w|y@^Q2oHB=?X)|D+UQQ zh8GQt9E^|an`{^w6*yc^JNOwZC;amxwFP-^<=>g bPsy~x?bqxc>mT^Z{uSy;22WQ%7Z4i&Z&H!^ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_bottom.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_bottom.png index cf90c540ac7f9a4f66bf1d3e43a5706d693f0c67..6721e8d176c18ec10ddf32f9dc9881ebdb503f48 100644 GIT binary patch delta 126 zcmbQo*v~jYqMV7Dfq@}uuJ|V)#Tnoe;;NxzU|?clVdL=aaoi=KprfaYV@SoVzopr0FM(VT>t<8 literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!j|Gr%XrRYS+Xz{JAB#sMnGd`z`qz90U&M{QrMZM5nsJ#Vft9Ws+vMjYuBz0tH`11>1W}hvy#%DQ4fmocAH} hr=`_Cy#kikvVViuS-pxcIl^!UY8r#5tDg&q4FLLfC#?Vg diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_front.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_front.png index bd2a3fd51c7fd181a38a4e30b9457c12611f1bba..a8bb018a84606585617a5cf19f4a3c25f8dd16da 100644 GIT binary patch delta 215 zcmaFG_?&TqL_G^L0|Ud`yN`l^lzM` zi30~Bc!CZ{98j>~Jj0P9V93Lj@SefQg?FyZ(QpnnqktJw++0!9rP+)n#3ZGqH6^W$ zU-+1^F{-nfsv3AC1r#%0)biv>%v9KYDM*rqw=v9si`%GW*HT7DFAavmU*ZOFHok9w P?qKkA^>bP0l+XkKeX~Lu delta 218 zcmaFP_=<6YL_G&H101La_=LD>=olE7SXkINc=!Z_#3aNdWTa#iq~sJ7RJ4@TG}JV- z^h}wvV#5}wCMHi8$B>F!P+kFu=X>6fkJ*sJIWYOoKckty=Wp*eySPVoT91SAVVjJc z>+|1U+;Lc}|JVlW2NyRK1&cip-1$pTL2HNY=6AovEkeZCeCKs5WSVe3>R@2RT$Pva wmMp4^Jr}q(%znkyRaV6-Q$2r+dy1vZ=VQFNbnzQ~iJ2Nyw;aX!-d}*8`}f(9^{+q~cbxfQS$aGh5>000jfH6ahWK@`Qv0R--8n zJZ#QvoT{80&hDNPM+}kzu1;z&n6h_@B2PNMufXA!gKj5Tb%YKDyk!#OOxMs3WH-Dd zdFsqm?gq8x#xs^SzVY%-3n&T_5fKRrOful}W^M{eW)MmiZ7!PX{03+{gQu&X%Q~lo FCIInFLdpOD literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!jIJ-{c#RY65XL&w0t#KOYH!NVsYBqkvy zAtNQHprE3qq^6;!p`~ZaoE00kK(#P=x;TbZ+=B8lK|J4nL!rYCJWLY>6rcS0|9#oU z^V^@E6Kha8$LO>v--GR;hB5=gEXRy|Mz+YZYl?q1AJ*mBzJ9TRPplnx;OYCiERj{+ zV$YQKy7Dh`yJwwcaMbWQU)F(DRr^9j6HkASjW#>6&UbRX?q=pCFlT$Z`niDE0Ac?| AcK`qY diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_top.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_top.png index d42e83638dffb0412dff5b8cab2928fc85ffcae7..c467cd071ba97a3c2aaaf97977360770d6c3b6c9 100644 GIT binary patch delta 152 zcmZ3-xPozlL_G^L0|Ud`yN`l^6n}tEh-*nrLrP9TNKAr}+DnstN&RDFT5)EKI5kI+Q#bConS`wd779_k8c z6X;RYU`cHdkv8f$ux0ZB-j;}m4I4zB@VG7TW-xW&7VMKSe0&>d0fVQjpUXO@geCxR CP%b9` literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!j|Kfou%)xyTX!zUmlCLtxKprob&D#hgK z;uunK3(E5W@pAijGBy|p9Db7if2O9B6Vr|zPOaybw8Pr?`Pgg$|5E}pq8Zi?9 diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/solid_gunpowder_block.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/solid_gunpowder_block.png index 1d07b68a0ab3043ed02418b97f5d11537257b1ff..8c013826210cb4143905b92179a54d3aa0404a22 100644 GIT binary patch delta 52 zcmYfFm>{Xo00dSu7VHI5{GKk3Ar-fhI~gTe~DWM4f DXi*M2 literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!j|Ilw2xH6kJc%4PC&aSW-r1?6#rc*zM8 UtS1;47zG#@VVXQ${aiq7080A{#sB~S diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/stripped_palm_log.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/stripped_palm_log.png index e79289bc4328f7ad63cda5df3482c396f4b7c99c..67d008f467b96bb1991d926835868d2b674ceebb 100644 GIT binary patch delta 168 zcmV;Z09XIL0k{E>7=Hu<0002(-QrRJ000kAOjJdrj9i?6RFHH`fM7s$SUltk@)!UB z0Axu-K~#9!9gSNR!!Qg(uR8)!Mxb_zpbLV8Kc}hHhmMY|2m3^DOm;S+G+C;o#l@|L zVUfrf-0kp>FF&*T`C(T*u8U>1XFBCR!lGJ8^{iqm4HC~(4IK6oZquJ4HOW$vgOg?m6o>RubF|E$k>`DEeO2s|r?F+Xu OZHGC?)78%f#0CHj13b$B diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/stripped_palm_log_top.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/stripped_palm_log_top.png index 4d4aadd22095a5c587f53c51204531d98c021bdc..f06fb497d25c074b6428e970f45411f02463736a 100644 GIT binary patch delta 187 zcmV;s07U=K0m}i97=Hu<0002(-QrRJ000$GOjJd*m~@bERG@@l#H@s*gjkStOn6v4 zJ!S(P0001SNkld@9d66{=CnlL;)&Yb+6HPJ&Fw>e~q{KIPz@2D6UY)+=Xfy-iF0dLJRw0TKvo|vg p^}R6m1n_1wK1Zu0B`^GSb5y2*UrHpRV=)8P->LKXHjwSDT3esDMJ=yNNqDY|0GZ=Y8B&3%n7 g`@OifclUQ}nH63CSoJLTqip70m=ir+{aiq70Ft3XhyVZp diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/topaz_ore.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/topaz_ore.png index 08bc19db037e8338702c334c22be9cf726b85b97..b243fba78bc7372bb23b82f92bdf2878c6893f3d 100644 GIT binary patch delta 318 zcmV-E0m1&x0?h)D7=Hu<0002uh3Gy2001yhOjJdDe0+3tbc~FQXlQ8QbO6v;0Q|%x z{OEl6q!jRw5d4Gy@MHk|&`kWaIQ;Oi{Gcdq%{4v%007uYL_t(|+QrbJ3Iah82H=18 z6u|@8xfO#L)(Iwq$Gw1HF>3GuY*ve46^qSB5X^#RlMi4qT7SeY=p(qRToV+7ZdwLr z{*NCbqz%J8t$`pWP|`D8^pn~clIt>brcX+$fWjPPS`oC8sLCUN6T?%U0b*@d00ON0 zE3s&lhKbf0e|uu*Xe(q{(I|*xxJ()}IRd#%bVPg_E9EQ|g{I!?j|2fGWHQX QOaK4?07*qoM6N<$f}OvV8UO$Q delta 319 zcmX@hbdG6)L_G&H0~{Cx_=LD-WMq_-l+@JJ^z`&xh+ue7!tf!5;ll)hA4^33v@rZx zpz&vm#h)W8e=hj^c~SG{!v?5sCQlc~kcwMS-f0l;?j=h<7DfT*!2j>#mT&)kf7$}} zMl~mx2pIYE)=@wM4N=Ahn|p-+M=sl z@J`BuLq}O>^Rl&97luyFxVr7uHnmOjRXX|vt}ZPNJAU*S-pg+bW%cEbZ`)Vp^Zvod|G$4Q*s1V_!2-$C)z1aQ1^|;P BjWz%P diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/humanoid/topaz.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/humanoid/topaz.png index 26b6dc014aa13945686b8f25a21339c5d683efe5..be2e7e5518ad45f9aaaf517fe4bf352f1b699200 100644 GIT binary patch delta 410 zcmV;L0cHNh1E>R#7=Hu<0000`vtzda000wW+Ez44I~ z|Ns9t8j_9x0004WQchCZ3@-%_JMZp7QN+Lu@gf)1bFf(eW`C0h>TXdV0C&#M*)`4J!AeiVaev=$gmI474j;!ax)W78%Wsgz@c;k-07*qoM6N<$ Eg7<*7;{X5v delta 439 zcmZ3%e3W^DL_G&H0~|;M_=LCuc@N4M{sY0!z5id=ew-+LIg;W3Q5C2vj*=k1V6Ze$ z1yqd5)5S5Q;ueI*=mz2~oqBN6S_1(mTc^YS|9_00@jESSXJ6S=RXryqlb4SpT$xmk zUw$+t<#YWUhs)ns9k0xMY0Y%|ylIE^wz!Oh>zBC2r}guTv;7EI^S#OZ&E&U}F6XLW z*~T)dYPtTRb0M4`TWaq-E(FG9kxwMWV>93v4U+^Z!-x{$bvt&G{J` M#0;LUel8$30GRW@&j0`b diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/humanoid_leggings/topaz.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/humanoid_leggings/topaz.png index 9892b4444e30fede9c6df643d87c24bf482b971f..f7544398111181d3bc9e3b2a29ee8499ed999bff 100644 GIT binary patch delta 243 zcmV_u;+T`kL_M}w4~0IpAfTqi&X_X)JuDr_hjG6Vz&@|lE|bI&LO zfbqW}vk2G@1sLQFi44aAMLtn-g>L93gDDAtj;hN0ptK$u6@Vs1XpgkCqP)^wazX;v+uw5)7B&32E<8`QV*W<9x@)r}Bb2k( wZWUf99FrUL^UWL4>`7Z@Buy?+mKM%6{Fwbe_@Ms!2$nXeD;Ydp{aiq707*S)qyPW_ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/wings/flame_elytra.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/wings/flame_elytra.png index 65eb8d4da0b7fffab78b1f3117adf734ce176fb4..0275ae73f8df401cf0570377a57fe9ba4852ca9f 100644 GIT binary patch delta 265 zcmV+k0rvi_0+<4j7=Hu<0000`vtzda001FSOjJex|Nq2D0RQWK^}QnIi4gzAB=M0G z=wSe}I{@Hz0Mu0g1~nWp00001bW%=J06^y0W&i*HrAb6VRCwBBU_b?of=WtC4ETT` z10f*TC@6tnL5HBA06qnbKm`(n6yS9TV`HOWIerBa%gY_`D1YE;lv-7ZSHY_C@|6?t zC}3Z{ywW8Bt5g7ls+{TKl7vse6qhM(MpzXnz!Z3<8R0X*CE3_G6`u*oX~xEQtza`w zOIE^X1zWPQX(&DuSXFT)DyRYmrO+Vk3Shw(q@)^(R{?7ffpj|x$N>Pt{T{(wwf{K) P0000~JG{*@=k{T`ny%$9G?RQV+zI#tkVvDfOrwKtt#a~ZJgImN$Xb;F|rKe*m; zH-r^`XJeYyFw^pI!`F{_XA~Yx^FNpW^yf?q?lYA(jEs$SyTotIV=iKrnlAa^&I11T znv7-|(UvSFts;|7@Lmvop&`(?&Oy=eXZ)^xnv))FVbKVgmpiP;zMi diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/font/image/emojis.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/font/image/emojis.png index 5ea4c801495a9db1c00598fd33994326c8f89f62..c3bf1fc55a535659bdb0fe62d1ddc9bdc27860b8 100644 GIT binary patch delta 608 zcmV-m0-ybm1@Z)t9e}y{%O4eX6>Z?k@K`#IQ z|4_j0r1<*KTWaTdnyA}rbHYdMT}SPVTmJLFX9|Dd00001bW%=J06^y0W&i*I>PbXF zRCwC$SM73yAPh7yRpZyS@Bgw52_SHI^|UkX4>Kn-Yr+Z+yMN}I=060)IEfKk4MaGD zk)Xunmf!}%#OxlxOmPcDh?Fd` z#BRUamd24C=5Y)J_EvCvNhKx?j0BcX2qdRNB(VC8V33G;9$f+A$ey4J6FTtN6Goip zg}`kwA?Q$}3x5-Sz|4j@5cK_rM&H93eElfj@vDBo7yW?kWSsE>D_}dDpjKd4-4AmA z*a}9Im-vW10CxPK@C#W|DDdxK3i_YJ**DBw^@~#fFwK)~X`UQ|^AGa_?;xdLl!gH^ z&*UpiMiBg9BS`&1^=}1Ut~2_W;D}$S-nHPU9~AiZgMa4k4-WPRDTX15*bk`wlYT(O zWb(DeYF-yzBd{4nd;LM!vd6<$=?BI4U!|_1_gLnl4xZq(AH0pL{Xo`GJogV7uJr@C zKRo+EhO2si#~*G#xc%Uu9|SpXdC(tjpZ7MC^WeVya-2PeKnT_U6BYf75Lz9AKSYLr z$(oYbA6XRom#Kn>A!%_ClNN`}59kd)km|?dl^D}u!#X|6+ uKfq$HaIPh-Ck6-^jAAp)5R1)MD4APGZpt4M!E{-7;w;(*mmmuET@V7-R z^$I*+l$S3vJ+|-vX)~3E0}roWKDWjG%$zf8IJGU_%*vkiUqIxs3Y&x}!wa5i(u?~8 zKD1m^ymQjrq)+!&Dy#BD@6#^~7d^QXaJ270o=cO^;^-!69_7u|493TF6_^q>9TD37 zH!nIWyllpGQ-K@Njc-+_N|-7LMc64$n8P>mz$^3mrZA;vm8Gl<+SN^ZJ}*ur`%4tg z6KC3fv}FNvub$5jMq}w`4hB5)r4Bo!fB3q%=J@(wjPYNXw@ofQ#=oZFZO){q#@JH( z6MvJnBYfi?DSumZp~RoU=c}zo&Uh zU7!@(Nt?;*4eBKwKQ#9$eC58nU$kPU-hbjRaliRAI>3ZD{5FG0 zG4#KG$QOMliBgV#0+LK_*gsCLRFPPzbsMo4?AWz!U z#WAGfR&v4u^B?@|@@|!j_XOV4$Pf7Nf}7#Z-O0<|*thEel`(j_`njxgN@xNAh$kRB literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^DImb|#ik5vGzLzhH*%FrKH2 zV@Sm-eTR}#JmAfs?uoPy00002bW%=J004HA%{Tx60NzPNK~#9!?bxvkf?GY?={ zp|Z&bh$m^fCATZ32XTXf5_TU(Q9Co&iA_x@VPUe{fn0u!Bq+VU2y&QI65LI;r;~9W zc0>!GoWRtcgncDLdP{%**o+AiCQO(xVZww76D9*E!575*WMxRi{QX-jdXOryFw-k4 z2#T`}!E^;d+&oxah;RhHDhe&yA=;L%YH))1L_c;JQ`FGT*rc2Kb&>nr+xgCI)g4;$ V_V(mz6O#Y{002ovPDHLkV1g^mjT!&| literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^DImya=_I?^GC&N#uZ{8Oc+{+XKFpWQuwmYGYw>MNP-e8!SxsfTISD?Ron%aoR` zn_Q>n|%be=Hx1jYoA7=Hu<00013M{Ml?001FSOjJbx005taO+7+JequLOTwlVSVrNh+ zxRhTpGd6dGhErj5qK$^c00001bW%=J06^y0W&i*I(@8`@RCwC$l|5_2Fc5}a6KLqv z5YnvX@ZgNa;I1az&}=P5crFHa4#CxGLIS<0_pOFjBgL49% z!2m@OcPfhCcyKm|lj64?l7f_<^`N!uA<|ka!1QDRb)&#mvn}Qx+iKQ@MTEe5sHJr? zHUO9nRNzDb(0@eXSDrTxj`NTJ&HVtyTC$4+ryt?0_Hyh0Je)zMfQe|K92x;7p`cVX5LR(090iA?dGcm zlneAn4>Eum1N0tF0DfE41py@kbaDXz23Wy`KefLD|1$apzeBZt0s%7m00000NkvXX Hu0mjfc&Geq delta 572 zcmX@ca*}0&L_G&H0~{y@_=LCud57jEmAACbZ}HtRCEn23EI6^GF3CJJCf?S`Ej>U7 zs+_wd$S;`TKO8`XnLJ$_Ln>}Tc#Qi%ytiQ|ryW+{Ih?>R^#A|CVg+uM2^Men?6VA6 zzC*RXOEh*zr z(#Ox=VtJ(tu~i7cE1km)1mV zTD59l(7sCvlFVD`r#ml5KKMp4qyDnM$*o2eyCb$SUdVqjg|kH<@10fuYlqYYjq?or zlfBe=Q#kUaPG4;Ny6Ks&%BD2y<#)}QdK^q<&5WIX&~1Vni-GZB-Nv&V61`ha%wGM@ zX+gcGgVCgk2AB9sTPpkm;*|wf>$i*lVOcVeG7w0004WQchCn+a literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!jIBEToa_5c6>56T$+zpni_QTR$ILzgAP z|D!5i%Ir`z93?@1!3;n}AOIC(@^o#z#RC diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/ender_pearl_flower_seeds.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/ender_pearl_flower_seeds.png index 9ec3937215ab7831980f1ddcf3f608145e0fcfb1..68d3a3ed9e3fa52ba47e748f76498e6ac80c4534 100644 GIT binary patch delta 41 wcmdnMxP)LSK(1BArb*Ybb}MB`LdI zBu^)?J@+>N0004WQchC@uMQAK50GZ7TFpK4NmP#RaN}eHFw9x z_p2(+^@Xb8C<*clW&kPz0jL<0r;B4q#Vsf=62!|rXUKOzfrsVbSIawp{~yy)E9IY8v|m-meqiTEYl&HyC)j`niA@0K98MKmY&$ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flame_cane.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flame_cane.png index ad544e58f10028b3b8a9669d91ad031fb593d368..259d5ca32f28f3941b7dbf3081fcb4a57de16999 100644 GIT binary patch delta 169 zcmX@ZxRY^$L_G^L0|Ud`yN`l^lxToYh%1nuYRvF|F~g}chW`&3{{J&v;mPnb>GDsY z1Y=2%UoeBivm0qZPLQXIV@SoV7r`=|IxDtaV)p z6BnpBZ)lh_t9u651hX)|A|oLdqZZy!5l0i|%^Qr4C`q^_IbP0l+XkK48A+y literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!jIG{7gs708}y%&@|f;ZzyJ|9^)6A29r1 z3{${f666=m@E;7IVoaVcjv*Ddpu9j3ueaY(sKJ1P+0*&ce|2x!sn?p7)y1aG6!^G5 zD8eHkFGo%ERCR(@Y*4&tzh!k#lJMDedkxkIdv30}Je^7C=nL*eb4*#6Z9ZOC{NV9% R=5;oV7BK5QUHx1@Yyj;VJ9q#9 diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flame_elytra.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flame_elytra.png index 7e477f1434066af456aee0b8d5c89d661b343977..28f3984222da5f9be95d5f73b5550e483fee97a1 100644 GIT binary patch delta 192 zcmcc5c!6<(L_G^L0|Ud`yN`l^lyrbki0l9V|GO+1yp-Ahzpi~y#_<2B%9T)tj}wLe z|9-r;`e6i68DmM1UoeBivm0qZPO_(qV@SoVl7yfp_hV)#-lW@{O+&1R5PTgTO-c+S$n&1(fy@`}Yw%*_!UOp~*P sF34;(U|kj>(9G$vLbE}FOQ465fy;sSs~pcVd7ym^p00i_>zopr00uTnpa1{> literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!jII>0By_5c6>56T$+zpni_QTR$ILzgAP z|D!7Ze?Rt8W``={ED7=pW&o-K1E?UAr;B4q#Vsf=2E^;_cI0AqRukz*}Bm zbb5VUUtp^~e5pi=&xEewX6DUU!gCrR%K!iX0d!JMQvg8b*negK00UV`L_t(|+ND>C zf}kyUPxO?v(lrCg>LW{qDN&*k!%~@K<%rc}DaQSl}YE6u|a8Ez86h`17pm zA_+1<&H>=9JAdJv5IBIt9KJnY5Rrj9jDaW);1RGEDS%r@l#5IVu`_IueQf6pVylu5 z7p+oG2rPp?1pT+0PHn>HMmG^Fq;JUH0Ij7CfTjR^4MWme07`FhH}OQ!B=q93R}fE>q%9GjL}Yd=&R*K(|DS-O=-KYyJv{HSF;)V~0D)_p%*XQ0Bf z^OGGO>Y=YCz6j7QkSdnNL%>qjVAlW`o9=fYaG!h;dmwNT0HS*W5<$Ag5+r!mIGV;g zPohjyD54yOK}}=0kfyu$j*W_aD<5hW$L5GRItuBsEX`7mYJyJd&c8a~P~_T*NG-Be z10CII5`TGc^C*xly+Hpu$EYOBAypDM`5^#I7h&qK3LVu%L0r#A?mu27p4sW$ZR%R#0ISb6v91|001h2tqUH2*;^_%!kLLo|Cwz7 zrGKpZ!PW(D2sRZEBLid3o47>bi3r}dF8Ctay{#2NjhfhJ;+oww0)1N-;%Pjwbs>!p zTNgfDNb6F@iMnvja=cppBLIw6!#@O2MFXK~7vQj@1_0GAz&xXQ{?!m>`)R>{2Jo8B za*7AAGlbWl3Blz=2aK$WZvZoTsdD&2LU^2sXs00nm^q(C#W{kbI$Fx>Gy;GZOah4+ zHUJ1PDv>}awfQ2#YBpBtPfh?46{L|YF$S#t{iUoCAT%0mW)AiPT)cmz=}G{vYS-L6 ttt}dKCo148QrOQR7d|d@JqBAi{|E3=Dt5J6Qi}ip002ovPDHLkV1jnA&@%u4 delta 1068 zcmeC<*u^nHww?h3k^_7~T!Bm-U0oj^-(!ug);6}euG-0lst?ni^`CcFP1Y%?stwbV zJsWYT!dWwai*^tD9B&kzjI4#-ie9O9(E?sk?EKmEb4eT)wnPj;+ z-#I!i;bG!k=>YYZ_ynkRiX}mQ!3_WZ|E~vP+yJVY$Spy!GgF2hHrG)dYJbm`&tvmWRr~hOBtv^|W zp(LVZbRm`jdP7V z*817SY>Be;+`#is<;(nhtEZgvrEj^cS-Q`&nt6+iCBqb^52iex*^C0aj^3?5BHTFX z@Vc|_PsAn7mb?)ol2?$~Rkz?5!&!qpvlgD1xb=_o(a4)TsW;E$sV?$g-m~}AvNxyV z8Sb1ee6!9t;Ni|6C;LiM&8PA1=GgFMg4VBl&I!K3O|i@eDyr-n4-|iLm1#WS%FywS z(}U&ZEK`Mpds8l&*trU&&T19@(8g{F{&A)c*bZzwQ+N{&Sh*yqHsVCoSF;tJhE2((Tk9v`EjT zaR24}P#)*YH+BVVU8c*o`pT!32X0kLgxXy$b=>~qTB)gU%>jm8t5->0x_S3n>#5Gb zwYwePFmkLax6KyN+84_GGH1{2T?CPJ+Aw8Tx)6hd>xR;U%m&roPu*C|CcdUcJH37;rZ^iTU_)ywdJRe0)@!)y*rZoa}Co6X`~ zBF-L5`+Jg8VN09IB-LXFw(Q?O#gwVV?ckX+2kRUzeD61j<$MtO_SUTBTV0#qsk*S% hxCZ@}d~)b`>$>9!+|U0{nCmME&36o*u6`~cHUJb6{O14w diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket_2d.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket_2d.png index ed6d11d72edff63c701605203ff1fdff06195d1a..f99a4b8b8053fe77056d62be85b22307c7c7fb12 100644 GIT binary patch delta 254 zcmV7i*e3zdEPJfkpqp^rA0+TV7yAA{klZo&W#< z00DGTPE!Ct=GbNc004POL_t(|+I5f17Q-M2Ls#{ zbH>`0V{{hna;His-o}>ZJ)M2qF0_O2@Kt0AJg_vxxAGJnv3Or2O`#yF9dpo&9i&$# z%28OS2q}bpCx+h$V3EYq?peU2!a(tFM85q+j68j9K0E&e1))cC*#H0l07*qoM6N<$ Eg4HT!(EtDd literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!kzBfuxb708zLmOIwy8X;smC(2SkQ8U?4 z_5Z;yVS2JH>pY~a#It8vZ_anFaMpB^6!=qje!tanBR=kD(R-rf68Ln5T$Lmj>DLFg z>O;+xC<*clX84aCK-DmLx;TbZ+=B8dK)lla(_)7eI9yaYKDJ6_J^uec^KGZ^-ITKL zM%@Qzv~Nih2!FSC;iIDE4$JSc)#|jKtCA6aq;S_;V5U>~*TAp5Hm;#xm$vu?JBT%` z(mQxm_x5zSM})78&qol`;+05+WtD*ylh delta 53 pcmX@lc$;y8tP}$TFnPK-hE&{w@}_`z6Sb!ZK=}-wu6`~cHUJyI2_OIf diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/hami_melon_slice.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/hami_melon_slice.png index 6d43555fa0c7adc3fc78d9da81dd9f9b342a9b59..1b87927000a8ca6a4cc02a12a5429a0a53d333a5 100644 GIT binary patch delta 187 zcmaFJc$#s7L_G^L0|Ud`yN`l^lwyESh%1P@)6pzU_HMt<|La~|UJB=m6@4Z-RBv*9 zx!S`m&on^!$Vs3g#*!evUDg8YIR9G=}s19HkdT^vIyZY3u;uyPu-G0q4HN+@H#=%d%Bb1tE6vm$#$ z*F~MhrVJ_z6ePI9Ry{fqcYrI2Lw%bTYr|9zk(m}gjZd8iIhs4~uyAirRS|4;xGWb$-z45_#U<&}YWcPAa>J8Zz={FdR^|Nlp=L%6fF zLvI&8cA4ih#fH%)G|tgKTRP)i$4Rjhau;;hNCu{_6Wyrau*JW@b0Js9$?R5J!OW?% zzo-cYd~48hn7NX-&+_bH?)ld)fA43=xBK;G@yY)mKTb8gt)84OfBmn-2X4E#7%P?) NP!}+Gy85|**Z}=@Q!xMl diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/palm_door.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/palm_door.png index a89a4fe549d2908cf8a91025c64458be93005bff..f0633fe6fcf7d6cf8f08090338f286e64d1950bd 100644 GIT binary patch delta 41 wcmbQv*v&XWmQVik|3n4`h9FND$B>F!6U_qzRt^fc4 delta 53 pcmeBXoX$8wR*C@vm^@t^Ln>}Tc>y5aMC||pD4)U8)z1aQ1_1P>2oL}O diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/pebble.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/pebble.png index 0739286300b89d4a8ee39420442d60a5c31edc11..3bb38c03bf31429b72fa7bdaf4befc15017b4269 100644 GIT binary patch delta 152 zcmV;J0B8TW0j&X$9e*G5|6u?C0CY)2K~#9!V_+D*ps29$KRPB!^Ri{jP;f_k2XTgA z(|qvYLAU`yK|%kCG619rhGCis8URuNQjDwtCWh<{M@Ps1B>5W|gIs{u0CZ==#6UDi zGfo$PB=I>PBoD(l4S;Dv_5uha+l*B+vLVQ}pyOehX8>sX>Jh62d*(?10000xPx(mY&`=6FnPK-hE&{w@(Mw`yOR&{GAMGewUA%yah!z7tC!)E z|4uk_z|QC8-SCc_Gom_5u{%D^OkrD{CCsovxpCDti$B^LF2|-?A4uQmcJAi7s^bhd zxQ}hFRa0V1sAX(;`;#GR8dG}`>$*F+^A5=b3T^MH{Bph~_qOczC!t*ccw% WWm~gz&9g+H`3#<}elF{r5}E+1iauWe literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!jIG{7gs_5c6>S1v5Od3Dvc|iHOR1kgl)BA4 Q21Zk;u?(KBel8$30FiAyeEKoeF$HA*xnXi-9RTt_4dg3AB^00DGTPE!Ct=GbNc00JaQL_t(|+O?EXZlf>| zhAZs}48lCe5qaLkB^+Q~mDhx|`)n%AbCjxFfQMY6>Iu46*ncbZQ1#d`m{ypTRvjtI zgFk!bpMRK}=16p8;$|)?x()&GBFRVWx~0{yLsTSBV?UKv%qRYGD404AOjWu z3-BdCET^cWfXtkbDj;($aT9EmZFLjyf`V58vli_}*Z4*t?I2DlpaLQUD2Y%U01iSa z9t5}$L10C=Qhy;}qvvG_$i!n1I4%J?hYSJ7B|zy;g*s`*fd|a$j2E<<1t|SN;rGwL zR+yxOY-RvX2trUenG8&Ka)5|d`&vJ+cArvfi+mp3tyeaM11dX``4rgH9)Ka^6i_M} z0dB$r4pv6u28P3j#iJ3ZI1s}Xcu?Zn2O4-%jR41r6MqkQ#1g975Az@t=cFEi6vY(9 z=;Y0VE}|YARlxE_@!6@+D)o!GTLYXFXXsqvfX4PsV53&ZJ*PjZ?@q@|bZ7H0D!$nL zR9Aw918E!|QG=T9UF1mF4Y4^HTg9xaD4xta<{)}eX rTjpf6`}O5*up4>+{}bT-@5=}B3gi;lR!JlP015yANkvXXu0mjfY^NZ% delta 690 zcmbQsx{q~&L_G&H101La_=LCud9Kl_UM3n=K9U9w!eNf48G%m8bs9}8j7wtN3;NUo zv$f0TXhSvemIV0)GyF#aPzfea7srr_TM!v@X5_vI4gKieP?^GX;PZynar{#{E-TJj(RAYZ|JMaS z3+g*;mQM|RAuGcWHoxO}bt1b$JcF5WEu(^G4C9?wQVAup4-Pv-u2=j0sLU*4+U@=) zmt9sVaejDJUu(d;i}o z%3OOP&}|*-&x*UZLtjnoWloqcBAl~olE7QB>BVtMn?hYyLj#n3FSj1!}hoHVW*kIs0tq zqRt7sR#ZOyTev^IB~v{jx>&pK^W(=Kci5jRyjQ#N)+?qDKYxDwSn-GX5toHKG$k>3 Jy85|**Z}(kEocA$ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/table_lamp.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/table_lamp.png index 2b0c61a8001fe52fac1539781a1f8f537c45bf01..c5c0bb397e5aaabfc5057ac330b1aaca763cc2c0 100644 GIT binary patch delta 264 zcmZ3@G@WUJL_G^L0|P^2NcwRgr5@lD;tHhqy?Xcfln`7srr_Tge5yKydTG+_*S1 z-Gz%6E6-KbF*VUCz5a@c?VBX0WNxMdqqz9=E3EY~3XM&hzI>X=vrupK_7*2rE2~?V z8kzDG8aa99I5d_xI?gz7W~T9S-xnFeL2Vh92M#kZB`|JSXwX=aoZPWB+pm%Jly)P_ zjYJ-S08XI-M#g!}H&{MP&iHBzihk|u&2Qx#>7SG=1o|_MW?qu+E M^>bP0l)%^o0DazH-v9sr literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?!jIJ-{c#705O+vo^D|3672nii}-(?U{pT zz`j@SLK4!=Y@8o|{Nm*wWa|i01_Hb#L4Lsu|AF8i5P}dyoPo*H#WAGf7L+#w#Ctp8 zG~ZzZ4i@p_iWaB;*XJu{&hrfoT~+i-M#sBHoY|{3h{vGHLGhyRg}{?K$1_(wv2U>bKX2a7R(`JK8g91=js+{E&9FKJPi>jY(`@ Np>AaGboFxqu>q-UXyX6? diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/table_lamp_on.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/table_lamp_on.png index a5ca826ecff7c1a35fc2b839dea7777ab4bc923e..f62a213a56444581651faec3293cccc58a9b3d24 100644 GIT binary patch delta 259 zcmZ3@G?{6FL_G^L0|P^2NcwRgr5@lD;tHhAENy}!W4-)?Y#m*LqvMRstQ|Z9LK4!= zY@EN|bNcxq`OmML6VkASRJWUOF&Dgj&xVWT5H#D=z)XedXxg;@#MO$j>0;Yuv52`sZCQfi* zVwMg#kn%lmhC@_TRFPB0hk3yQy22Kc4h%XBW+G|{o3ccY+&c9#fl=ICfw4@2nPo>K z3yWhzF;f|%_zs3@MrN4_+6OK+s2w=q(8aLna=Qh{PudPg-v4k0I+MZE)z4*}Q$iB} D-7-?N literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?!jIJ-{c#70CYc>!y*JwV9<&aCBTyWUPZ{ zKuAKmnT_+;drn^dLAH*rKR+ZxweXe%`2{olM*>g@CQlc~kcwMS-V6}$?S#{OhYdJb z%q`f`PyVmZSInH}8ydQ*=#`9)caJ!;S8WiFL6w8zMgI$dCv}czu6o81Q`Hp68>At; zhU6q4N$CjShHi=VacixSy84ia}sjZoB!~I3^ zM(@hCFV&uKTuzM^;oG5eh%4&1*N1RNQSm$4Gin9a{cQY@cC|k5IpgFO_PJ0uGI+ZB Hxq#RJ?geKa diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz.png index a5084e614d99a809428cc6165efec2d6735d3e51..d1184338ff15cb7f33ec9188dd86f96c7e86a680 100644 GIT binary patch delta 274 zcmV+t0qy>(0-*ws7=Hu<0002uh3Gy20016POjJbx0059Z0Q;sE|M2kOb^!5_6Vq7$ z|HUN#vortnw=LzBumAu60d!JMQvg8b*k%9#0I^9#K~#9!V_-l4K`70rApm1E!Wb10 zAtCk3iC~7fdSxhBNL*>EQXq&S7UH6$1QHTUb#Yfx1nEi(b$=;R1k0s{xPw&#g&+(D zu@pzB*@6NL*a6%<#xVC78^Rb+Az@?ViBN_m#67~sQ1=L%K;0uub@vb#KE}}SnGA8Y zSctJPBz%&M%^~hFHio)K*c9d-GupWaOMEHA;tT9VQ20RIni^~j4Ie~E8`9oAl&2p6 Y%+xw|x}U9001E&B07*qoM6N<$f^Md5rT_o{ literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^0ze$V!3-p!KrX;1#1+V%V9W5JjN#)%;meT>|G#Yi ze^llFX5-(>#QuNy09DCV666=m@E-=CqD-DHjv*DdpuEK(-qk6$`Ir?sT*L#p{{KHL zx+|K!%2R&UmeaTA99f~h`1ZG)4zFw6p%YHBG_{1d9*bx>!f4ER;oz!rr@7JDR_%NO zE=CU(vM=@?aC2lif2lhA=a!KCA9ZpyGXhy>S~v*Zyx^YlMNqPKhN%3v?RNXF@)wBx zb?Cmwf4-vn{ENfI-x9-WZ*fdm>O9FzzlT(h$f~& zsBs#&1Q-Mv@Byv`P{!I@P=TATpaL@|f!)J(_vKHpSzK3x=1+yXM{+8S+%wq1XVg9D a?g0QQMl~>n6}X}R0000kB&|r5@lD;tHg@EEz6GGW3=)Jqv@HQK&6Z&L4Lsu4$p3+0XfZ{E{-7;w~`YMuul=0F~z~;auA~e zlc5vqjHZJ<35;sV28Sh%88jMAY2-dojb}4)zI(98=O+1XG%} zuxv9CIJ+&1p~Io)E>q6!gFSDVa-Jr*S@r~SrY>QYysX}o@{D7{+%+Nz39~B$8Ul;> kCOEFFW{dvOvx}YKsH6VIizdMjf$m}OboFyt=akR{0871H7XSbN literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0ze$V!3-p!Ks~@G#1+W?|NsAkGKT-JYd=mD?y_X~ z|9R8LREGZ-d@n~b{9mm3|ES9Uc9<64k|4iekOnw_$}oAlIEGZ*g7RuWytkJ&@--;% zumlKrY5w?sKijgaWryX91w2pR2~Kx={!UhKW8z(Qsm;y|EmjL%R|>ykeZ(}2K`{J% zbn{u4MP2Oblx!2Rx&jrK=0Hx7s4*&oF diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow.png index ce1cb92394b5989a4c4ea11674d7291670f3019b..05ac2f30d6a5e09f34a61610e5c19288d6665e55 100644 GIT binary patch delta 41 wcmX@YxPx(mET8=6|A`C?4E3Hajv*DdCYsj@%=BU?0g5nqy85}Sb4q9e03{2*dyY diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_0.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_0.png index ac41f361025646f0cac5ab5ecc152b22e4786434..1b2440e7dcab3aedb81315bb59d5db3668d6fa4a 100644 GIT binary patch delta 215 zcmey#_?&TqL_G^L0|Ud`yN`l^lvaRGh%1o39LdmS$q?Y1t0BkTnXay768mwY@c-Af z|BtHt|NnpE#*H^_+$hNHowUBq4XB#2B*-tA!Qt7BG$1G2)5S5Q;#Ts5qz0yU%sf3z zJxxqJJnMLRT7`^fOGrd8v1repBGNEv-7^O*#uEaZ0ci;d%$It$txI5AoM7n9;L)}* zrt#oZ$&?98n3%l{IuseNWHJPCo1BtRIbgxLM*K*EcZ0z!p#|5p9W)q3-}18V^Q+tn Pw3ort)z4*}Q$iB}r?pM= delta 233 zcmaFP_>*yhL_G%^0~|1Ux;TbZ+=B8qfq2OY3{C$X4mfb$*ircSzqEN?f<%$!q=)t# zi$7mHdeFhS?{|Iru3z;f%yxbvZP`Em@A~%t|6(lxo|N*)M}{oRI8zulv8D7}wKi~O zswqA=t1$C|QRmS-h7(~a&Kp)9TrHWjWTnFP@Alga4rVeGooJfFyIFF!Vnl9xX3I~> z@B@!N3EdG0$VldnbxLe9V2Hls#CUU-qtwT&W6x{mTy#CbFu`q+>Eh}}mEIE!>9^Dv S7%~J;PlkEN)78%f#0CIfds|fi diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_1.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_1.png index a8bda2cf820b4881be5ede713132612a460c3b7a..991f1eec72a92bb72e874f4b4ac713758fc90467 100644 GIT binary patch delta 215 zcmeyx_?&TqL_G^L0|Ud`yN`l^lvaRGh%1o39LdmS$)IHt`~P*Vh8%Zix_W?b?#GG3 z|BtHt|NnpE#*H^_+$hNHt$E_J3#gj0B*-tA!Qt7BG$1G2)5S5Q;#P7(Lo+K+4--!l z6Aw?dgoHG!?OX|o2w@iM*eN0nMTw$bUOa3LZ5dVp6BvvnvJXp0%xK(_V4cl0=Uvrc4cC$YL>cX|Oshv4Cd+gYpHR;t33oRoId@%f$R2@(Tv(K>(->lc$SgNX0EEFB!y3?GF@c zP~c!)>EQD6-*w*FD65YLcdX`jTU0N*cIMY>R&&FxizkF!ObhC>UZ=FGE8x_*TPqzR zB<3ibdGE1T=I{+pwx&qKnQrG^-7#gI)_+B*=DCrive(alV)|h{mwM$^=Q6#7TF2n& J>gNJt0{}W0TC)HE diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_2.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_2.png index 6cc552e4fae83b4e92c048d74188370cecee9c4d..3d318e41ec7e7051986d01eda586e47473ca5684 100644 GIT binary patch delta 207 zcmey!c%N~CL_G^L0|Ud`yN`l^lvaRGh%1o39LdmS$)IHt`~P*Vh8%Zix_W?b?#GG3 z|BtHt|NnpE#*H^_+$hNHt$E_J3#gj0B*-tA!Qt7BG$1G0)5S5Q;#P8k15*!ELRWX= z#=ro96VL1vZoGW-l0}4TbwE&15QCA+<;E7qfXrM8j~NFwZk(HS-~f-vi+}_UWgTe~ HDWM4fJkd>( delta 225 zcmcc5_>pmfL_G%^0~|1Ux;TbZ+=B8~fq2OY3siT=octi)(s}KJJjVsz9~OZ>?9V8a z^dufQ)+_!0{*J=O_M6@+F#nSe{rUfYsVICmIDF<2%zoNK$;b6SAscA`{b-7zsW7fX4OT{oE6 z?+UC*WHw_6zp_BmX&U2?LoFH1A6&Js88EPl@jSlT^NwkT+N5H6yXTLY80Ks};{@}D Kr>ma}hz$VYDOU*q diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow.png index a980484735ad450327788366e31910dba41b6c47..94e963012747c6b49e7eedf25f89f454abbbeacf 100644 GIT binary patch delta 267 zcmX@Zw1H`YEQ^LNfAB;_k@{RG33(wlO)c{Y5%Ruzf7B~cJ1ohN@bI}xT1`V7_XeZYS%z~PircSc zrAZyIXe|43k2}hS@z1{(;)PE#)?{p5uCnDbvy|m>e)|L8_9|6BXIuMJci!hI(h?Jw zvq=1&(9+W@phW3;Eay5^8tbGAaB*>YP{#0aqVWIM zwaYvh&g3#oh>)K)WqGcX1Q2PN#L5e?%`{^GlK+pY`05D;_~sVm_L?bhYigPAPk@;z zQ4-`A4C4F;0U*f$BESI1f&eB@7srr_TTosvi06CGQLI^khvmXXwM$(`8dUH6U*>zk z_2$|13T6hKZ*$VvPGmEN87q1D2ycjA5H)iq6OVPkHbXb3PW6WS`Hw}qWqL)I_FW6n zt8P$w{%tFJ&;9h2_jepjYp)c~D{5B!G=;%T{?dfH4(C-Gc6P3^Qo$+H=S7!qobv2@ igY)k4f_{Gslh^h$I#&H*sJh1^1a%mLr>ma}hz$S>1af@< diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_arrow.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_arrow.png index f0bd76ae48fd46e445c2756cd989e4ffe1272106..4b720c5ec6dc7d82349fc6478e2eb8558e59bee2 100644 GIT binary patch delta 305 zcmeytbd_m>EQ^LNfAB;_k$Pie<6I{Rc_B7mJwZ(^^9d31K=y+&h7en!0N-4o)W?a! z%RCr>vYqMbS|+jokE#^p_Wu9>Ki6Mke*(j_Da&{5JZz@G{r`2Xs}b*+T!y=M9{4Uw zTgSk_z*Q3D7YwAKpm>2q29P<+)5S5Q;+F6Ew|s{cIOzov?q+I)?B=_~_)G0k)=j$C>PV~sP*K!p_%4yvKIoZ?I&t;ucLK6VkvUiRE literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!i-A;2fZ707OEY>bGAaB*?@|Np$jb|{0nz`XD!zJxK%}W<{-BKE<3!eHqy&-ItcbpjzR zlh|E558u7>Aiy`bAh*{{fqQ=f%r1qJAirP`=RX6`mj6H+N`QGF0tldrnLJ$_Ln>}T zc{4#g-}ATm4l8i5B}DDs$y>6(Hsku?-}_Tnt~>ppt%h@gJi~&A`ITu5InoS=b(9P} z8rRK^F4SvLP&X)Tk;q8D2}#y!hLHq3$gj?32JJYPl%8QvLBQ& z1o-AEsTu&KK28)~=D~1HOY8qp6`-1(nwt7%zB4s7#idlVOkxXidt(|qTco8oow>L_ zf#J)SFS+94W(wT@U)P?=W%$GLml0?aXGxG>Fhf0%1qQ__vljvx^F3W0Ln?0hp1;j^ z$bf?_VbxlW==1OPSl0fZKBep&hxrrkmOlbc?>mdKI;Vst0KqAMB>(^b literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!i-Ex;$l707mRafyhC`10k8v9a<0*R^MI z874%?@6^;(QZIaoXOM0 zF{I)als6y5^F4o?@2~;~TS83vg++ajvR2Qv-Sgj@?{=x=oeBB^pPV(T7UWkdF~sf? z6A?5%et_xl?zg8~=W;6+w3eH{xO8V*Znwcz;hQgK?^`gnl09hE)uRnZz}HAc&hz7sfNyzF96@iwN5q5Hxj0}imyTNar$F>dvd3YF86 g;ri##FInOu^pA1k){bw?yy^T4VgB@V^>YES0eYp9=Kufz diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_pulling_0.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_pulling_0.png index ea292605c79bd72d852ba3969e06c3206f42a99b..181bd86de500a4b0ccd8cc178a608eea41239420 100644 GIT binary patch delta 288 zcmX@lw1sJcY`umqe=q|BgKL0Kh%1n8Y;25(h;VUn$#s&D7h?0(6V%i)pAaDrVLvEi z0E&N{D7?&r;r~&U0N>pG2@F~$u?4xkW(wT@U)N5XvRu(tYZK5Q&XOQMkiig8oHBbM zkTuoQ#WAGfmhU-Fp~D6oEC)V1)f+hNPWk_TC8K5giv_D*CNVek*89(7yk-7i!-83p z^$rA=>#8nY!q>z8qC8u-_`BEwr}t_piH!0umbNOioYG(MT;j-P=H+VBk|n-0O{>}2 zv*DS}gZ`Gl#of-E_Vc};r7rp8&^F2JzO_wiZ||O;D0$fA;hgK02Q)8deb9?9@S0LD dnV=;2iz#Oj2j@eVmx3V2db;|#taD0e0szRTa3uf$ literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!kzHNYpt707OEY&ReKOfrsUSSyzt-6Vt6cfcNEM=p00i_AT|JSy>yHK diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_pulling_1.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_pulling_1.png index 87f084d71722799947d99f3bdded83cc81e5f290..faf99519b8325e23412c2c64b2030dd6fff88eb9 100644 GIT binary patch delta 279 zcmcc4w3}&yEQ^LNfAB;_k@{RG33(wlUp+xhE%ONx@<0ZV`=E>gDE@Jx@G=jE|3_5< zd~>x-VheJ6_a`uzDRBRPT{~^c@|k7~XL1>)6)uTjU|`@Z3GxdD(hyLbGJ7GAHOSne73Nt2=6F2jhCo;WVv9tQT-+Zx-rw?YDNC(v1pA~wG>Ez3!!Lxod z+WO9VH&fuP$nUU27A3|@bCySM*0g@Q_)658bQb#%4b?SP6&d^;*Xl+2`2O%ek=gv4 Zp?nR8ipLdsO^{bGAaB*?@|GM@}F2jTf zd3hnWnPvFMk(NnpfNyR=Zm*dF_x=Q! zv63Z0e!(El|NkHiBmaZhKp`+-@^o=z&95t^>L!`G7pCT zM^&^;V)rL76y)~)e_cCm%JP|J3}y=4XL1?NihBn#FfeeI1o;I6X$UAznY|Fm>i2YU z45_%~dp=y~umTUuh0;I~6`$hMfBmI6jc0bOubm>xkWl}~uu*bBC6icM=vhze2R)mo zO$rKPKgM}w@z!ZOe~BtM^_NX-<=eAhnpo3>T-ycnwky~)Tz9E?zFP~gX_xH zr5^XLs;>KH^!(E4*s}Fpp4q)-yVu@sDSoHk5c+Nd=b!1!VK<-1&+us3mwSUlr*3h> RGmtAiUHx3vIVCVQ0RUB&X(a#v literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!kzJHRKz707OEY>bGAaB*?@|GM@}F2jTf zd3hnWnPvFMk(NnpfNyR=Zm*dF_x=Q! zv63Z0e!(El|NkHiBmaZhKp`+-@^ogK&W3&;R#pAEFDKu5X*z%C~7j ziB)uDv3l#fJiS+%O<#N4 mrRbe{!{qlB27jhA``P`FZ|Ru1Z`yILHmJ)OJYD@kB&|r5@lD;tHg@EEz6GGWMdSdFX!2u+ z4Gq7GlEWDV4)3{fg!PO;SP&1RaSsctYXVQ8!C}GRQwaen2?8k#m=e6by%~&+tgXzN zSf8zVIfHjo)7s}Q&wUIQE9(}j&$y_jp~0E#(JU#vkf+T>YiIg~*7GZ>87u?U%QEh? RZUx%T;OXk;vd$@?2>^-GR73y( literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^0ze$V!3-p!Ks~@G#1+VXP{#28|NoB@h5x^bFyECo=ut+4y|CVpPnrp7(}Y;DsF> zFA~-?dDSz1F}XBzQ|42LCwtOErQJ-n=ZHCFGxvFV{D14}(w-=)l7I8@{{H%Y{&$5; Rn%g)(!d&R->gNJt0|3CvVxj;5 diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_hoe.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_hoe.png index d1ce1c1378e12bfaa333695ee3c51483e9c417ab..c4030ea90376a4b79f9d4e4449a0513e3350742b 100644 GIT binary patch delta 200 zcmey)c!P0*L_G^L0|UdO))#g_N-Mx8#1%+u$Z>m`iFR2sbf&9k_{m+4WcWBy`2SIr zkEsm*7i<21UHkun@Bh!67HZdI164DY1o;IsI6S+N2IRzex;TbZ+)7SxV9Lo1a4U0X zYB`v5Zy8tWRBI{Xc>J+-dk;5TWKqNsR>v(y!P`yklhWj8l#Y*kQy2w1~me)z4*}Q$iB}Dx66v literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0ze$V!3-p!Kr6r}#1+W?|GM_$L}3j%?k-D)|DQK? zrmKHUW%z%=_i`jdhM(O3#hU+*s(6}-LUr+#1o;Is{6_{*875B`$B>F!P+kIv_jZys z-vI*-XUz)?jd%XWg8KcL&r?j8 z66U>1-S_Ty1iMm&s^H0gVN(ws4&~ziUN!&Mp~L@AJpOb1VPS<%6$A52_VrM^7(8A5 HTtI99?D$zz diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_leggings.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_leggings.png index a0fcd9127df63af45040332d56042a52b811c9e1..c3fbd4246bacf9441df78f3de17cd2d5150aff62 100644 GIT binary patch delta 242 zcmbQj)WkGFqMn7Bfq~&s>kB&|r5@lD;tHg@EE)bERk<9=@NuH>gEEHyuWSEb@co#| z@PD!9e;{aQ`2Ts6TJ!rKK&6Z&L4Lsu4$p3+0XdzXE{-7;w~`YMF!l8I@;aInU)!V- z$|#`h>*>jQ#v`b($w{D5(I-_t;k<}E#K&e9-;t4GVTC5fqB#c=l(wihV1IgyO o8>1OIJj%`|aL*6?et?nTi>7(P`$tiqfv#fkboFyt=akR{0PcEQhX4Qo literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0ze$V!3-p!Ks~@G#1+W?|NsAkGKT-JYd=mD?y_X~ z|9R8LREGZ-d@n~b{9mm3|ES9Uc9<64k|4iekOnw_$}oAlIEGZ*g7O+cytkJQ@*Pp& zV7buM6ZQ1}{_=y%JoL}XmF1sXn0RlY;*rNcw4RGroY#D6!*o-M^f&6ByRsTqc;aCjUaN l3%`PJ4gU$2iU02<@9(eeujN0>er7hWB+SvCu6`~cHUMp_X#D^H diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_pickaxe.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_pickaxe.png index a34335eb5c521fcd3a7617e194d8cb692fe862cc..3c18ca0b0b58ff79ec3ec8e0bd6403b7a1493815 100644 GIT binary patch delta 235 zcmbQi^qX;lL_G^L0|UdO))#g_N-Mx8#1%+)Su$wIaeJDHUXEn=I8nGWT|L83?*CDh z|F3I5rZW6rtoi?f@Bh!6>NV}lfvOoxg8YIR9G=}s19Iv;T^vIyZY3uiV2g>7Ibd?S z=Ym+Vz~Re*1}2<3hYutOas(cU5m97Fo1xjk<-j75qQGO!%Ermq!O*;f!KI;4DWpMA zi-FOL=SV~7YO#jQb=JH68}Du|TlgSvLv@&;!Ht}jo$35%Y%dvn_c(kF!P+lX5_jZyu z-vI><7tN%jO5gYAT~(X1>D8i_ry^(Y99FLse6aM@gzwSLIidWYr*;T@Phoz1we89E z7ZW$^?D|$$q-)C_e_>~TPRg^r8z!EgyT52bdY!iF50}&vzt1Se^thi~`dMJ(@9^!L qT;vW-Y<{9 diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_rod_cast.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_rod_cast.png index 95e5d8d9b71bc75162b91b75bd16576f9d8f6484..5672d13ea70e7e41ed09d7d54383a4b8d6163c24 100644 GIT binary patch delta 41 wcmZ3>xR7yzET8=6|A`C?3>ls-jv*DdCYq-S+)c}s0g5nqy85}Sb4q9e03cuuRsaA1 delta 53 pcmZ3;xR!B(tP}$TFnPK-hE&{w^3p)OiP~ubP(FjFtDg&q4FCaF2xtHR diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_shovel.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_shovel.png index af3eaf3ccd2dcdd96571f50b0a6d6d2b8b73973f..2b157b65145c87a2820de3ad4ad4f57e34d14c62 100644 GIT binary patch delta 204 zcmey)c!zOm`iFR2s{C{2BnXZ00lHub-;r~Zf zGW_KJf8O*lmEr#d-~Wp>14>_1097-V1o;IsI6S+N2IM4ox;TbZ+)7S3z;|QP!XA-w zW`nuU0+|w*Y}xK0;UjuZKy{T;K%+w%hjVZPqZWgyD~s9!7U6(aE&~HD0|C|@=FXD4 zuQ|QBvGF!P+kIv_jZyc z-vI*-7I9{~q|g7~FJp~y^%6c>vN>2GjKM#Rr_(3oNOn|fjl*gk`2$Ab=XeSmV`a>u zd}a3L+8G|`xxQ@c4fo)=kG6hWX?MYHcU!e___g=n3jaO+^6|Z0UV#JKL#SO0p00i_ GAT|IV3s%iK~#9! z?UKO`gD?z3Nm?%fy0!oRwF3^cE^wHTb|RPRIZ7H?9)`A5m47(|VSbTt!tsK)%^GW8 zO^Fx9C3-ur?iTp~Q{s6NZI$^m4kEjvI*scq^-~&OJDorUfVuMn;Z4E`rwiUTBh@|% zh!-VG%I!RIE{P8)==}f=e(Va+`GNA2AAikD%PDHLkV1h&$a-aYJ literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^0ze$V!3-p!z&OAs#1+W?|NsAkGKT-JYd=mD){x`w zvSj%Gc~fV)`o~m;{}+5OM>1si$^Bof`TwYjr;J=fkn=hB zGzN|L#j31qDf8CepB{PYW5bdIuOGdd{MGbut@n~tHirB5yssO63$(Z!eR|M**_uT? zMsEhoflcRcN=PJp4fMTd;o;-r;r%=sFduok`niDE06W%$eEj_868^^hHkIRLu3!0GPqS!2#8hnsW+fu(Co_WM)Q0fEk>c znqa!92&#g?31XLvOJ*iSfE_{^8w)@kzyhI^lwdAmMi*ehAz*BbQ-B$Vp%_}q%W`xCT zC&QPClOGBG?C4;5At<~dv8#*IV0&`0s!GWz27T*|1+LS!Us5?c`*qnm+wCne@@F%x z8?+oMRxqzkDynYT@k;W^a=CTWEC1^KW6+77%NS?tb<=d!m&?DDf4+Li8EL|t1a%^V Kr>ma}hz$Um$!`Y$ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/wooden_chair.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/wooden_chair.png index 0268099c328830bbc6f0708afd4dc277d7499478..16a328048b7dde3f27bf245b3204548c11882ed1 100644 GIT binary patch delta 269 zcmV+o0rLK`0-OSn7=Hu<0001iRA) zmZP9m00001bW%=J06^y0W&i*HwMj%lRCwC0kUI{8FbqK5sO*>%fK^W5bgvX=M-X!Z zxc?DqpdXT@OWzXZ>DiG2^SZ7JZs;OQs$o{uLv%<;4J;xuBY!rC$uq|uCOhs&LDV%j z2!YvKZiThc1Y2m+ufldDiL34C5H|X~@L$ouB<$n96b`mR&Z2JJCD~qh(+-vERmYDQ z9@mPDOk^X&P*rfIZJoOg#5+65k+0c6fI0X0z5n(*+t&nn%`SK=GvNYX z9D9S?;wTU2Zxdn~+EhHl6+@?nsEYF3+_rXOn(AehOjm*Dy!Jwq&TuSFz4W&tv~RfVz$6U$ON%XchHEh+mh)NnR2 zI%jS>RMz^e>;1vq&c8M#O85>f7~PkrCt^?PSEQ056fj zoMo{v?dTu}XFjIN1DEcGZf4v%kw=byxi7g4?Y5tCOgDOO*KS+wGnZe=i(Gz#b6)oY XSn-vMC(D0e00000NkvXXu0mjf7w3@E literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^5kM@?!3-p!Ks3N7#1+VXaCX7;+V;xC8efkzPBoJw zOJ+kAu$Kh+1vC5y1E>&_r;B4q#VsiBIf%D)Y9L>Wf`D_b=HCAkzb7*|dX$+zFjl-Z zg2Yb^wfw@I?HeDhn?6w_^{lA&#h{#{rX7n5yY@{I z$<{t}yaI2gyh;`i4sO=k6!>gtKS)BY)+y=}i2b=DEQ}w(uHT%I56P=lf5^-oEhH z7O3gVcJ?@fKbve@IA`mPE@ju*`4fMEYNmPi0>4|j(Txt0?EA9CA?5z0B7O(<$La0P z);*m)<&2%?AYZc8J#c@CdY0_3O`XkVgJ|LO=7szHl7Hq;MxK~)RkE{sTrl=?s@Umv zlTOogyH!7@+l^#jHr(%HZ+?d5x0}64;IBvzXiH&SaDJBoB*0Z{_Rhj)KeIdU{o{$n zPMAs$J9r%Qu$d<|TLt?9IVhS@etV5=c*4TTR{1XnUSlAvv1@r^v8!9X^G*-8d8;>? z*ybn3ZGW=-QD-kutVpcBgW`tScOu7;ePj>7#sjh`8GtRJL+Hko4(B)R z7#mYUX=h&o*qAxO9LMnMkUTkk%i2=}xI```yGYMqG0xZzD~E1MUqy6euihE^^lh9u z+@8w?-o6`qd2zw$fbLdNwc$}8ynrMq2zS4&n5e8 z-^~-mir^C`dwwvRRkSDQqCE%Eq3lZ^82lm3p zMy4lcl1+NE6O#>=NH(Uu+2;kqMh?#7>7Em0<_Tj5_Iw{3n{9azJ8N&t1#R>sgq?ZV z$$uQp)mRmojrRzvF_u8|#5ihjBil+dEo&EA+$ z6~0VY>~Y&z#o4;w$`UVo>1NLfhRiek-hWHk^S*4%lg;qEBu+xvix#$gSM$3IJ8`j@ z*-1-&$6%iqrr(9EsQR*5L&DT!`OUur^2D>A@UVG9*8IkNFra7I7utu7lB{JsnFD+8 z91OkebKZ4Kzs10~XH!LpZscTFeiOkKeP>Uc)3RE}I@mDU$zF~z|LeXiBxYSn94SpdM_#9<0_7!f)-JqTQ4bwzeKDM1IqtN+N)5kdV|} zy+iu2jkP9;%dYE==ZRilikXZ?W0P7+@PRm4G-J#DPQ{d8;fj$~J(F6yNl8mpQc z2wxU!yJML4X-l^2Xw6_)-_^sYADePB)IT3)X0adX+(!-an{8||Yt-fg`#XCP=k~H- zyZ70UE{rB<1cV?ld?Ee9~ zezv6-+jHKh7u$2*Cmvg#f$EP>>Sv&`XswyFp9?cPfDzp;UDeLYU6#_53;V!O$4e#q zn>xO^QlDDcCp$Y{`fi_loL+rZpSpT9Pputr$vRW1eab!(*ZtCwePsXF*m|F}0G%&c z>~DIXHKY5b`Wfwbab*AN?7N|2J^HKZzZEnd<8{PG6XfsFYPk3ZO>uOHkxlGR00000 LNkvXXu0mjfeTWjF delta 1526 zcmV#JjA4%000000000BbW%=J0RR90|NsC0|Ns90000000006>L_t(|+5i9m z00005aY;l$RPCLMwxcQxhBr18@%wSuzpqWHgYG-$3E0<9o=RKY{M4nPA5_HHr|L}7JCvXmGx5}`*0l-T@OLW z$F6S9O4!=ZuAWuJb+j!Iorz2&$zDFd=5=PV)qRTywttrG`i8(`5jmcGX(M*^Fls zV!zlg_J4~#Ha0vGTaCM)fgON8#M_wIc%Zg_#oZg*$mDAHp4jMV`vl`-gQebdV(;KL z*vqE@8}R^kM>}>IHfE3w_Bzke=Is^n>)FNF$gQ#0EOwi=k=oDFeXqsFj6Gsw?!B=} zf>hM5Iuy6OQrnoZM{JxiX!LeSZMd(*R@^JL&VLuQV~4d7WpXLDncyX0!yVY$w5xif zDFCX+udz85TSF$WU2qr*TPCqLyWHEHH#Ij2>@9*{g3Za;GA9xUuwejfp2gOUypP?b zni8=&e7A0P%G=)oy{({fRno=o8Vji+fozrh6*h0Gl3cy*-Rb zw66U&5Of11J?y>-S+YpL&q>+Ll;`c3k(&7~RnnYc(>kHIWA?q(+Z^?61nzp<+81I* zjO7PxdA=)Uv6I?9SO;uLz{VO0CfKF59e?`zZtT4k$!Yt5*d6<1!omM;LfaQ%%Vz9N z)%;}K9s`?4B1zavdeQD?Y*QIcQ<>HFej6r|kP;CzY+D&Cv<-Xk!EP;fY;VHG68O13 z336}w@4K+qp~1J*CkgXzb`a6Y+meDE(KdM4UULIL=*1o~u8r8}xuA=uZ(_%W$bV3x z(dA@pz;O(u=Wcv$cbeZJWAC$j@gcD9?dbf@E!cYwFqUv|w4L})6L%-0l1NswGJ`4;T-1fMtMG@iHXCin*P zw$4VTMFM+QyFBGOL?rQmQqiV?yMJfn9*@aT!fsjR(+yiD;#^;W9rR1&N zj(1!S?&fi7xT{La=rF-ekVJXxD~j1HfBn0gW^Zd=y?&d`Px-l!!F_+_^kV-Hupjyp=BNH( zd{}P!W(fCEzu329*KDhDA2w<4o!hXp&CLU`{SBIifai|1i+k^k=*mRez9Ndcu}dwH4kw8S$S-hYFx7bKRByq|LpY3${3wqn=+KLMYMt)685 cn;&Wa0S+3whyVZp0000007*qoL;wH)0AV8m+yDRo diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/campfire.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/campfire.png index d64a7dad6f7ecec864d34ac08da1e46da4c192ca..2d00b20c014ce8a8583176562320ea0be45c7406 100644 GIT binary patch delta 337 zcmV-X0j~b&0^kCW7=Hu<0001ewUxdA000$GOjJbx005VLhs30tO-N=5CNz0reBjNX zcPOKP00001bW%=J06^y0W&i*H`AI}URCwBzlU;7ZAP|Iog*AeA6SwaUjt`JTc_-B# zAZ^9{kC55LKS|UEd$dA>^m$keROdxiQI~H&s@(*iORA2$kbkxJ1%3VkW{$+n>) zZ2?b9{HJ}Z$wZ9>Oz$&_r;B4q#VsiBEr_>usw3ZF1s;~iACLX7FXBHorDerhmRLpZ zp9VVKOvit&NRC||>GMmzBKElC!r4iYX`E%{Uil=P0P*Ry<)cL&u7rStFkYA)ib}UZ^g%wZ7x+*Omb*w^SbI| z^}Ap4`0wc*9li6TEkxZctPhs@?qJW^q21Q={azlg&Fb|J_rJ<}CtY!Ye~b2yje8%n cR>tKYp8b7!_%GIZ36i&=9%t}$^>YES0d5D3t^fc4 diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/category.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/category.png index 9058ffc9a3528e837e40a2506eb6dccf46e8df4b..9cc4bb3eef9b426f4a264eae91aeaca5bf34895c 100644 GIT binary patch delta 986 zcmV<0110>22;>Kl7=Hu<0000ZKTiAr001FSOjJex|NmS*JGgT|mwktlQalMJG{mHv z;LV`UpHxjqW_e+JTkAmU00001bW%=J06^y0W&i*KaY;l$RCwC$o6l?8Fcimg$sf?N z!LAW1SvVY|~D@qp!z0x20Vr<3o z`{?P1QK#Uwg)s#x|*!(LT9(h zVM=GU!R3{cvCF>6l~&e+-B{fHk3Cr{%r57moSSvoEQv^L0@jGFT*r6VjoS@dR4cnw z>8gUYn2RQD5`UQOI&Rpw(;K%fJ4r?P-FU2jz*?+?&>NE|ahrhS7}T)8+8*C*HlI#v zy=~aS`fYwxiAYP4u5=m_Rn2Z~z}}+%H0&?Flg+SGa2oJ>sr`m#UZr(Sl9g?5pZSGl zvt6CleOcY6Nop2=Bq_8sY+$EJq)mIDd+ae=IqE+Kk$*aDF1dt#k}(b&egqqv0}QdD zC~k`5rUH@y`*7vP8tkQM0I6{uHq-mKE*lE&&z4F%Ep;iZ%LbaRkTjV(%`-cg{%-cl z9+JcH+6-Ld8pAqm!c1}8khTAa-Hv>$`%Y$VEKGGZTi3noH`K$BO zFqC3WUw;PHmd%5+C1U>yE6o1D!s;htFGpq~J7p|PV!UOKSu;zrP>JQ1J!LQt zmkW601a|l_m@EAdJS1Z4C)%MpBVeCDZ?+_1^MA;GVQfaiW|kd(u0rhKb1Y&9zcxG) zo3c#^`;u}DK2J8u_40YMISE@v_RC`v+#}a)MRISiT6XwnlE-0Fwh6)Wj%Cw5lSFo8 zNA_!DQ_fZKy7MBgJCyI)rey5JV7ee;Pk}9R5_UG%?~xZI?5TN2EeZm5F^}IeBKt{v z-+$5U;B#!t9xVf38pfyFZ~yNC$1MCnaRu*B!s?Agu`S03Z1_V&Q2dGXM~Scp?d!GA zQgR%BQXj(oY@NyXu%)LOlA#z8@SE|z_1=Ft!+viE4-V~e)GzB|Csyv$ixqNCi9xc*s@9obKfjn7#J&^yav zU*mJOtNvNLG1}o2*^kbiQE4&w?E7261Hrsr-TNTF2L+w}0SmP}y^t52-v9sr07*qo IM6N<$f<^W2B>(^b delta 1021 zcmaFD-p(;WqMn190S*)cd_r9R|NsBs?1JgF?Uji&F?QBFiXG0)5ApR#<5V-56l8N` z$!w@{?vfzCUCb=m^(pM7}4WZt$(3mf;Y5*ONgBT&+`eD2&8$=`mJJ#@NwT`O)^Xrl70 zMNZpfcE4J;DY*1VSoY?S_N8@e)?Zs%-^(t%eDV~g-OujbTv}Xj6M8%+T;mmqgrYSN;RjT0-%6_dU_d{dV+L$h;A?TWY8rE1p7NlCXw?|ynfWUcbIg);H~ zJ}wg8Jlp;pNA&NiZ$D~1vus(E{I*!>^vKs99*ee*c!ib` zo){@M&T1f?x~)EX`@imOxBnH3?+)2@{ppRw>`B~WLI3NfZj3!NVN-3Q zb>oI}H#X#MQ+KeqXMJOXxF=VuaoG*7xJ$N=r|sLs9e%2N;=3a(x8tNV=PjGQPUSdP z-PO8zck5WxEqQgD#bg(r%c{P4+ul-myLs-*tGgGb>Ue)~(_eCrE4TX1iH+iH6YJB@ zJG*z<9=>4s{O0Oe_nLp^x_iwme&h1CxNoXa`puWN`aRQ>auT_tZyXZaw&6eP?7M5H z)GAefkPbh7Oz_Epvh$V+AN-gq%y!w{?oBFAeB5EXsqoEQZ{>r6)hUmKne~>d*ku;v z*l#=Zlu5#E#)qG(#^1i(xcc?U%ngn=<|i@B*PC$wjh36jJLkrPO_q1Op5EZei`o3< z<8IFTN1omEsF*j&N5A3FzRt7D^)=u4Z?xpK0IQ#UHhF=>i3F*|i9es7Nc$l0r2B@A zH0R`WbI#fKodsadZT;Juvuu0NrQH+n^?u2-tM@Ycn>H)(&y62nU61z4K2r~D6Rwv& z_@g%|^~Z+2*X!$}CH3AMn0j9gWW~Sd`*(BZu$ix8|7KESpE$3`{`~xB2a`|vw;Axt z-8?DqKsmVfz|>5;PoF2p6sb!ezF!o#LYpN`{a42`sa;3zEmzr9b>PB}xR#YUTwDJ> zpT;zId1GTxZu%mV>DMa1oJo~hR%QJz`)qhw@4lTvWqERE9@p5cD-WD)yE$JkdUkE# z%{%LIQnSuP7tQsPnt4Ao_ue+^B2GvoeBP~9yJH^nujf|jt1q>`)_l+wqx(6ZU*eG1 oxA4uny9?fY+b{g#jm%r2%Wv1Ge(8<>y6i#-EQ@=(`niDE0I=5kNB{r; diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/cooking_recipe.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/cooking_recipe.png index cdddc48c0bc0f16326ceaa7811c3d9aed4519f8d..faca7a27855a7cfb3d6f701b560dc868af0455ea 100644 GIT binary patch delta 1266 zcmVX071>001FSOjJex|NoLwJePfkTs}Lvb3h3uG~msk z#H5?fpHz8ad`(DZzS5;P00001bW%=J06^y0W&i*LherI@ z!RH?0vzQcoHBrFFnr0o+W5De_kc9MRoI_r~g!EoY^OTilwST+%T(4wpXo`n6rIGgM zzeh8pkJYGjY?Njm(CV9I>qNE(wEAe;bXTU?)s01R*$+#SX5;65?CFlAnl0R6C(Cw) zBl}*nblF0<4pQtNugYFtUcNxOeG<>tsNafxTjsaRn$7du+py<__%F$0f+TP)TmELA ziCsvQZ^V{9$$!W;d?GC)+liC+$|fXV5L)bcHg;j<4#{g~?qs$j`^Y}B2Vui-Yzj>9 z*<#_**2Fe+Wr^x2SJ z>?)6$&NkMC6TVQd%@7{#7UTK#IAVIV9(U@B8g3i%_eOO*0N21Lw~mB%Z;{FLD48%c!?&mNid%$ zN`JP=rZH@@R%uh>r1rL8YkflgcGj^});Lu^`NrC2RyimgrPWv(T*n%0TIEiggkZ91 zlLNG!8=xOs3St_2>tAn5TsxTN@hrFMsXp6Kb;YITl*V`d4&8Hs*87Ze~%h?tObe zYfb}mEMH%O=wyS$~z)uhfk`ruzy7M zdbC>m*_t=f*ek(4@tm3Ju1-40fk+%~-~ugy!02~F0W zO0Ac5u`{9R$Ud_FHMX9!79hIGV&CaGYg&Ahdq+E;9ocWrz8}igqpz#JjA4%000000000BbW%=J0RR90|NsC0|Ns90000000006>L_t(|+5i9m z00004kx4{BRPEf^uHzsK0MKSIT$}&@;CV>Lqp|M;W@c1}VkNEvJ`kUFQNJIx-TPP>!rA?l>tuyrJjQ4^tviCp%dpM(%X z2!ufi_xHcCJT|^0`E2=$^h0c-<3DMtWKdzYc?r>k?){J7VVfYCk{t~aljdY6Tav}@ z$R?WC9cL3w?0*ioBy*>DcQd7kjZ6du}$s8`%Jd8@l_SU;}h_KM^F*-~C9H z?C})NNiemfVj)-kSp?9_xNabu8(1J^eL@4xz zAKU~|5u3)c3B`sVL@Z!~%^ngYMCS%?2^*~5aYU6QqJMLD7l~vZ+ij}5H{4R9tY&*v z6W+o0)g9eFTjsNG=#K84S&ef6)FyRx)p9@{dT`dB!l1ZPTTk8L2AEeqL4Ir(qkuv4Gm_ElMh--LZ-48aeR z*RZgMF@GAcO(`oU1qN4{q3!0=jD0+)+!F^%x?e!P+RLY5X#w*F2&i{=da_i&2Kx^s{c0o?-~KA+gI$Gv&nKe+&u7~s)hL@;6I9Z2 z1IKPv+5kM8z;9=iQc7BGo?Q{!>|7G8*yh+r;eQ5_$_SFYmV^q}rfH6`&09v;ZhW() z4Ue&}ek5F#tf6;|eU%VtBxXQvh%fMeS$Ybw@pE3n;Plr|NxPj{rWuO%uKRXdZ= zWF2{u9dB;|&W1gu?#n*jkY(QoTIV3iE^98fQ|>A@#n|E16I0Hfnu+Z;Y^vy#l^53x zn}1rd*`X9f*j`*8>|j2Hv7NEv3TBk-zME9U?@~IwU(79~y3h79R$Li2INeR49|2&O z4It3|ho=covYpN=#4cJ2ye95}Ng1SON5!R0@zQqIATl=DnAvbDyi3@&KFTgw+To`0 z55~4X=x5ka#ty)nuz_bMOY8Om*xL^{*MGNKu^dUv$5%n0gg>GvLUvf zFmaHWZ3>Zgq_(=4Id9%G&vAe|of<4HTM{OkCRJ?IPA~(T!sBn}3V_ z*x4u3qHH4S+W_ttePCsf*n7@>*&BXv+ltuX!05_8?kCwWcTyH}_w3wpJ5LmENJR%T zhSbM{y?gib+Z&c1gXv!%clN=pI^=&V-%iK8zC7eV;AaU>ut%j|V!!k!%y0d{_^W@O zzwU5Y?2Nm2=47wCcV=L_7c@_+in)mZ01f~E00000 LNkvXX00000GNXL1 diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/crafting_recipe.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/crafting_recipe.png index fde831bae3ba36620bd8d31482b25b3f419c37ae..892ba60597699a8b487e00b5265222cf8d3a76a3 100644 GIT binary patch delta 1743 zcmV;=1~B>T4bu&f7=Hu<0001P_wV-r001FSOjJex|NoLwJX}6Imwku0b3h3uG{mHv z;LV^-NM_ETRC!^1O^@b#00001bW%=J06^y0W&i*NU`a$lRCwC$n>}yiHWr9d9xA)qg8c>?LE@g1xAUsuKT};wX!9QI!T8xWYZQl&#o{O0b{nQXRYcnH^QZ z&P}!}oU_eBm$E5)f298YQ3-#S#jdJ$OmWHnpvQArmbPy2Xo4jBH&x=N)9Dv1>?d1y zSt#8*$u3{YvKDN854~TZ{*>%5p~|+|RVDSeWWQ89ihtt=12cawOZue|C$`-yHu3F7 zu!|SLUe?8~*zu#FXLZfa>6e^+7r4Khy|4Gj{pm+Se0Q_2r}R%?nvCxvJ-(Gu62&!a z_RV#Wosdr)_LQlNu#@v(gw1^7vbC`X(B$Hqdb-E9e8Q}gt>a(V(Mp6K+lv#2-P{^& zcLuQSTYsY#V%xu%waJQ`&z7^QSao z5g5VWfI9?ZJVG2gaf0|q6e${+ErSB{53Qg6Gk-E%@9UPDv0>&78SmrP9qnuA!_gq! zSUAMhEt3ou^|c=xx=6zye?osYQ--^&Uz}XM67KD8c3xN#+8Jl;r!^5Vzz~16S)OpR zeq-#b*BRll!9H`+W```dkk#X7%6?kSWImy?zklKm_&|tza+~EAvYNe7_A8j_{5>bq zyMM$#$r4Uh;BiZboF@B|Bz^Et4mrXpn+<|5&ctRT+6!=_{XHK0&Sq2TQFdxdvDhpI zL4?io0?J}fB^$+bvwX(e>lF62#g3PyNL=V#Y;aCC2>3*lFdWWy4XYA1UnrZ6LTt!l zfPWv-O)_-*zQ!u^Q~6EXMD9q#W_2f;tA9e_hjoi(c6n_!WRIVd)*MTiPf(B@Xq_B3 z09{Q3YaD`YJ=d$+rWQ6=(8)%j!4NOXxqf^nyTd0A`VNv z?m8&1Ic!!1BDu=+_a))Np_Spjfxc`jPAF0^DRD#Q1z}{RRZt2*h+li#^96kqx4{d5Ug2%~H1QZ`{UCi4&+r&*f+rj>9(V zrIc;6VGA2Z+a0sVcB#Bg+4?t4K7WyHV6wZ~9c(4S15y!SH7*C@#D^huzl$2_Yx!$I z@#Rd5TM%IfYE{ietcJi<_%Tl%-(C~@; z12!*{7AFssy;#ji>nI(nC+O*Mlo*4vlFcJ;8@92G2B1BMuhgf`JwEU`>cyJ4Jp!fO zUmr+iuS;(Y23vg(kDadDTid-;G*-kkjvET?1Kp=0;A%DPbF|n+fHMbsG zi|(+DrK4$Z4SkeF?#SBzkTt;Ao`r$3{|9V;Z_6NdWWUcKc4WWLcx<@`YB+xC?|~wt zmFBd4UzlA1EX%ue@9mYlQ_`n5?uMbvON#wfZ{J+&U#;Dpotc+@clSLmzUW`wm-eo; z9+#XwmBz2!Ephpm-bmT+?Ef0utg{Xv`;x={YSvlX@-O*&w8yh|_P@^FoXfV8Uqk<` lAh?aU!;T@yACvX@>>sk8JD41EG9>^2002ovPDHLkV1lgBa#{cY delta 1768 zcmV#JjA4%000000000BbW%=J0RR90|NsC0|Ns90000000006>L_t(|+5i9m z00006VM#({ZuI&6$QYnliTSV$Zvtclc|20e_#iJrBp35l_NC-oqYc;$j;D zR3+#6d=+SG4(tc#bN>sOw!s!Zz8u@Q>-TO)LnFUkfemmRgt)kV`_;v7dvZb1*w-nL zf!!n~;jt}L9d`2wunPM!k_2`rp4SwJU-UF~)JQHV#}52H%bJIs^du}c`Otd#2sU&T z88&;1e1Bav<&I;!S15RbB$}H*wx9+cBk|_uf<186!?-!@BX$&WtNSd8#lB+R^Pgxx zX-2ob5e^&0>Q1es`Sh+QU|Z(POq~6sw&5YzR?U_=;#h91v?*-QXWODEx=z9)Y#UHz z^ez3d4p8A=r5?ncXl}5NQ1}<`NBr<$A4rj-O-eNNj)^Pyzg z_RED^)jP4%kTf|i;{DhX<*KymZ^B;R78~lYRbOn=gM47?aSp3(tnMjWdU9{rhI_}> zz1Y^aG50iP%hXZj8@B1OH`u1{-HS;sYW(_luGF56+!|YR8*DRTK*if0^-h`I(~sL= zZ-3kxd+#rxvHj{cO7=|Ms^)=x4Dfy%_Brgj?VxP?iP$59ef-p8H>Qtc<0n>NqadLp z_UK}(YHgn(8A_!aVUG-UizC^+TWxV+G*oFPE<$Z(J1t4yb zw#Q!D7E*gL{$W^(#vUnbT==R`N?H%8bbmG0Ps(6}E&DW<1g_RdGO%Tt5{rG^tRP7^ z6NM}Xa<*<>mXwEWHBgQ%4@YpD9A-(y*kwk-Vo!nhBQq(2JAn8zuzw@& zMqnhACxPzR)+RV^NNQWju%T(@9(Dc`8b#)?k*WCD&>s8L(-dpCCxyAi+6EpQDm}@m zrYTB|2gPI9D(oj=vGq@_wmEE6-&$cq18ra2R9CXAYtFV^ZUJ^HPXdIVJ!;0bKY$%; zB|W=luptk-I+WsC_sO^G13SDA6@QapY=~kPXEzEMZUvCy-UCUM=y8o=7iKqX=&Fbe zm`)Qiv7rHWR)2%x4wEwF#=mmxVk41d?@rGqodcI(*K{}tu!BK+K6hua6*TFVFTp0j zrP!@T6GXNhoT7IBLH9A=rR|)F1InNB6qYJ!+ikFOMsKLovmIdV*iAvFynjkha}!`g zo0x=~iB~@^3DnHACZSZzkv;|+&0cJS-EhWN92={tUEtbiT$t0g^+ZkjNm@>@>+b-; zx^4A6*v{bn5i-GT*yW*=Z_fQ4U^E2GnRKN5Jop}LpfV2m6tA+dqzyKdO{fdFn~l7S zVv@>fjPwlH8*Cf(n#U)##(!x8?3UUNW~RB=OpYhRhW3s7zR<_Q7>Uy-7{lh?Mmo3>L%McDi^ zUH@qPWzV_(GVCnD-_LcNb}svbxws5{CKQW57=MOTf1dwY>f*%^K1=<>{y4T|S(VRW zSFOGCF>JQE`9f@Wfu={mkI1x>YwtWs<0Y$jCGRrcebpjZ>MgvNj?+`p_bLyYS_g9p zZ?z=X&+L5Fnp%BvSYfGKt%;>EZ@G$HG?KnmYTdRwuKHpBuz%P;>>oCLt61a81N6U& z#~xyhD+_SLRg(3$A1FWUANGHZy?&i&Z2A8a@a`;flI3stO8Ez{%yUct000000000< KMNUKj0002_qH=Tq diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/item_browser.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/item_browser.png index 26f78b9bd392b910e3b84888b6158b09d4ae8d0e..27c53ba5ca83b5767e5205b5c0af3815b88ced96 100644 GIT binary patch delta 990 zcmV<410np12SvVY|~+e&8_z0jumVr<3s z`{?P1Wy^jUjocb%{q=D)OyhjsSNUFc*NrE#9iUm>(z0aFi@utdYzJr-H8tIona=N` zev0R%!PRx^K$m@+Dy?JyyRx|dAA7n{n4K>~zA)>&S|SnI1gsHTwH@!UE4M4QDAsl< z;&lOQu@F_-B!4iw?YLp%Mz7qq>?jubcjK}C0c)`qLT^kW$8`dZV^GEZYFm7}-F`YL z^|oRQ>$mw)L?X^byw+(*6eYX10eg%3Q?b9eE;hrC!D+zjrSu!Bc^#J}iPpBhUFMgT z&AK`-+p@Tequ49}iDIZ}*uYMch^zX(aM)wEYH4^MM1N|qx#SY|Nya#A_!HRJ9AJnI zS#gscHwBOk*!`6nYp|E50;I+@*i7%^I&a8$I9n?1wA8t_R>&7N)&0(N?J4eZ-AA*hoyxd-+}B?N7m zs;ebTIf3oJ52i{_g2zN`J)<3~a{~6o%VtXwHh&N7BV#iXHnVL1V-;e1A7c^Q`@P{n zY|1(zY)i^M_%hif_sf^f<|J$x*vH2vct$SSisac|)olNBlEbhm>x5vwW7%|blE4n^ zz$iVJ8dy9(hT^o|$*lA|qgDi|{QYu%E^E z9e>UCKE~GUvz6yt!{l`L?f;$Un1vrGuHgNNU%iniwq;n928#QT?hp|aehR61J}b-n%VqVg9rq~es8=F+xrq8|pH(ZS5}g(G*B-0D4(#W~#@B3r zw%e-3zQNaQZ|$+_#%TLfU>}@4r_yrt+4Z-AM}m2sdT>F0k1{&_1F5<)lt3`&XaE2J M07*qoM6N<$g5h5QO8@`> delta 1024 zcmV+b1poW!2Z{)g7=H)@0000000000001FSOjJex|Nr34pqG7zd0~89K0CN`K+d03 zO-N=5CNz>#JjA4%000000000BbW%=J0RR90|NsC0|Ns90000000006>L_t(|+5i9m z00003e@R3^RPEi1lB*yL0MKHMBLDxvD*0OuT}z(Twj?Qu+jepKhz(^C z9Fo{PXKX63Db8>+=dIi?NlNCZZ5O9cvX`s4;{=$DJb&BHTmJ>iZU4E8oy+cYDYjpl ztOX0He>Y2;CZS1gmux2x))^bN#r6X5`+El)_LL+koU#2<@RIH;ZsjXGbEd3}cq7`| z_G~0QEzg}vjurf>{WQCL4^Gz9GzU!`pw4Q0+1o!k61O*PX?1r)b1X~nMlYn^GHtu> zNU;|Nk$+}ST}O^RLDw;**{hmfgSlmUDw$I3NbT0_t7J;D<7-~%twh+u7Phd3Eo@=` z3pTq;Df2{j=NGP)jXlVoZJ%>M=Qj!9*ywg_+l$SGjXn0r#=dthjRbq_k&RCbxEzxB zq`|UX-wKx#pzmSA=aeY1IV6a(o@W7I9b9N7#Wg8UGh zXCq?UIKdk7+IVGCQ>!WOo$f051fQcCV_=fAu0Yz7yu2lm+geZn-Rex5&0oyV9S z3}Ng%l7k^Y+o3+7syH{+QEGgWDtELnytigWT_G?z&_^)VP!;=_KJN+UK;c{DhqB4k z_S-E5mSXl>!@xkUwiA&XORGhc<lu~E}BGfE^{^d zqB5yX88tMB%3P;|My5A4G>N)g!WOo$g)Qv#rg9&yE!Z`=&efSKo9_64*Y=? zXn%kuw7yzIIrLN%QkrWNl;&uq+Cz_s$~{M|aPLG4$Es2e{eP96ec1R#Je$nYrrnWa zmWMxv@!G~_GZ=KoaE_0+1GgAvOKfBZ?RFZ^v^$_h)`+#SmpL|;#_oU?Q9UMG^QOzY z2p93vEO2qzc%p6J%$SO?gKd|%@3SXcR<*O0$X0ru*(nlH(SUiyX3fM~woTjGBHt8K z9&d7(iiMrwXtbChNOX4lgS&(yot>xi8e*OyB0q$ z>}fkr%(~3);waV=AW;mJh8uWLH)31wvySBvHmVOkZGR^txXY^H-oJ|g3Anwj9!VND zKI-;JWqBl9)udq;o$34TU=%ND*|nOeIAE7OzZwsU0xCHxV=EWZ0gS};5 zY<97RQ-4lRwmJzOda~6S?U0>#u+Lt%J@R5F|AWn?p3~bhWfJ~$gV^RW<#598p7*rh zRyiwNrO#57J;mG7*piv_Y3)j+#5PR7Oc2|8RerKp7#^u@Nc-ohF39a0Ou-#$!c^L} z+S5m#Qs%8na%%0{AB@tLHJdi?hV4@Cv0F_ZF@ODJhPCy&tmU23*__pFE|GSE$UEh( zd5_SxtmTd9Cx3@6>-Cm|Hf${1mo4iyC$*v1?e|rv{fV{vzsGWQoZRnYIcB?LXj>;< z92+F1t%}0-$290QbhgxcRbC#9`@f~2ZEiOfjz7>l+k2d_-m-iXuD)WC+IBx{cCDQ8 zlz-Y*eLSsw4BEWi&jEd&Uj{qa!45Ww?ejX@!kfJwEY_av1=zyVHPe;4j=c6_FZ4BP z;pH0jD*WE?XY7QS9v$g7bkD#2dmXdz8twMjmKWJQ<9%La_l)Th^x{*U*Q%(+fl`if*tIC&aQ6G z#P)S{b0)UkBiKi`m%d^>c;EGJ1y2m-?Tm*m#JjA4%000000000BbW%=J0RR90|NsC0|Ns90000000006>L_t(|+5i9m z00003Zb?KzRPEi_mV+P+0MN!_75@K&M}rF>o2Q{Ao#eseV1LysjkrsdlmH}?#JUsVvoCx16Ju6EgzQUgpHpxg zh6xj6ox0C~CDY`wFYB@EzcxBPyZUhEuqRv37Jm$#+P0ZI!Tw37B+TvV)d%dcF1%e5 z({sX9IfppGPMr4g?UPQ)6y$dG>Iv9{4d5GWt+$Cf9ewmUMLf4XLYWBHHCTm-D$+p#( zA)Dxi1G*d6wr;@ABneSVB5c1YNwHO*?EMmf7h7f7x?{H5*w<4jx^ohjt!a`Z?#2^W zO?7bh@3<1N5BKFVprRs-cHcGkUG!VqnmpRFn}x82Eo@;6TiC)Dc4us+J=133$Hwl9 zz>U4Vp9FYy7KOb>F>vad3upgr;L{Nrq?5m}{|lSxPnfy>V4U^O^SQnZLD(N**SuEc zd+fK~z4JA8_He_HUG;*d@1=I}-8=6_W@wjsH-3dp7BM#6(gQY7#XMix^GvpQQ~9pT zn*k=qHpD9-XAg1qAZ%d^TiC+xmYq5z_svcolDlSqB7`mMpJp3&v9jy`Pr$Qr)Jx`O d|1G0!`~hQU#p(b600000002ovPDB6z001%T^?U#T diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smelting.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smelting.png index 3d73312244b371c3f9c983fe2efe512048853c34..6ae6119532296a95edb329e3a7ed84de9ab1be41 100644 GIT binary patch delta 334 zcmV-U0kQt#0^I_T7=Hu<0001ewUxdA000$GOjJbx005VLhs30tO-N=5CN$v9pm||@ z>j8e)00001bW%=J06^y0W&i*H_DMuRRCwBzlYw!AFbqXmL8ns&pk#m`oB;wIz)dwk zF4ycoLcfJ$Xs)f{pAoX}A&Y-@Gc9VWdjDv%x?S*8Q*(LKS$}<7(eV@TW7anKD-v|* zpIiK;zDw`{*$puLFNbe;z~`;74%4U^HWLy_ky7+27FRG_$*`zOv=oUrD27DAbb%@V zAR=3o5X4Z9(u2A|uv3Ab)_EHmgi&e*vk8X+TkhZ6uxswwQg!b+uw4rr-MSfOJuxw> zVh}PUc&_r;B4q#VsiBIf%D)>OsC11s<2$!w3G?f0EPca@e$+@%e>> zgYIjEEk1=D-(@t#@qOd<(kDT8R_bsw&5^ss$rkG+xBp@M)S!c26Ft={M^gZ@Xo-eq>%DU<5-#xpSCK$K{2CnVW zPHK5o!~X7V+524OCo3}fra7LFJGl1tl5L_5^KGB4`}1n!#Kw)HD>g=R_Z^FzlzQ8A z-p&(8f-gUkUUMz)R)+c3vfDiC+JhRdf4%gwtjRsLdP)3M@$bBMUa;R1w()(x!|~bg Z+#R3eb}hBPlPUQI>SYE`S3egJ8vrT)lL7z$ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smithing_transform_recipe.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smithing_transform_recipe.png index 97906b38c37371e58c7afbba419acabf1e846348..ff35a158f9527518eb14f4a94f42157a4ff013e9 100644 GIT binary patch delta 1275 zcmV00DGTPE!Ct=GbNc00fFjL_t(|+U=V?Zrd;v z$G!Lf0_~-vhS)uw%4<(Ka+ajYgzqxA>@-iD^uN@_ZKPGqD--qZJNQ^ z-+wUOS7lp3^H|f8vy+f%EFZun-XIpxJXE!}&ThI$7MIkjvABs#W8NTV=URrzzCH=4 zhKuC$c3X|jYk%C8vG>-2VE^52H@`O-dlVBAk~pSEmVh%{%&`OAaD&awrtG)dEvrh| zt2Bv6BwZzN02R)0NZ?|gtsBnR`9|kvQ}z|>e;NBW4p%FHhH!wT!5|VKCDy0c>OGuirWgVz5P~SNF!hiO%Es~o*;BM~kI8HJ*hwP8~ zdrWTQB-c+=eH84esUtv+Lh0``4U;fQ!NCbnz@*_)fqW^*$x9Zxj&fLd9?t~?Hwu&GaUwiLYq9~4!IyBlo9Csc)O z+5h>#tA7lH2HWT-8hcl@blz#eR;!lE##T!VU1pWbWKV*&G|=9ipk1l&PRr`p9lK+9 z?2etW_tqZR5R6my^~?i%c1PKJ>!Ans$=NxuuTQ+Nhj+kU2VU60*%FqVp4fB|-1o$$ zE82c=beXAfL#+=M+TWCuRkfhRUBbAOr3i=3W04b^2MU`Mnv!Vb?sHZ8&u zwb+QQ&sjBg51Y*q;?GuO_te6Um{}MjX1K+)?6KI>;UKcGr&czi#W6DtxCqF|-X7xV zEN*kL+0#bC=h*%ZVMS48HuJ-;OvuTGgO{nw=ARMJ8=iQ;JYi|d16igLdvM5}aewm2 z6Mx71;)>q2F_vXahuhdw?!aS_m_G8v#OQCk`;blR-*jQzwDs1;yHPwf2v>U4|<9`Wf=i}JwV=T-_yD=6y@Hga`dnXj?2g^BJ9aBGHjo}Mf>~>-CP(n@kiO7g@$JT2W)e1OCxs4exF9{lKnpIvCTbD zjk=(*-$!ZCfw>#2Ue>d)<@TFXS#;`1-!N1&ORz8H_RX0rHPd%?*39~%?|U3w$WkAP zx@+wTS=ye;Tq%7^T>Y$$-LYRAJO9pVfZACa`!fH|s;Zx5?$K^f9sAkY3tw9HKH2_T lfpr^if$nXPuf3T+{R4j2FUWI??@<5%002ovPDHLkV1i{~iW&d_ delta 1286 zcmV+h1^N1e3XTep7=H)@0000000000001XYOjJex|Nr34pm||@Ts}KZNM>kbgOXA_ zmwkuZxURT!K+d032_`heq?-T$0000001b3fPE!E?|NsC0|NsC0|Ns90000000006> zL_t(|+5i9m00004dr3q=RPEghlA|CH0MHOz)ad=syV9Wip??vKGNG#`Yn+JB4x*yN zzFv8;c;of-SO{62Xq8efSq(F*|u7+M__ApdoPYx)Dg7fFl_JStDwqh0-FGz46#%0 zgB{w(ZMCc7h_66;B0h=-TOBRluy;f#NR(YWO?BgRW z#g^3?s`psooFvXxs4{l-Gr%JDQArYPH>_3@5%#91*}+P3#Cf*U?nkY8>|{$4WqVgz z9=EXBrGJ5AM~leMRaJMG%^nzu!_BiJe7JeKyR$pHvpc)9JG-+xyR(0ry}nyvLl3fK z^ZOi)u)!_ZycfF_HuTs78~WaxVRJXI;f_H&?9I*DqQ9Uew!FdH8hgL(y3J^XJ^vt^ z(nql8Y&N}%Jr}T9qwM?Y_9?cwMXRO!Y})l|Mt`qn@3)rKiuKLN@S0msFJ)`D#MR2w zW?u9O{?$FgTUTNSQS%=UFkGR@jI>~9XW)tPLkY%5dv z9h1hQK3jdiA0rseXNy;}oXTwT`GTz?e9Sp~eb#4?YPXzv?0MF|#O)&=d(MYCpJ9mF z=6@*%;YPB}vbWMd&YW$QH3w5qeC5z|Rl~CFo#x}r5oyA@RkGc35DoZEY#L)fH`{Uc ziMq}1uOzsZgx$ebyJRri^pR|l?l3!ARctoxL6ohB>&KJ+2IQnZPPsCLC_( zGNB&Z-JLuaQyG0F>cZVuPU`CJJe!$U!OZUSNcUJou7*?9`wW}uolz=p<|HcBVR+q2 zLe108{omaFR~MG)&SN{>Blarr-3^|S_gt{rY(~AkfXA=Sbh=Wj*Ams+a;k0{ZhyN^ z?^Hjrx$HF!V3{+J?ZO*;joz2+?9T4&&hG5a?(ELKm)+=-X$xtO4UaF9*4T1<64KVg zqGW%fn6&h0E>X{KlXf12CjBA*&i)m4qkqEO>K}|h)?Gdr!oBLwzMYL3R^>i+(bzk; zv7?8Z2HB_qn(nLG$+36BJ11_;s(%ZY`YUWt_=-vo{&Ve87TY%t=HeE$B*)LZc&Rlt z`XX6_5$3n+wjy|33lmivurNUQ3hlAI9-@9smFU0000007*qoL;wH)02+3i@c;k- diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smoking.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smoking.png index 4fbfdcaec5876bdad5d976bd3d5955b37c156e11..924d28d14cb9de954ac70e3e0e3579168002262d 100644 GIT binary patch delta 333 zcmV-T0kZzz0^9GN^mUzyW4Z_YvX% zo>ad75$YH+lU8j5|H87OFOK6!Gr!bS_3`L-^{3#ursj5~O@F?t=>1b+XDl9sAzUD! z&rkd%-z$7slY+m(|Jq;~=Gng;h4rJi47b7z+zP0b-RA;+q=YgY38m#o%q>zxy`(1v zY=6!0BoJc?C=oQex?Dzf<4Ws-JM1(jCOA$B=82g~7=p9X*^vk)M6I)&UGj@GXc=kA zr6U3abY`_xn?_&2)|8`lKGhU!W~k0a*PocW1V4Sdwf>@I4>$aTP2-dMHg-dEfBE%I fDd74Jp4sj%0wSG~pf_tO00000NkvXXu0mjf1wEGI literal 351 zcmeAS@N?(olHy`uVBq!ia0vp^5kM@?!3-p!Ks3N7#1+VXaCX7;+V;xC8efkzPBoJw zOJ+kAu$Kh+1vC5y1E>&_r;B4q#VsiB35d6KYA;`_0!OR0%fA20@s2)9w{s_-n{_z& zchZCNWjqNj;APh7q4`pjJm zmiNrezMj*ubc4=JzYP+yI`-2h${*NutwLvec4wtS)R}e1?)=Tv%-Z(t$kS`5)Y)Dy zIlgV?9DCM&-bs7<>~AY1o4=DxcV%BbKaXu+_LKi%hCAyMmWyxEuEYYmY UyO->_jHKkC{$=oV^>YES0X#d0o&W#< diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/offset/space_split.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/offset/space_split.png index 3ca3f1d8438a02033c88e7ac5ac3b1db612ca765..6dbab57ddf49fc4598f538f97a7f8420b5ca6424 100644 GIT binary patch delta 47 ycmb<%o*=2k00dTbvqOOtm#2$kNX4z>3U&sD4-D^PABO0FWIbK|T-G@yGywo391SV} delta 104 zcmZ>+nIM_W%)r2)aoS`zkdiEMjVKAuPb(=;EJ|f?Ovz75Rq)JBOiv9;O-!jQJeg_( zRKynG6XN>r-8+!B+@1~~#pCJX7*cU7DS?5*fPsODfzdxV@*z;1!PC{xWt~$(698lJ B9$Nqa diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/cooking_info.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/cooking_info.png index cdc93a4782b8f34a98facb3cada525d330ac0e81..ce6a7872eb997fb0b5369c414632e755485c3979 100644 GIT binary patch delta 319 zcmV-F0l@y^0?q=E7=Hu<0002uh3Gy2000kAOjJex|NrfbTko@QTs}MS(}gPJ-YftB z00DGTPE!Ct=GbNc008YtL_t(|+I5kOt-~M;Ma|0sw&?dfN=&wC@_KmGK`??ne;zzWXba>vLen8S|tu4sehT!*6I|TnhpUYr_462 z(K?n=9x=kk$WIu77KY?mdT>P?Pm)d^HH?-_km};m2Oh@7Q^sY}(WgU%EzpF(F$?}a z+4u7?p7*QbDDN05K1v0DF@kI!UOYs%{e-=zg@Nngz2xB-XXesDyo$tfiNt=RW5mTH zzMpD5-8kpzPB`BEx*y!r3=84fC0R>?{DK*Pa{r+MOr9=| zAr-fvy!Rm9)X9#Mjw*1l%Aei+e`b23Nyo`0b!Ki{7vC|xyx*TY(crsLo$+<1NmG8E{c`PG`n#-H753LiYr z|Ix%eU+23jpK@AXq0P?~KLqbF-6;F~Fuo>c%T@PhcS52}n@bi;-+r*uTj6Bjc?GwG zd4)oO=MrSfD(|=4wOaA$@n!aQ{s)`wEp|QCJ}4W%^RfMu?8H6Ztv<8AR_)Bb?z`<> z^IH3)&xUL(er5drUitHn)zepN?E-@2SG?X@yCCYYjGdKT|Bv^=OS2cP;@|)K2eYF* OYZNTtJYD@uj4E6PCrumP?pISe^JD(L5}mdz_6iBO`u+{$-I*5A zNviz~6Qyo6*fr$2Iq53COZwluGt}VOwWjyI+(PGgKVSL5_beG?yr-+5%Q~loCIEv^ BJYxU= literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!j|Kfou%l|#kE$0KD*P0NubGaj5-0F`3$ zba4!+xCP~TfOx6rE%_J}1(+Rozx}_zl6i|k2cPx~=c+8XsUrPKnrYvixi9c(lr-Gl u_O(sb&N#xFUuEND9)pSo-Uo(X?A~}yT7U1k{a0zm-B2?bJYD@F!6V1H^l;>?01Bx(sy85}Sb4q9e01jUar~m)} delta 53 pcmZo;oWwXmR*C@vm^@t^Ln>}TdEOx2L~U;YD4)U8)z1aQ1_1HK2mAm4 diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/next_page_0.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/next_page_0.png index d9afce06e5d3b64e03f7551e7b7413eb74b6a3f3..a6d45a3775558b4fa777a8b02e6f50fb35e2804f 100644 GIT binary patch delta 141 zcmZ3;IFE6HWIYoD1H*)g8D>B#)zif>q~cccg8)NCPD6%|&Bok)Ix`&w7^ga#GFaNl zX|f0gNOrYpn(9^vB=S12Pguhk$zR4R;F{5q!Yg2V!!&`{w?m|iH>0uRjrpN@Zo(>S t7=2qFbtnrtnhH#wpun-JQH6y;G&bUD^Cx);T3K0RTwtDntMP literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!j|Kfou%l|#kE$0KD*P0NubGaj5-0F`3$ zba4!+xCQ0egLtXu9r+j(IG7!^{{ElsYO>@+oX0bUEVD)4JOv)}HfXW(EnvuJj`)zb lNP&M|>@Jgbrhl71Z3ttC`uth?gDc}!s8I}_u6`~cHUN!WDsun; diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/next_page_1.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/next_page_1.png index 5976299af44e87f9f4f0f1cfe02d26bc9029022e..817f8d569025d4f52e184b0a607fae67affca782 100644 GIT binary patch delta 138 zcmV;50CoSI0h$4j7=Hu<0002(-QrRJ000kAOjJcoNMw|Jga{-w#H5(u%%J@|w08gi z07gkfK~#9!HIBg%fG`Zh6uJOxz)==xvjO`LMK7-P(!-9!v*FF+qf<B#)zif>q~cccg8)NCPD6%|&Bok)Ix`&w7^ga#GFaNl zX|f0gNOrYpn(9^vF!DOw_PoFl;@ia5k!8{n%p7+0hlzuWp`e}m!LJJJ8jSwVPdvE8 t&SWgKc+}w%zJeuQl+()|!~#Knoc>UD^Cx);T3K0RWhrD{BA% literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?!j|Kfou%l|#kE$0KD*P0NubGaj5-0F`3$ zba4!+xCQ0efq1FsqlFj*c$@<-zNtU^%22e>{yfjZt@>?8S{g*St5hABr3%6w*ymiV kR!QwUwUlFiYqQ-OO-BF!&)GlNGj4^N#Ng@b=K^8_0EdYx9smFU diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/previous_page_1.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/previous_page_1.png index bd23ac78b2f162071652b5552c50720725520df6..e02d945e26d69fd8e6245582c4adafb7dc843eee 100644 GIT binary patch delta 139 zcmbQoIGb^TL_G^L0|Ud`yN`l^6n}tEh^voB%9NTG4i%FlOJ+Pcv*54ImU5t!yQhm| zNX0GFzJt663^JyAf# r+o<6DhoEeaR|$E!@9ylnAZ=e5#3Sq%H|;ObNCr<=KNpsDP6 {}; + this.zipGenerator = (p1, p2) -> { + try (FileOutputStream fos = new FileOutputStream(p2.toFile()); + ZipOutputStream zos = new ZipOutputStream(fos)) { + Files.walkFileTree(p1, new SimpleFileVisitor<>() { + @Override + public @NotNull FileVisitResult preVisitDirectory(@NotNull Path dir, @NotNull BasicFileAttributes attrs) throws IOException { + if (!dir.equals(p1)) { + String relativePath = p1.relativize(dir).toString().replace("\\", "/") + "/"; + ZipEntry entry = new ZipEntry(relativePath); + zos.putNextEntry(entry); + zos.closeEntry(); + } + return FileVisitResult.CONTINUE; + } + + @Override + public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) throws IOException { + String relativePath = p1.relativize(file).toString().replace("\\", "/"); + ZipEntry entry = new ZipEntry(relativePath); + zos.putNextEntry(entry); + Files.copy(file, zos); + zos.closeEntry(); + return FileVisitResult.CONTINUE; + } + }); + } catch (IOException e) { + throw new RuntimeException("Failed to generate resource pack", e); + } + }; Path resourcesFolder = this.plugin.dataFolderPath().resolve("resources"); try { if (Files.notExists(resourcesFolder)) { @@ -909,7 +939,7 @@ public abstract class AbstractPackManager implements PackManager { Files.walkFileTree(targetFolder, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { @Override public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { - if (!isJsonFile(file)) return FileVisitResult.CONTINUE; + if (!FileUtils.isJsonFile(file)) return FileVisitResult.CONTINUE; if (!jsonPathPredicate.test(file)) return FileVisitResult.CONTINUE; commonJsonToOptimize.add(file); return FileVisitResult.CONTINUE; @@ -928,7 +958,7 @@ public abstract class AbstractPackManager implements PackManager { Files.walkFileTree(modelsFolder, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { @Override public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { - if (!isJsonFile(file)) return FileVisitResult.CONTINUE; + if (!FileUtils.isJsonFile(file)) return FileVisitResult.CONTINUE; if (!jsonPathPredicate.test(file)) return FileVisitResult.CONTINUE; modelJsonToOptimize.add(file); return FileVisitResult.CONTINUE; @@ -948,11 +978,11 @@ public abstract class AbstractPackManager implements PackManager { Files.walkFileTree(texturesFolder, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { @Override public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { - if (isPngFile(file)) { + if (FileUtils.isPngFile(file)) { if (Config.optimizeTexture() && texturePathPredicate.test(file)) { imagesToOptimize.add(file); } - } else if (isMCMetaFile(file) && Config.optimizeJson()) { + } else if (FileUtils.isMcMetaFile(file) && Config.optimizeJson()) { if (!jsonPathPredicate.test(file)) return FileVisitResult.CONTINUE; commonJsonToOptimize.add(file); } @@ -1194,7 +1224,7 @@ public abstract class AbstractPackManager implements PackManager { Files.walkFileTree(fontPath, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { @Override public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { - if (!isJsonFile(file)) return FileVisitResult.CONTINUE; + if (!FileUtils.isJsonFile(file)) return FileVisitResult.CONTINUE; JsonObject fontJson; try { fontJson = GsonHelper.readJsonFile(file).getAsJsonObject(); @@ -1231,7 +1261,7 @@ public abstract class AbstractPackManager implements PackManager { Files.walkFileTree(itemsPath, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { @Override public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { - if (!isJsonFile(file)) return FileVisitResult.CONTINUE; + if (!FileUtils.isJsonFile(file)) return FileVisitResult.CONTINUE; JsonObject itemJson; try { itemJson = GsonHelper.readJsonFile(file).getAsJsonObject(); @@ -1256,7 +1286,7 @@ public abstract class AbstractPackManager implements PackManager { Files.walkFileTree(blockStatesPath, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { @Override public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { - if (!isJsonFile(file)) return FileVisitResult.CONTINUE; + if (!FileUtils.isJsonFile(file)) return FileVisitResult.CONTINUE; JsonObject blockStateJson; try { blockStateJson = GsonHelper.readJsonFile(file).getAsJsonObject(); @@ -1285,7 +1315,7 @@ public abstract class AbstractPackManager implements PackManager { Files.walkFileTree(equipmentPath, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { @Override public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { - if (!isJsonFile(file)) return FileVisitResult.CONTINUE; + if (!FileUtils.isJsonFile(file)) return FileVisitResult.CONTINUE; JsonObject equipmentJson; try { equipmentJson = GsonHelper.readJsonFile(file).getAsJsonObject(); @@ -1434,7 +1464,7 @@ public abstract class AbstractPackManager implements PackManager { Set texturesToFix = new HashSet<>(); // 验证贴图是否存在 - boolean enableObf = Config.enableObfuscation() && Config.enableRandomResourceLocation(); + boolean enableObf = Config.enableObfuscation(); label: for (Map.Entry> entry : imageToModels.asMap().entrySet()) { Key key = entry.getKey(); // 已经存在的贴图,直接过滤 @@ -1583,21 +1613,6 @@ public abstract class AbstractPackManager implements PackManager { } } - private static boolean isJsonFile(Path filePath) { - String fileName = filePath.getFileName().toString(); - return fileName.endsWith(".json"); - } - - private static boolean isMCMetaFile(Path filePath) { - String fileName = filePath.getFileName().toString(); - return fileName.endsWith(".mcmeta"); - } - - private static boolean isPngFile(Path filePath) { - String fileName = filePath.getFileName().toString(); - return fileName.endsWith(".png"); - } - private static void collectItemModelsDeeply(JsonObject jo, Consumer callback) { JsonElement modelJE = jo.get("model"); if (modelJE instanceof JsonPrimitive jsonPrimitive) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java index 863cd34dc..62106e9c2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java @@ -17,6 +17,8 @@ import net.momirealms.craftengine.core.pack.AbstractPackManager; import net.momirealms.craftengine.core.pack.conflict.resolution.ResolutionConditional; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.PluginProperties; +import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; +import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.plugin.locale.TranslationManager; import net.momirealms.craftengine.core.plugin.logger.filter.DisconnectLogFilter; @@ -64,6 +66,8 @@ public class Config { protected boolean resource_pack$protection$crash_tools$method_1; protected boolean resource_pack$protection$crash_tools$method_2; protected boolean resource_pack$protection$crash_tools$method_3; + protected boolean resource_pack$protection$crash_tools$method_4; + protected boolean resource_pack$protection$crash_tools$method_5; protected boolean resource_pack$validation$enable; protected boolean resource_pack$validation$fix_atlas; @@ -71,21 +75,23 @@ public class Config { protected boolean resource_pack$protection$obfuscation$enable; protected long resource_pack$protection$obfuscation$seed; - protected boolean resource_pack$protection$obfuscation$fake_directory; - protected boolean resource_pack$protection$obfuscation$escape_unicode; - protected boolean resource_pack$protection$obfuscation$break_json; - protected boolean resource_pack$protection$obfuscation$resource_location$enable; - protected int resource_pack$protection$obfuscation$resource_location$random_namespace$length; - protected int resource_pack$protection$obfuscation$resource_location$random_namespace$amount; - protected String resource_pack$protection$obfuscation$resource_location$random_path$source; - protected int resource_pack$protection$obfuscation$resource_location$random_path$depth; - protected boolean resource_pack$protection$obfuscation$resource_location$random_path$anti_unzip; - protected int resource_pack$protection$obfuscation$resource_location$random_atlas$images_per_canvas; - protected boolean resource_pack$protection$obfuscation$resource_location$random_atlas$use_double; - protected List resource_pack$protection$obfuscation$resource_location$bypass_textures; - protected List resource_pack$protection$obfuscation$resource_location$bypass_models; - protected List resource_pack$protection$obfuscation$resource_location$bypass_sounds; - protected List resource_pack$protection$obfuscation$resource_location$bypass_equipments; + protected boolean resource_pack$protection$fake_directory; + protected boolean resource_pack$protection$escape_json; + protected boolean resource_pack$protection$break_texture; + protected boolean resource_pack$protection$obfuscation$path$anti_unzip; + protected boolean resource_pack$protection$incorrect_crc; + protected boolean resource_pack$protection$fake_file_size; + protected NumberProvider resource_pack$protection$obfuscation$namespace$length; + protected int resource_pack$protection$obfuscation$namespace$amount; + protected String resource_pack$protection$obfuscation$path$source; + protected NumberProvider resource_pack$protection$obfuscation$path$depth; + protected NumberProvider resource_pack$protection$obfuscation$path$length; + protected int resource_pack$protection$obfuscation$atlas$images_per_canvas; + protected String resource_pack$protection$obfuscation$atlas$prefix; + protected List resource_pack$protection$obfuscation$bypass_textures; + protected List resource_pack$protection$obfuscation$bypass_models; + protected List resource_pack$protection$obfuscation$bypass_sounds; + protected List resource_pack$protection$obfuscation$bypass_equipments; protected boolean resource_pack$optimization$enable; protected boolean resource_pack$optimization$texture$enable; @@ -315,23 +321,27 @@ public class Config { resource_pack$protection$crash_tools$method_1 = config.getBoolean("resource-pack.protection.crash-tools.method-1", false); resource_pack$protection$crash_tools$method_2 = config.getBoolean("resource-pack.protection.crash-tools.method-2", false); resource_pack$protection$crash_tools$method_3 = config.getBoolean("resource-pack.protection.crash-tools.method-3", false); + resource_pack$protection$crash_tools$method_4 = config.getBoolean("resource-pack.protection.crash-tools.method-4", false); + resource_pack$protection$crash_tools$method_5 = config.getBoolean("resource-pack.protection.crash-tools.method-5", false); resource_pack$protection$obfuscation$enable = VersionHelper.PREMIUM && config.getBoolean("resource-pack.protection.obfuscation.enable", false); resource_pack$protection$obfuscation$seed = config.getLong("resource-pack.protection.obfuscation.seed", 0L); - resource_pack$protection$obfuscation$fake_directory = config.getBoolean("resource-pack.protection.obfuscation.fake-directory", false); - resource_pack$protection$obfuscation$escape_unicode = config.getBoolean("resource-pack.protection.obfuscation.escape-unicode", false); - resource_pack$protection$obfuscation$break_json = config.getBoolean("resource-pack.protection.obfuscation.break-json", false); - resource_pack$protection$obfuscation$resource_location$enable = config.getBoolean("resource-pack.protection.obfuscation.resource-location.enable", false); - resource_pack$protection$obfuscation$resource_location$random_namespace$amount = config.getInt("resource-pack.protection.obfuscation.resource-location.random-namespace.amount", 32); - resource_pack$protection$obfuscation$resource_location$random_namespace$length = config.getInt("resource-pack.protection.obfuscation.resource-location.random-namespace.length", 8); - resource_pack$protection$obfuscation$resource_location$random_path$depth = config.getInt("resource-pack.protection.obfuscation.resource-location.random-path.depth", 16); - resource_pack$protection$obfuscation$resource_location$random_path$source = config.getString("resource-pack.protection.obfuscation.resource-location.random-path.source", "obf"); - resource_pack$protection$obfuscation$resource_location$random_path$anti_unzip = config.getBoolean("resource-pack.protection.obfuscation.resource-location.random-path.anti-unzip", false); - resource_pack$protection$obfuscation$resource_location$random_atlas$images_per_canvas = config.getInt("resource-pack.protection.obfuscation.resource-location.random-atlas.images-per-canvas", 16); - resource_pack$protection$obfuscation$resource_location$random_atlas$use_double = config.getBoolean("resource-pack.protection.obfuscation.resource-location.random-atlas.use-double", false); - resource_pack$protection$obfuscation$resource_location$bypass_textures = config.getStringList("resource-pack.protection.obfuscation.resource-location.bypass-textures"); - resource_pack$protection$obfuscation$resource_location$bypass_models = config.getStringList("resource-pack.protection.obfuscation.resource-location.bypass-models"); - resource_pack$protection$obfuscation$resource_location$bypass_sounds = config.getStringList("resource-pack.protection.obfuscation.resource-location.bypass-sounds"); - resource_pack$protection$obfuscation$resource_location$bypass_equipments = config.getStringList("resource-pack.protection.obfuscation.resource-location.bypass-equipments"); + resource_pack$protection$fake_directory = config.getBoolean("resource-pack.protection.fake-directory", false); + resource_pack$protection$escape_json = config.getBoolean("resource-pack.protection.escape-json", false); + resource_pack$protection$break_texture = config.getBoolean("resource-pack.protection.break-texture", false); + resource_pack$protection$incorrect_crc = config.getBoolean("resource-pack.protection.incorrect-crc", false); + resource_pack$protection$fake_file_size = config.getBoolean("resource-pack.protection.fake-file-size", false); + resource_pack$protection$obfuscation$namespace$amount = config.getInt("resource-pack.protection.obfuscation.namespace.amount", 32); + resource_pack$protection$obfuscation$namespace$length = NumberProviders.fromObject(config.get("resource-pack.protection.obfuscation.namespace.length", 2)); + resource_pack$protection$obfuscation$path$depth = NumberProviders.fromObject(config.get("resource-pack.protection.obfuscation.path.depth", 4)); + resource_pack$protection$obfuscation$path$length = NumberProviders.fromObject(config.get("resource-pack.protection.obfuscation.path.length", 2)); + resource_pack$protection$obfuscation$path$source = config.getString("resource-pack.protection.obfuscation.path.source", "obf"); + resource_pack$protection$obfuscation$path$anti_unzip = config.getBoolean("resource-pack.protection.obfuscation.path.anti-unzip", false); + resource_pack$protection$obfuscation$atlas$images_per_canvas = config.getInt("resource-pack.protection.obfuscation.atlas.images-per-canvas", 256); + resource_pack$protection$obfuscation$atlas$prefix = config.getString("resource-pack.protection.obfuscation.atlas.prefix", "atlas"); + resource_pack$protection$obfuscation$bypass_textures = config.getStringList("resource-pack.protection.obfuscation.bypass-textures"); + resource_pack$protection$obfuscation$bypass_models = config.getStringList("resource-pack.protection.obfuscation.bypass-models"); + resource_pack$protection$obfuscation$bypass_sounds = config.getStringList("resource-pack.protection.obfuscation.bypass-sounds"); + resource_pack$protection$obfuscation$bypass_equipments = config.getStringList("resource-pack.protection.obfuscation.bypass-equipments"); resource_pack$optimization$enable = config.getBoolean("resource-pack.optimization.enable", false); resource_pack$optimization$texture$enable = config.getBoolean("resource-pack.optimization.texture.enable", true); resource_pack$optimization$texture$zopfli_iterations = config.getInt("resource-pack.optimization.texture.zopfli-iterations", 0); @@ -345,7 +355,7 @@ public class Config { return p; }).collect(Collectors.toSet()); resource_pack$validation$enable = config.getBoolean("resource-pack.validation.enable", true); - resource_pack$validation$fix_atlas = VersionHelper.PREMIUM && config.getBoolean("resource-pack.validation.fix-atlas", true); + resource_pack$validation$fix_atlas = config.getBoolean("resource-pack.validation.fix-atlas", true); resource_pack$exclude_core_shaders = config.getBoolean("resource-pack.exclude-core-shaders", false); resource_pack$overlay_format = config.getString("resource-pack.overlay-format", "overlay_{version}"); if (!resource_pack$overlay_format.contains("{version}")) { @@ -741,7 +751,11 @@ public class Config { } public static boolean crashTool4() { - return false; + return instance.resource_pack$protection$crash_tools$method_4; + } + + public static boolean crashTool5() { + return instance.resource_pack$protection$crash_tools$method_5; } public static boolean enableObfuscation() { @@ -753,63 +767,71 @@ public class Config { } public static boolean createFakeDirectory() { - return instance.resource_pack$protection$obfuscation$fake_directory; + return instance.resource_pack$protection$fake_directory; } - public static boolean escapeUnicode() { - return instance.resource_pack$protection$obfuscation$escape_unicode; + public static boolean escapeJson() { + return instance.resource_pack$protection$escape_json; } - public static boolean breakJson() { - return instance.resource_pack$protection$obfuscation$break_json; + public static boolean breakTexture() { + return instance.resource_pack$protection$break_texture; } - public static boolean enableRandomResourceLocation() { - return instance.resource_pack$protection$obfuscation$resource_location$enable; - } - - public static int namespaceLength() { - return instance.resource_pack$protection$obfuscation$resource_location$random_namespace$length; + public static NumberProvider namespaceLength() { + return instance.resource_pack$protection$obfuscation$namespace$length; } public static int namespaceAmount() { - return instance.resource_pack$protection$obfuscation$resource_location$random_namespace$amount; + return instance.resource_pack$protection$obfuscation$namespace$amount; } public static String atlasSource() { - return instance.resource_pack$protection$obfuscation$resource_location$random_path$source; + return instance.resource_pack$protection$obfuscation$path$source; } - public static int pathDepth() { - return instance.resource_pack$protection$obfuscation$resource_location$random_path$depth; + public static NumberProvider pathDepth() { + return instance.resource_pack$protection$obfuscation$path$depth; + } + + public static NumberProvider pathLength() { + return instance.resource_pack$protection$obfuscation$path$length; } public static boolean antiUnzip() { - return instance.resource_pack$protection$obfuscation$resource_location$random_path$anti_unzip; + return instance.resource_pack$protection$obfuscation$path$anti_unzip; + } + + public static boolean incorrectCrc() { + return instance.resource_pack$protection$incorrect_crc; + } + + public static boolean fakeFileSize() { + return instance.resource_pack$protection$fake_file_size; } public static int imagesPerCanvas() { - return instance.resource_pack$protection$obfuscation$resource_location$random_atlas$images_per_canvas; + return instance.resource_pack$protection$obfuscation$atlas$images_per_canvas; } - public static boolean useDouble() { - return instance.resource_pack$protection$obfuscation$resource_location$random_atlas$use_double; + public static String imageCanvasPrefix() { + return instance.resource_pack$protection$obfuscation$atlas$prefix; } public static List bypassTextures() { - return instance.resource_pack$protection$obfuscation$resource_location$bypass_textures; + return instance.resource_pack$protection$obfuscation$bypass_textures; } public static List bypassModels() { - return instance.resource_pack$protection$obfuscation$resource_location$bypass_models; + return instance.resource_pack$protection$obfuscation$bypass_models; } public static List bypassSounds() { - return instance.resource_pack$protection$obfuscation$resource_location$bypass_sounds; + return instance.resource_pack$protection$obfuscation$bypass_sounds; } public static List bypassEquipments() { - return instance.resource_pack$protection$obfuscation$resource_location$bypass_equipments; + return instance.resource_pack$protection$obfuscation$bypass_equipments; } public static Key deceiveBukkitMaterial(int id) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/CRC.java b/core/src/main/java/net/momirealms/craftengine/core/util/CRC.java new file mode 100644 index 000000000..9233fe105 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/CRC.java @@ -0,0 +1,43 @@ +package net.momirealms.craftengine.core.util; + +class CRC { + private static final int[] crcTable = new int[256]; + private int crc = 0xffffffff; + + static { + for (int n = 0; n < 256; n++) { + int c = n; + for (int k = 0; k < 8; k++) { + if ((c & 1) == 1) { + c = 0xedb88320 ^ (c >>> 1); + } else { + c >>>= 1; + } + + crcTable[n] = c; + } + } + } + + CRC() {} + + void reset() { + crc = 0xffffffff; + } + + void update(byte[] data, int off, int len) { + int c = crc; + for (int n = 0; n < len; n++) { + c = crcTable[(c ^ data[off + n]) & 0xff] ^ (c >>> 8); + } + crc = c; + } + + void update(int data) { + crc = crcTable[(crc ^ data) & 0xff] ^ (crc >>> 8); + } + + int getValue() { + return ~crc; + } +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/CharacterUtils.java b/core/src/main/java/net/momirealms/craftengine/core/util/CharacterUtils.java index 08a9155e2..a58123f1d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/CharacterUtils.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/CharacterUtils.java @@ -68,6 +68,10 @@ public class CharacterUtils { return builder.toString(); } + public static String escape(String string) { + return encodeCharsToUnicode(string.toCharArray()); + } + public static String replaceBackslashWithSlash(String input) { if (input == null || input.isEmpty()) { return input; diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/FileUtils.java b/core/src/main/java/net/momirealms/craftengine/core/util/FileUtils.java index d576f0acc..e98fb261c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/FileUtils.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/FileUtils.java @@ -2,15 +2,14 @@ package net.momirealms.craftengine.core.util; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.momirealms.craftengine.core.pack.ResourceLocation; +import org.jetbrains.annotations.NotNull; import java.io.IOException; -import java.nio.file.FileVisitOption; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.StandardCopyOption; +import java.nio.file.*; +import java.nio.file.attribute.BasicFileAttributes; import java.util.Comparator; +import java.util.EnumSet; import java.util.List; -import java.util.Locale; import java.util.stream.Stream; public class FileUtils { @@ -92,39 +91,33 @@ public class FileUtils { return folders; } - public static void copyFilesByExtension(Path sourceDir, Path targetDir, String fileExtension, boolean preserveStructure) throws IOException { - if (!Files.exists(sourceDir)) { - return; - } + public static List getFilesDeeply(Path path) throws IOException { + List files = new ObjectArrayList<>(); + Files.walkFileTree(path, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { + @Override + public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { + if (attrs.isRegularFile()) { + files.add(file); + } + return FileVisitResult.CONTINUE; + } + }); + return files; + } - if (!Files.isDirectory(sourceDir)) { - return; - } + public static boolean isJsonFile(Path filePath) { + return filePath.getFileName().toString().endsWith(".json"); + } - // 确保目标目录存在 - Files.createDirectories(targetDir); - String extensionPattern = fileExtension.startsWith(".") ? fileExtension : "." + fileExtension; - try (Stream paths = Files.walk(sourceDir)) { - paths.filter(Files::isRegularFile) - .filter(path -> path.toString().toLowerCase(Locale.ROOT).endsWith(extensionPattern.toLowerCase())) - .forEach(sourceFile -> { - try { - Path targetFile; - if (preserveStructure) { - // 保持目录结构 - targetFile = targetDir.resolve(sourceDir.relativize(sourceFile)); - } else { - // 不保持目录结构,所有文件都放在目标目录根下 - targetFile = targetDir.resolve(sourceFile.getFileName()); - } - // 确保目标文件的父目录存在 - Files.createDirectories(targetFile.getParent()); - // 复制文件,如果已存在则替换 - Files.copy(sourceFile, targetFile, StandardCopyOption.REPLACE_EXISTING); - } catch (IOException e) { - throw new RuntimeException("Failed to copy file: " + sourceFile, e); - } - }); - } + public static boolean isMcMetaFile(Path filePath) { + return filePath.getFileName().toString().endsWith(".mcmeta"); + } + + public static boolean isPngFile(Path filePath) { + return filePath.getFileName().toString().endsWith(".png"); + } + + public static boolean isOggFile(Path filePath) { + return filePath.getFileName().toString().endsWith(".ogg"); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/PngOptimizer.java b/core/src/main/java/net/momirealms/craftengine/core/util/PngOptimizer.java index 2d74fbbb0..6c60e1a50 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/PngOptimizer.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/PngOptimizer.java @@ -389,7 +389,16 @@ public class PngOptimizer { if (data != null) { os.write(data); } - writeInt(os, 0); // crc + writeInt(os, calculateCRC(chunkType, data)); // crc + } + + public static int calculateCRC(byte[] chunkType, byte[] data) { + CRC crc = new CRC(); + crc.update(chunkType, 0, chunkType.length); + if (data != null && data.length > 0) { + crc.update(data, 0, data.length); + } + return crc.getValue(); } enum PngColorType { diff --git a/gradle.properties b/gradle.properties index 86514135e..be983604a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,8 +2,8 @@ org.gradle.jvmargs=-Xmx1G # Project settings # Rule: [major update].[feature update].[bug fix] -project_version=0.0.64.22 -config_version=51 +project_version=0.0.64.23 +config_version=52 lang_version=36 project_group=net.momirealms latest_supported_version=1.21.10 @@ -39,7 +39,7 @@ zstd_version=1.5.7-4 commons_io_version=2.20.0 commons_lang3_version=3.19.0 sparrow_nbt_version=0.10.6 -sparrow_util_version=0.54 +sparrow_util_version=0.55.2 fastutil_version=8.5.18 netty_version=4.1.127.Final joml_version=1.10.8