diff --git a/.editorconfig b/.editorconfig index 363785069..6ddef3d3c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -16,6 +16,7 @@ indent_size = 2 [*.java] indent_style = tab +ij_continuation_indent_size = 8 ij_java_class_count_to_use_import_on_demand = 99 ij_java_names_count_to_use_import_on_demand = 99 -ij_java_imports_layout = $*,|,java.**,|,javax.**,|,org.**,|,com.**,|,* \ No newline at end of file +ij_java_imports_layout = $*,|,java.**,|,javax.**,|,org.**,|,com.**,|,* diff --git a/build.gradle b/build.gradle index c1cdabd3f..c1c180826 100644 --- a/build.gradle +++ b/build.gradle @@ -116,7 +116,7 @@ configurations { dependencies { minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" - def registrate = "com.tterrag.registrate:Registrate:MC1.16.2-${registrate_version}" + def registrate = "com.tterrag.registrate:Registrate:MC1.16.5-${registrate_version}" implementation fg.deobf(registrate) shade registrate diff --git a/gradle.properties b/gradle.properties index 6f4a1d878..b50c41fc3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ minecraft_version=1.16.5 forge_version=36.0.42 # dependency versions -registrate_version=1.0.0-beta.33 +registrate_version=1.0.4 jei_version=7.6.1.71 # curseforge information diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index d01f7f693..fb6f24a64 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -53,6 +53,7 @@ b59324f051f21d8ce1a48a08f4721a61a3c414d6 assets/create/blockstates/chute.json e5e3757e99c139d67b2a70288466d8a74d818841 assets/create/blockstates/cogwheel.json 36f54136a7756c97f71bc6b47ef4e8e575e72879 assets/create/blockstates/content_observer.json cfea7283f0ebd2432d67e80a523f2a12e24c0bd5 assets/create/blockstates/controller_rail.json +961b615124ea9a5a5735e8a79f81a702de7da2cf assets/create/blockstates/copper_backtank.json f8eff64c75fc599e9a44a003f54ae9931cd8ce7c assets/create/blockstates/copper_block.json cabf6b8c59eb0e3d56a0a5a856ca058bb3200882 assets/create/blockstates/copper_casing.json 3355a852cdc717e257ca19b3db836068964733e3 assets/create/blockstates/copper_ore.json @@ -406,21 +407,21 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j 6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json -0e10e87986a76f18efeb1255f2c025d1aad8f8fa assets/create/lang/en_ud.json -949bac58ef9534024eac6d9082f5d241ce5b91f3 assets/create/lang/en_us.json -26ab60b925659e6daac2e449267d202c68cafe94 assets/create/lang/unfinished/de_de.json -78086e1c23ce96db3a9ec3d304d7418f39ed96fa assets/create/lang/unfinished/es_es.json -62fcca040385405c7655ea6e4b524b2a5e652e4c assets/create/lang/unfinished/es_mx.json -0f527cc6472caec6ec090985c5000e6f7f93208f assets/create/lang/unfinished/fr_fr.json -812f7e66a1d5a06a7b81a41216ee2151e678db69 assets/create/lang/unfinished/it_it.json -8122ad97eac98b1f549a08e623066be1ffd3a29e assets/create/lang/unfinished/ja_jp.json -2c3a1bd28a6a08bec850cc36735204c59045b188 assets/create/lang/unfinished/ko_kr.json -27559156601b57cc2e9fae07a92c7f79a7f4e473 assets/create/lang/unfinished/nl_nl.json -f401f044ec0785b9399d29d2a82f0f998a2a4db7 assets/create/lang/unfinished/pl_pl.json -fa22d8055979012a45a6648009ef0094be4560d8 assets/create/lang/unfinished/pt_br.json -d1b6b069a4547c107c58af4f8837f3cc843e1613 assets/create/lang/unfinished/ru_ru.json -b1650c7805cfe03c6b3b9d43f96964b695f55415 assets/create/lang/unfinished/zh_cn.json -8052350b58969035d456f882fa5624ee16a0024c assets/create/lang/unfinished/zh_tw.json +a6d814f94926d88764c38862cc4ece9c367e023b assets/create/lang/en_ud.json +d1838140c8383ee4537db90eb8f657d0c268fe91 assets/create/lang/en_us.json +4fcda300efe5a2ad8695b5ae3f24a54ea109a954 assets/create/lang/unfinished/de_de.json +6a1dde57b2224d4b0287ebc705d6a75d329b5e1f assets/create/lang/unfinished/es_es.json +93ee0e30a56b405a9e766d353c36276e36a84b5c assets/create/lang/unfinished/es_mx.json +49a691320c73e09f921cd0ea97398126231e99fa assets/create/lang/unfinished/fr_fr.json +cf14b3828b6c11013f606f277d88fb63245bb2a8 assets/create/lang/unfinished/it_it.json +73c1c1489833cbcb28bb1ce90541c8c8bdf329c0 assets/create/lang/unfinished/ja_jp.json +924303b9bcf56aedbbfc46108655f71324308e12 assets/create/lang/unfinished/ko_kr.json +079aea6843e756efbfca0976983be1957863717c assets/create/lang/unfinished/nl_nl.json +b7bab15167400ee48a9728f81446e572c494fd8d assets/create/lang/unfinished/pl_pl.json +07e84cc3eee3faa1ab3d26e0c85c7f09c8573368 assets/create/lang/unfinished/pt_br.json +6ffb0cf20d712aee23a42a9ec440dd7dc92293d6 assets/create/lang/unfinished/ru_ru.json +0ae98a18e59f478da41d8c5d832737b65f6a8c8a assets/create/lang/unfinished/zh_cn.json +4c96e5a76e72368a59190b7588d389fdd2cc75e1 assets/create/lang/unfinished/zh_tw.json 487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json 3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json @@ -1261,6 +1262,7 @@ c1da21be9f1af4f7a2ef4ec9cd92195d65ada316 assets/create/models/item/clockwork_bea dcb09deae110077bcddf090996b51cc66e9a7de3 assets/create/models/item/cogwheel.json 7717e3b21cff39f497f07687c70c1fa40eaa756d assets/create/models/item/content_observer.json 9dbd63c9e1b09a663fd4b83d76e3ab5967086167 assets/create/models/item/controller_rail.json +10397036fc0bb1e18a767cfd7b19b10d805a83fe assets/create/models/item/copper_backtank.json 965a90a882d85dba93b30af9bce7ecf8e68ce747 assets/create/models/item/copper_block.json 759bcb5fe7dfdd628716f9b4ff19a5ab00393381 assets/create/models/item/copper_casing.json c2a320162daa2d24cef969d1d14a0cbd55eb574f assets/create/models/item/copper_ingot.json @@ -1317,6 +1319,8 @@ a215bca75c32124c4cb070065967de1d56c6c57f assets/create/models/item/diorite_cobbl 645a16dfb3619cedf2046e1d0869a27394e6460a assets/create/models/item/diorite_cobblestone_stairs.json 32ebea959ce34458ac2f5ae105f9b415ab18ae4c assets/create/models/item/diorite_cobblestone_wall.json e0ecc0a20cf9dd54ccfc48e0041d5220b2c8316e assets/create/models/item/diorite_pillar.json +6006f88e56d74a3fd75a9dddb25af39075e0482b assets/create/models/item/diving_boots.json +df8cfe7e8eb527329094396e11222e9097e309d7 assets/create/models/item/diving_helmet.json 1bd32eb16dee4bbf313a8813a7f1461ea5feeffe assets/create/models/item/dolomite.json 4c5e12f1acb8c4abc24b9dd80e5cbbf3a5cbd89c assets/create/models/item/dolomite_bricks.json ebb596ce665b085e501ee2fd9a5371ce53e40553 assets/create/models/item/dolomite_bricks_slab.json @@ -1647,8 +1651,8 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear 866fbb0ce2878a73e0440d1caf6534c8bd7c384f assets/create/models/item/zinc_ingot.json a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json -7b73f40a65af0c2288c886928c609ec783c0fc40 assets/create/sounds.json -0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json +096382a4c025b5ffdde9c496ee9da0d5345fbe17 assets/create/sounds.json +5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json 187921fa131b06721bfaf63f2623a28c141aae9a data/create/advancements/andesite_alloy.json 0ea2db7173b5be28b289ea7c9a6a0cf5805c60c7 data/create/advancements/andesite_casing.json 83c046bd200623933545c9e4326f782fb02c87fa data/create/advancements/arm_blaze_burner.json @@ -1769,6 +1773,9 @@ c33e122c534a7a134f69faa36446ce7564d8a705 data/create/advancements/recipes/buildi c368cadffa9177fefb9e92ff4453b40bc8dd670d data/create/advancements/recipes/create.base/blasting/copper_ingot_from_ore.json 8fffce2a5c5dd88d52e3b006fa92fb18cf2f1571 data/create/advancements/recipes/create.base/blasting/zinc_ingot_from_crushed.json 4bb60ef5e186f12a9d52e61319db8c78300c64ab data/create/advancements/recipes/create.base/blasting/zinc_ingot_from_ore.json +d1d8cf6e1c95b7d99bf873fa6fee033103f995fd data/create/advancements/recipes/create.base/crafting/appliances/copper_backtank.json +46c04e685ab345a80598176f7ac68a044a76cd76 data/create/advancements/recipes/create.base/crafting/appliances/diving_boots.json +5f06b7dcf2af11f30c2e10ade4ac3fd172bc04df data/create/advancements/recipes/create.base/crafting/appliances/diving_helmet.json dd487f98c411f1ff22cb7fc208b8cc24b27deb2f data/create/advancements/recipes/create.base/crafting/appliances/dough.json 51cdcf168087f47e4458eed7543d227da1ee5ca0 data/create/advancements/recipes/create.base/crafting/appliances/tree_fertilizer.json d531f87f425d199aee4777a588c1cd6cab6f5173 data/create/advancements/recipes/create.base/crafting/curiosities/minecart_coupling.json @@ -2420,6 +2427,7 @@ d76113310fc56eca6382d44df174096f2210d416 data/create/loot_tables/blocks/clutch.j 673ba3a5deae9133b917d16c9eb87fe4c2873c8a data/create/loot_tables/blocks/cogwheel.json 096af6b5df6e87d36cb936eea9b00982a554f4af data/create/loot_tables/blocks/content_observer.json 80c2cb21714651116a71f449368c06bb22e841ce data/create/loot_tables/blocks/controller_rail.json +662b8d41803ef166d20850653b36759de719206c data/create/loot_tables/blocks/copper_backtank.json f38802b919c49f162f102d6e5d94113f05bf4ab1 data/create/loot_tables/blocks/copper_block.json 5a65a18ea787130ac7b8f5652bfa5ed187446649 data/create/loot_tables/blocks/copper_casing.json 31a51237763c374b7cdf39b9b62c14e965871047 data/create/loot_tables/blocks/copper_ore.json @@ -2718,7 +2726,7 @@ cecaac07bd275bb1ae9e302f0bf44b581e74105d data/create/loot_tables/blocks/rope_pul aa6af37356d65105efab2503ffe75f778cfe873b data/create/loot_tables/blocks/rotation_speed_controller.json 30de11bec82606fead9d6bff7bba0232e97f1039 data/create/loot_tables/blocks/sail_frame.json 069701cb804b6522c18624a0d4f3f949ff8b0281 data/create/loot_tables/blocks/schematic_table.json -c4a89145334addfd0dd1fedf7fa75ba07a7d3490 data/create/loot_tables/blocks/schematicannon.json +a2b172dc749176d4df34729007019605fc6dd150 data/create/loot_tables/blocks/schematicannon.json af1bbbb8236b4ab05a6a8edc6db960bc758cbdf3 data/create/loot_tables/blocks/scoria.json bb670ac5dd2fa4c743bc268cd0547926eb6cdb68 data/create/loot_tables/blocks/scoria_bricks.json a7217ea301a282d0ef52f2d8c06dd8683398408d data/create/loot_tables/blocks/scoria_bricks_slab.json @@ -2837,6 +2845,9 @@ f7879d404d7a848d818278b4e788f285a9087e63 data/create/recipes/compacting/blaze_ca 27c23592d8fec03072a04544d3598ca9b1c798ff data/create/recipes/compacting/chocolate.json 7b2ef15dd28d1d8a450ea49a82dfb361d1adde4c data/create/recipes/compacting/diorite_from_flint.json 7657603e95ccf83dd0d4b104635db66e531d092a data/create/recipes/compacting/granite_from_flint.json +30030b15caa11b3a7c0104adb62fe74e8c7c0df1 data/create/recipes/crafting/appliances/copper_backtank.json +9ad82ac5ce02654b7af7f1a570a6b2c01e140da3 data/create/recipes/crafting/appliances/diving_boots.json +813081c6421b34e161ec44e8e470994c282f76be data/create/recipes/crafting/appliances/diving_helmet.json 19526da3a59fc136654ff1bc93c0251581f397a9 data/create/recipes/crafting/appliances/dough.json 7b5f863dda3d05a79cb85943a178eba0bd8a7dc7 data/create/recipes/crafting/appliances/slime_ball.json b159ba84428eee6ef6e23df1766f2a18f2c8a63e data/create/recipes/crafting/appliances/tree_fertilizer.json @@ -3634,7 +3645,7 @@ d3fdb8ece6cb072a93ddb64a0baad5ac952117a4 data/create/recipes/weathered_limestone 0f3c993eb6dd3f37953f304b8fad15bf60469ef4 data/create/recipes/weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting.json 6eceb25fabbb6b389ca35de3b829ad061c9c456a data/create/recipes/weathered_limestone_pillar.json 11667414f73bc2d00bda7c5c1a7d2934bf6e9165 data/create/recipes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json -eedf31af7134d03656c5fa57229982f9c5bed07c data/create/tags/blocks/brittle.json +20c20a12b0baff2ba493b1405db7d2d8a15b81af data/create/tags/blocks/brittle.json 330bfb3850ba3964b10b1bccbc3cbb9b012cae54 data/create/tags/blocks/fan_heaters.json 3bc64e3a1e7980237435b1770a9ba2102d57fcd4 data/create/tags/blocks/fan_transparent.json 74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/create/tags/blocks/non_movable.json diff --git a/src/generated/resources/assets/create/blockstates/copper_backtank.json b/src/generated/resources/assets/create/blockstates/copper_backtank.json new file mode 100644 index 000000000..7aa8d2045 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/copper_backtank.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=north,waterlogged=false": { + "model": "create:block/copper_backtank/block" + }, + "facing=south,waterlogged=false": { + "model": "create:block/copper_backtank/block", + "y": 180 + }, + "facing=west,waterlogged=false": { + "model": "create:block/copper_backtank/block", + "y": 270 + }, + "facing=east,waterlogged=false": { + "model": "create:block/copper_backtank/block", + "y": 90 + }, + "facing=north,waterlogged=true": { + "model": "create:block/copper_backtank/block" + }, + "facing=south,waterlogged=true": { + "model": "create:block/copper_backtank/block", + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/copper_backtank/block", + "y": 270 + }, + "facing=east,waterlogged=true": { + "model": "create:block/copper_backtank/block", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index 2c09d4e6a..f2ca44e84 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -55,6 +55,7 @@ "block.create.cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186", "block.create.content_observer": "\u0279\u01DD\u028C\u0279\u01DDsqO \u0287u\u01DD\u0287uo\u0186", "block.create.controller_rail": "\u05DF\u0131\u0250\u1D1A \u0279\u01DD\u05DF\u05DFo\u0279\u0287uo\u0186", + "block.create.copper_backtank": "\u029Eu\u0250\u0287\u029E\u0254\u0250\u15FA \u0279\u01DDddo\u0186", "block.create.copper_block": "\u0279\u01DDddo\u0186 \u025Fo \u029E\u0254o\u05DF\u15FA", "block.create.copper_casing": "bu\u0131s\u0250\u0186 \u0279\u01DDddo\u0186", "block.create.copper_ore": "\u01DD\u0279O \u0279\u01DDddo\u0186", @@ -432,6 +433,7 @@ "item.create.chocolate_glazed_berries": "s\u01DD\u0131\u0279\u0279\u01DD\u15FA p\u01DDz\u0250\u05DF\u2141 \u01DD\u0287\u0250\u05DFo\u0254o\u0265\u0186", "item.create.chromatic_compound": "punod\u026Fo\u0186 \u0254\u0131\u0287\u0250\u026Fo\u0279\u0265\u0186", "item.create.cinder_flour": "\u0279no\u05DF\u2132 \u0279\u01DDpu\u0131\u0186", + "item.create.copper_backtank": "\u029Eu\u0250\u0287\u029E\u0254\u0250\u15FA \u0279\u01DDddo\u0186", "item.create.copper_ingot": "\u0287obuI \u0279\u01DDddo\u0186", "item.create.copper_nugget": "\u0287\u01DDbbnN \u0279\u01DDddo\u0186", "item.create.copper_sheet": "\u0287\u01DD\u01DD\u0265S \u0279\u01DDddo\u0186", @@ -450,6 +452,8 @@ "item.create.crushed_tin_ore": "\u01DD\u0279O u\u0131\u27D8 p\u01DD\u0265sn\u0279\u0186", "item.create.crushed_uranium_ore": "\u01DD\u0279O \u026Fn\u0131u\u0250\u0279\u2229 p\u01DD\u0265sn\u0279\u0186", "item.create.crushed_zinc_ore": "\u01DD\u0279O \u0254u\u0131Z p\u01DD\u0265sn\u0279\u0186", + "item.create.diving_boots": "s\u0287oo\u15FA bu\u0131\u028C\u0131\u15E1", + "item.create.diving_helmet": "\u0287\u01DD\u026F\u05DF\u01DDH bu\u0131\u028C\u0131\u15E1", "item.create.dough": "\u0265bno\u15E1", "item.create.electron_tube": "\u01DDqn\u27D8 uo\u0279\u0287\u0254\u01DD\u05DF\u018E", "item.create.empty_blaze_burner": "\u0279\u01DDu\u0279n\u15FA \u01DDz\u0250\u05DF\u15FA \u028E\u0287d\u026F\u018E", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 23134ba41..d1b9134b4 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -41,27 +41,28 @@ "block.create.brass_funnel": "Brass Funnel", "block.create.brass_tunnel": "Brass Tunnel", "block.create.brown_sail": "Brown Sail", - "block.create.brown_seat": "Brown Seat", - "block.create.brown_valve_handle": "Brown Valve Handle", - "block.create.cart_assembler": "Cart Assembler", - "block.create.chiseled_dark_scoria": "Chiseled Dark Scoria", - "block.create.chiseled_dolomite": "Chiseled Dolomite", - "block.create.chiseled_gabbro": "Chiseled Gabbro", - "block.create.chiseled_limestone": "Chiseled Limestone", - "block.create.chiseled_scoria": "Chiseled Scoria", - "block.create.chiseled_weathered_limestone": "Chiseled Weathered Limestone", - "block.create.chocolate": "Chocolate", + "block.create.brown_seat": "Brown Seat", + "block.create.brown_valve_handle": "Brown Valve Handle", + "block.create.cart_assembler": "Cart Assembler", + "block.create.chiseled_dark_scoria": "Chiseled Dark Scoria", + "block.create.chiseled_dolomite": "Chiseled Dolomite", + "block.create.chiseled_gabbro": "Chiseled Gabbro", + "block.create.chiseled_limestone": "Chiseled Limestone", + "block.create.chiseled_scoria": "Chiseled Scoria", + "block.create.chiseled_weathered_limestone": "Chiseled Weathered Limestone", + "block.create.chocolate": "Chocolate", "block.create.chromatic_projector": "Chromatic Projector", - "block.create.chute": "Chute", - "block.create.clockwork_bearing": "Clockwork Bearing", - "block.create.clutch": "Clutch", - "block.create.cogwheel": "Cogwheel", - "block.create.content_observer": "Content Observer", - "block.create.controller_rail": "Controller Rail", - "block.create.copper_block": "Block of Copper", - "block.create.copper_casing": "Copper Casing", - "block.create.copper_ore": "Copper Ore", - "block.create.copper_shingles": "Copper Shingles", + "block.create.chute": "Chute", + "block.create.clockwork_bearing": "Clockwork Bearing", + "block.create.clutch": "Clutch", + "block.create.cogwheel": "Cogwheel", + "block.create.content_observer": "Content Observer", + "block.create.controller_rail": "Controller Rail", + "block.create.copper_backtank": "Copper Backtank", + "block.create.copper_block": "Block of Copper", + "block.create.copper_casing": "Copper Casing", + "block.create.copper_ore": "Copper Ore", + "block.create.copper_shingles": "Copper Shingles", "block.create.copper_tiles": "Copper Tiles", "block.create.copper_valve_handle": "Copper Valve Handle", "block.create.creative_crate": "Creative Crate", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "Chocolate Glazed Berries", "item.create.chromatic_compound": "Chromatic Compound", "item.create.cinder_flour": "Cinder Flour", + "item.create.copper_backtank": "Copper Backtank", "item.create.copper_ingot": "Copper Ingot", "item.create.copper_nugget": "Copper Nugget", "item.create.copper_sheet": "Copper Sheet", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "Crushed Tin Ore", "item.create.crushed_uranium_ore": "Crushed Uranium Ore", "item.create.crushed_zinc_ore": "Crushed Zinc Ore", + "item.create.diving_boots": "Diving Boots", + "item.create.diving_helmet": "Diving Helmet", "item.create.dough": "Dough", "item.create.electron_tube": "Electron Tube", "item.create.empty_blaze_burner": "Empty Blaze Burner", @@ -678,6 +682,7 @@ "create.recipe.fan_blasting.fan": "Fan behind Lava", "create.recipe.pressing": "Pressing", "create.recipe.mixing": "Mixing", + "create.recipe.deploying": "Deploying", "create.recipe.automatic_shapeless": "Automated Shapeless Crafting", "create.recipe.automatic_brewing": "Automated Brewing", "create.recipe.packing": "Compacting", @@ -1138,11 +1143,13 @@ "create.subtitle.mixing": "Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "Mechanical Press bonks", "create.subtitle.worldshaper_place": "Worldshaper zaps", + "create.subtitle.deployer_polish": "Deployer applies polish", "create.subtitle.depot_slide": "Item slides", "create.subtitle.deny": "Declining boop", "create.subtitle.blaze_munch": "Blaze Burner munches", "create.subtitle.schematicannon_launch_block": "Schematicannon fires", "create.subtitle.funnel_flap": "Funnel Flaps", + "create.subtitle.copper_armor_equip": "Diving equipment clinks", "create.subtitle.schematicannon_finish": "Schematicannon dings", "create.subtitle.scroll_value": "Scroll-input clicks", "create.subtitle.mechanical_press_activation": "Mechanical Press clangs", diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index d28a04eb6..bffa0a121 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 935", + "_": "Missing Localizations: 942", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Zahnrad", "block.create.content_observer": "Inhaltsbeobachter", "block.create.controller_rail": "Steuerungsschiene", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Kupfer Block", "block.create.copper_casing": "Kupferrahmen", "block.create.copper_ore": "Kupfererz", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "Schokoladenglasierte Beeren", "item.create.chromatic_compound": "Chromatische Verbindung", "item.create.cinder_flour": "Aschenmehl", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "Kupferbarren", "item.create.copper_nugget": "Kupferklumpen", "item.create.copper_sheet": "Kupferblech", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "Zerkleinertes Zinnerz", "item.create.crushed_uranium_ore": "Zerkleinertes Uranerz", "item.create.crushed_zinc_ore": "Zerkleinertes Zinkerz", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Teig", "item.create.electron_tube": "Elektronenröhre", "item.create.empty_blaze_burner": "Leerer Lohenbrenner", @@ -678,6 +682,7 @@ "create.recipe.fan_blasting.fan": "Propeller hinter Lava", "create.recipe.pressing": "Mechanische Presse", "create.recipe.mixing": "Mixen", + "create.recipe.deploying": "UNLOCALIZED: Deploying", "create.recipe.automatic_shapeless": "Automatisiertes Formloses Bauen", "create.recipe.automatic_brewing": "Automatisiertes Brauen", "create.recipe.packing": "Komprimieren", @@ -1138,11 +1143,13 @@ "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "Lohe kaut glücklich", "create.subtitle.schematicannon_launch_block": "Bauplankanone schießt", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", + "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", "create.subtitle.schematicannon_finish": "Bauplankanone endet", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "Mechanische Presse wird aktiviert", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_es.json b/src/generated/resources/assets/create/lang/unfinished/es_es.json index 838d09dcf..12880cfef 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_es.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_es.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 636", + "_": "Missing Localizations: 643", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Rueda dentada", "block.create.content_observer": "Observador de contenidos", "block.create.controller_rail": "Raíl de control", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Bloque de cobre", "block.create.copper_casing": "Revestidor de caliza", "block.create.copper_ore": "Mineral de cobre", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", "item.create.chromatic_compound": "Compuesto cromático", "item.create.cinder_flour": "Harina de ceniza", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "Lingote de cobre", "item.create.copper_nugget": "Pepita de cobre", "item.create.copper_sheet": "Lámina de cobre", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "Mineral de estaño molido", "item.create.crushed_uranium_ore": "Mineral de uranio molido", "item.create.crushed_zinc_ore": "Mineral de zinc molido", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Masilla", "item.create.electron_tube": "Tubo de electrones", "item.create.empty_blaze_burner": "Quemador de Blaze vacío", @@ -678,6 +682,7 @@ "create.recipe.fan_blasting.fan": "Ventilador detrás de la lava", "create.recipe.pressing": "Prensando", "create.recipe.mixing": "Mezclando", + "create.recipe.deploying": "UNLOCALIZED: Deploying", "create.recipe.automatic_shapeless": "Elaboración automatizada de productos sin forma", "create.recipe.automatic_brewing": "Elaboración de cerveza automatizada", "create.recipe.packing": "Compactando", @@ -1138,11 +1143,13 @@ "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "Blaze mastica felizmente", "create.subtitle.schematicannon_launch_block": "Disparos de Schematicannon", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", + "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", "create.subtitle.schematicannon_finish": "Acabados de Schematicannon", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "La Prensa Mecánica se activa", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_mx.json b/src/generated/resources/assets/create/lang/unfinished/es_mx.json index 5e4233492..f3de8dd15 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_mx.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_mx.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1259", + "_": "Missing Localizations: 1266", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Rueda Dentada", "block.create.content_observer": "Observador de Contenido", "block.create.controller_rail": "Vía de Control", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Bloque de Cobre", "block.create.copper_casing": "Carcasa de Cobre", "block.create.copper_ore": "Mineral de Cobre", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", "item.create.chromatic_compound": "Compuesto Cromático", "item.create.cinder_flour": "Ceniza Molida", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "Lingote de Cobre", "item.create.copper_nugget": "Pepita de Cobre", "item.create.copper_sheet": "Lámina de Cobre", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "Mineral de Estaño Molido", "item.create.crushed_uranium_ore": "Mineral de Uranio Molido", "item.create.crushed_zinc_ore": "Mineral de Zinc Molido", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Masa", "item.create.electron_tube": "Válvula Electrónica", "item.create.empty_blaze_burner": "Quemador de Blaze Vacío", @@ -678,6 +682,7 @@ "create.recipe.fan_blasting.fan": "UNLOCALIZED: Fan behind Lava", "create.recipe.pressing": "UNLOCALIZED: Pressing", "create.recipe.mixing": "UNLOCALIZED: Mixing", + "create.recipe.deploying": "UNLOCALIZED: Deploying", "create.recipe.automatic_shapeless": "UNLOCALIZED: Automated Shapeless Crafting", "create.recipe.automatic_brewing": "UNLOCALIZED: Automated Brewing", "create.recipe.packing": "UNLOCALIZED: Compacting", @@ -1138,11 +1143,13 @@ "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches", "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", + "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index 5dbf5571b..558c2ff87 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1187", + "_": "Missing Localizations: 1194", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Roue dentée", "block.create.content_observer": "Observateur de contenu", "block.create.controller_rail": "Rails controlleurs", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Bloc de cuivre", "block.create.copper_casing": "Revêtement en cuivre", "block.create.copper_ore": "Minerai de cuivre", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", "item.create.chromatic_compound": "Composé chromatique", "item.create.cinder_flour": "Farine de braise", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "Lingot de cuivre", "item.create.copper_nugget": "Pépite de cuivre", "item.create.copper_sheet": "Plaques de cuivre", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "Etain concassé", "item.create.crushed_uranium_ore": "Uranium concassé", "item.create.crushed_zinc_ore": "Zinc concassé", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Pâte", "item.create.electron_tube": "Tube électronique", "item.create.empty_blaze_burner": "Brûleur à blaze vide", @@ -678,6 +682,7 @@ "create.recipe.fan_blasting.fan": "Ventilateur derrière de la lave", "create.recipe.pressing": "Pressage", "create.recipe.mixing": "Mixage", + "create.recipe.deploying": "UNLOCALIZED: Deploying", "create.recipe.automatic_shapeless": "UNLOCALIZED: Automated Shapeless Crafting", "create.recipe.automatic_brewing": "Alchimie automatisée", "create.recipe.packing": "Compactage", @@ -1138,11 +1143,13 @@ "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches", "create.subtitle.schematicannon_launch_block": "Tir de schémacanon", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", + "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", "create.subtitle.schematicannon_finish": "Fin de schémacanon", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "Activation de la presse mechanique", diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index 82e91b1f4..afa0b3942 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 653", + "_": "Missing Localizations: 660", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Ruota dentata", "block.create.content_observer": "Osservatore dei contenuti", "block.create.controller_rail": "Binario di controllo", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Blocco di rame", "block.create.copper_casing": "Involucro di rame", "block.create.copper_ore": "Rame grezzo", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", "item.create.chromatic_compound": "Composto cromatico", "item.create.cinder_flour": "Cenere farinosa", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "Lingotto di rame", "item.create.copper_nugget": "Pepita di rame", "item.create.copper_sheet": "Lamiera di rame", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "Stagno grezzo frantumato", "item.create.crushed_uranium_ore": "Uranio grezzo frantumato", "item.create.crushed_zinc_ore": "Zinco grezzo frantumato", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Impasto", "item.create.electron_tube": "Valvola", "item.create.empty_blaze_burner": "Inceneritore di blaze vuoto", @@ -678,6 +682,7 @@ "create.recipe.fan_blasting.fan": "Ventilatore dietro la lava", "create.recipe.pressing": "Pressatura", "create.recipe.mixing": "Mescolamento", + "create.recipe.deploying": "UNLOCALIZED: Deploying", "create.recipe.automatic_shapeless": "Costruzione informe automatizzata", "create.recipe.automatic_brewing": "Fermentazione automatica", "create.recipe.packing": "Compattazione", @@ -1138,11 +1143,13 @@ "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "Il blaze lo gusta felicemente", "create.subtitle.schematicannon_launch_block": "Tiri del cannoneschematico", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", + "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", "create.subtitle.schematicannon_finish": "Finiture cannoneschematico", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "Pressa meccanica attiva", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index bae1281d3..9bf53aabf 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 17", + "_": "Missing Localizations: 24", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "歯車", "block.create.content_observer": "コンテンツオブザーバー", "block.create.controller_rail": "コントローラーレール", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "銅ブロック", "block.create.copper_casing": "銅ケーシング", "block.create.copper_ore": "銅鉱石", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "チョコレートグレーズドベリー", "item.create.chromatic_compound": "色彩の化合物", "item.create.cinder_flour": "ネザーラックの粉", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "銅インゴット", "item.create.copper_nugget": "銅塊", "item.create.copper_sheet": "銅板", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "砕いた錫鉱石", "item.create.crushed_uranium_ore": "砕いたウラン鉱石", "item.create.crushed_zinc_ore": "砕いた亜鉛鉱石", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "生地", "item.create.electron_tube": "電子管", "item.create.empty_blaze_burner": "空のブレイズバーナー", @@ -678,6 +682,7 @@ "create.recipe.fan_blasting.fan": "溶岩の奥のケース入りファン", "create.recipe.pressing": "プレス", "create.recipe.mixing": "混合", + "create.recipe.deploying": "UNLOCALIZED: Deploying", "create.recipe.automatic_shapeless": "自動不定形クラフト", "create.recipe.automatic_brewing": "自動醸造", "create.recipe.packing": "圧縮", @@ -1138,11 +1143,13 @@ "create.subtitle.mixing": "混ぜる音", "create.subtitle.mechanical_press_activation_belt": "メカニカルプレスがボンと鳴る", "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", "create.subtitle.depot_slide": "アイテムが滑る", "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "ブレイズの咀嚼音", "create.subtitle.schematicannon_launch_block": "概略図砲が発射する", "create.subtitle.funnel_flap": "ファンネルがはためく", + "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", "create.subtitle.schematicannon_finish": "概略図砲が作業を終える", "create.subtitle.scroll_value": "スクロールのカチカチ音", "create.subtitle.mechanical_press_activation": "メカニカルプレスがガーンと鳴る", diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index ee9042656..17289ec89 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 706", + "_": "Missing Localizations: 713", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "톱니바퀴", "block.create.content_observer": "정보 감지기", "block.create.controller_rail": "방향 레일", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "구리 블록", "block.create.copper_casing": "구리 케이스", "block.create.copper_ore": "구리 광석", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", "item.create.chromatic_compound": "색채 혼합물", "item.create.cinder_flour": "잿가루", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "구리 주괴", "item.create.copper_nugget": "구리 조각", "item.create.copper_sheet": "구리 판", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "분쇄된 아연 광석", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "반죽", "item.create.electron_tube": "전지 튜브", "item.create.empty_blaze_burner": "빈 블레이즈 버너", @@ -678,6 +682,7 @@ "create.recipe.fan_blasting.fan": "용암과 선풍기", "create.recipe.pressing": "압착", "create.recipe.mixing": "혼합", + "create.recipe.deploying": "UNLOCALIZED: Deploying", "create.recipe.automatic_shapeless": "무형 자동 조합", "create.recipe.automatic_brewing": "자동 양조", "create.recipe.packing": "압축", @@ -1138,11 +1143,13 @@ "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "블레이즈가 행복하게 섭취함", "create.subtitle.schematicannon_launch_block": "청사진 대포가 발포함", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", + "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", "create.subtitle.schematicannon_finish": "청사진 대포가 끝남", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "압착기가 가동됨", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index a1da4d3be..acb783a8e 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1570", + "_": "Missing Localizations: 1577", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Tandwiel", "block.create.content_observer": "UNLOCALIZED: Content Observer", "block.create.controller_rail": "UNLOCALIZED: Controller Rail", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "UNLOCALIZED: Block of Copper", "block.create.copper_casing": "UNLOCALIZED: Copper Casing", "block.create.copper_ore": "UNLOCALIZED: Copper Ore", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "Koperstaaf", "item.create.copper_nugget": "Koper klompje", "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Deeg", "item.create.electron_tube": "UNLOCALIZED: Electron Tube", "item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner", @@ -678,6 +682,7 @@ "create.recipe.fan_blasting.fan": "UNLOCALIZED: Fan behind Lava", "create.recipe.pressing": "Persen", "create.recipe.mixing": "Mengen", + "create.recipe.deploying": "UNLOCALIZED: Deploying", "create.recipe.automatic_shapeless": "UNLOCALIZED: Automated Shapeless Crafting", "create.recipe.automatic_brewing": "UNLOCALIZED: Automated Brewing", "create.recipe.packing": "Compressen", @@ -1138,11 +1143,13 @@ "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches", "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", + "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs", diff --git a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json index b907c7c33..3b4dd77cd 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json +++ b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 31", + "_": "Missing Localizations: 38", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Koło zębate", "block.create.content_observer": "Detektor zawartości", "block.create.controller_rail": "Tory sterujące", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Blok miedzi", "block.create.copper_casing": "Miedziana Obudowa", "block.create.copper_ore": "Ruda miedzi", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "Jagody w czekoladzie", "item.create.chromatic_compound": "Związek chromatyczny", "item.create.cinder_flour": "Rozżarzona mąka", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "Sztabka miedzi", "item.create.copper_nugget": "Bryłka miedzi", "item.create.copper_sheet": "Arkusz miedzi", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "Rozkruszona ruda cyny", "item.create.crushed_uranium_ore": "Rozkruszona ruda uranu", "item.create.crushed_zinc_ore": "Rozkruszona ruda cynku", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Ciasto", "item.create.electron_tube": "Lampa elektronowa", "item.create.empty_blaze_burner": "Pusty płomienny palnik", @@ -678,6 +682,7 @@ "create.recipe.fan_blasting.fan": "Wiatrak za lawą", "create.recipe.pressing": "Tłoczenie", "create.recipe.mixing": "Mieszanie", + "create.recipe.deploying": "UNLOCALIZED: Deploying", "create.recipe.automatic_shapeless": "Zautomatyzowanie nieokreślone konstruowanie", "create.recipe.automatic_brewing": "Zautomatyzowane warzenie", "create.recipe.packing": "Prasowanie", @@ -1138,11 +1143,13 @@ "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "Płomyk szczęśliwie przeżuwa", "create.subtitle.schematicannon_launch_block": "Schematoarmata strzela", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", + "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", "create.subtitle.schematicannon_finish": "Schematoarmata skończyła", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "Mechaniczna prasa się uruchamia", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index 338fb9e10..4d81d99bb 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1622", + "_": "Missing Localizations: 1629", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Roda Dentada", "block.create.content_observer": "UNLOCALIZED: Content Observer", "block.create.controller_rail": "UNLOCALIZED: Controller Rail", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "UNLOCALIZED: Block of Copper", "block.create.copper_casing": "UNLOCALIZED: Copper Casing", "block.create.copper_ore": "UNLOCALIZED: Copper Ore", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "UNLOCALIZED: Copper Ingot", "item.create.copper_nugget": "UNLOCALIZED: Copper Nugget", "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Massa", "item.create.electron_tube": "UNLOCALIZED: Electron Tube", "item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner", @@ -678,6 +682,7 @@ "create.recipe.fan_blasting.fan": "UNLOCALIZED: Fan behind Lava", "create.recipe.pressing": "Prensa Mecânica", "create.recipe.mixing": "UNLOCALIZED: Mixing", + "create.recipe.deploying": "UNLOCALIZED: Deploying", "create.recipe.automatic_shapeless": "UNLOCALIZED: Automated Shapeless Crafting", "create.recipe.automatic_brewing": "UNLOCALIZED: Automated Brewing", "create.recipe.packing": "UNLOCALIZED: Compacting", @@ -1138,11 +1143,13 @@ "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches", "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", + "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index c03df85e7..1f092d472 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 550", + "_": "Missing Localizations: 557", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Шестерня", "block.create.content_observer": "Наблюдетель за содержимым", "block.create.controller_rail": "Контролирующая рельса", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Медный блок", "block.create.copper_casing": "Медный корпус", "block.create.copper_ore": "Медная руда", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "Ягоды в шоколадной глазури", "item.create.chromatic_compound": "Хроматический компаунд", "item.create.cinder_flour": "Незераковая пыль", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "Медный слиток", "item.create.copper_nugget": "Кусочек меди", "item.create.copper_sheet": "Медный лист", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "Дроблёная оловянная руда", "item.create.crushed_uranium_ore": "Дроблёная урановая руда", "item.create.crushed_zinc_ore": "Дроблёная цинковая руда", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Тесто", "item.create.electron_tube": "Электронная лампа", "item.create.empty_blaze_burner": "Пустая горелека Всполоха", @@ -678,6 +682,7 @@ "create.recipe.fan_blasting.fan": "Вентилятор за текущей лавой", "create.recipe.pressing": "Прессование", "create.recipe.mixing": "Смешивание", + "create.recipe.deploying": "UNLOCALIZED: Deploying", "create.recipe.automatic_shapeless": "Автоматическая бесформенная сборка", "create.recipe.automatic_brewing": "Автоматическое смешивание", "create.recipe.packing": "Прессование", @@ -1138,11 +1143,13 @@ "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "Всполох радостно жуёт", "create.subtitle.schematicannon_launch_block": "Выстрелы схематичной пушки", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", + "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", "create.subtitle.schematicannon_finish": "Схематичная пушка закончила работу", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "Механический пресс активирован", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index 15c2d7434..513325f0d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 36", + "_": "Missing Localizations: 43", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "齿轮", "block.create.content_observer": "物品侦测器", "block.create.controller_rail": "控制铁轨", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "铜块", "block.create.copper_casing": "铜机壳", "block.create.copper_ore": "铜矿石", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "巧克力包层浆果", "item.create.chromatic_compound": "异彩化合物", "item.create.cinder_flour": "下界面粉", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "铜锭", "item.create.copper_nugget": "铜粒", "item.create.copper_sheet": "铜板", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "粉碎锡矿石", "item.create.crushed_uranium_ore": "粉碎铀矿石", "item.create.crushed_zinc_ore": "粉碎锌矿石", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "面团", "item.create.electron_tube": "电子管", "item.create.empty_blaze_burner": "空的烈焰人燃烧室", @@ -678,6 +682,7 @@ "create.recipe.fan_blasting.fan": "在熔岩后放置鼓风机", "create.recipe.pressing": "金属压片", "create.recipe.mixing": "混合搅拌", + "create.recipe.deploying": "UNLOCALIZED: Deploying", "create.recipe.automatic_shapeless": "自动搅拌", "create.recipe.automatic_brewing": "自动酿造", "create.recipe.packing": "压块塑形", @@ -1138,11 +1143,13 @@ "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "烈焰人:咀嚼", "create.subtitle.schematicannon_launch_block": "蓝图加农炮:发射", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", + "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", "create.subtitle.schematicannon_finish": "蓝图加农炮:叮", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "辊压机:工作中", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json index 2beea3cc9..8b3a4f40a 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 655", + "_": "Missing Localizations: 662", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "齒輪", "block.create.content_observer": "物品偵測器", "block.create.controller_rail": "控制鐵軌", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "銅磚", "block.create.copper_casing": "銅機殼", "block.create.copper_ore": "銅礦石", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", "item.create.chromatic_compound": "異彩化合物", "item.create.cinder_flour": "地獄麵粉", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "銅錠", "item.create.copper_nugget": "銅粒", "item.create.copper_sheet": "銅板", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "碎狀錫礦石", "item.create.crushed_uranium_ore": "碎狀鈾礦石", "item.create.crushed_zinc_ore": "碎狀鋅礦石", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "麵團", "item.create.electron_tube": "真空管", "item.create.empty_blaze_burner": "空的烈焰使者動力爐", @@ -678,6 +682,7 @@ "create.recipe.fan_blasting.fan": "在熔岩後放置鼓風機", "create.recipe.pressing": "金屬壓片", "create.recipe.mixing": "混合攪拌", + "create.recipe.deploying": "UNLOCALIZED: Deploying", "create.recipe.automatic_shapeless": "自動攪拌", "create.recipe.automatic_brewing": "自動釀造", "create.recipe.packing": "壓塊塑形", @@ -1138,11 +1143,13 @@ "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", "create.subtitle.deny": "UNLOCALIZED: Declining boop", "create.subtitle.blaze_munch": "烈焰使者開心地吃著", "create.subtitle.schematicannon_launch_block": "藍圖大炮發射", "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", + "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", "create.subtitle.schematicannon_finish": "藍圖大炮完成任務", "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", "create.subtitle.mechanical_press_activation": "液壓機工作", diff --git a/src/generated/resources/assets/create/models/item/copper_backtank.json b/src/generated/resources/assets/create/models/item/copper_backtank.json new file mode 100644 index 000000000..67c8a0d7e --- /dev/null +++ b/src/generated/resources/assets/create/models/item/copper_backtank.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/copper_backtank/item" +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diving_boots.json b/src/generated/resources/assets/create/models/item/diving_boots.json new file mode 100644 index 000000000..88c9dccb5 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/diving_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "create:item/diving_boots" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diving_helmet.json b/src/generated/resources/assets/create/models/item/diving_helmet.json new file mode 100644 index 000000000..f287c2ca8 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/diving_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "create:item/diving_helmet" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/sounds.json b/src/generated/resources/assets/create/sounds.json index 24f47e279..61a42d76f 100644 --- a/src/generated/resources/assets/create/sounds.json +++ b/src/generated/resources/assets/create/sounds.json @@ -49,6 +49,15 @@ ], "subtitle": "create.subtitle.contraption_disassemble" }, + "copper_armor_equip": { + "sounds": [ + { + "name": "minecraft:item.armor.equip_gold", + "type": "event" + } + ], + "subtitle": "create.subtitle.copper_armor_equip" + }, "crafter_click": { "sounds": [ { @@ -101,6 +110,15 @@ ], "subtitle": "create.subtitle.deny" }, + "deployer_polish": { + "sounds": [ + { + "name": "minecraft:ui.stonecutter.take_result", + "type": "event" + } + ], + "subtitle": "create.subtitle.deployer_polish" + }, "depot_plop": { "sounds": [ { diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/copper_backtank.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/copper_backtank.json new file mode 100644 index 000000000..cec124115 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/copper_backtank.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/appliances/copper_backtank" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "forge:ingots/copper" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/appliances/copper_backtank" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_boots.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_boots.json new file mode 100644 index 000000000..1151c46ef --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_boots.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/appliances/diving_boots" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "forge:ingots/copper" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/appliances/diving_boots" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_helmet.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_helmet.json new file mode 100644 index 000000000..91f879caa --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_helmet.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/appliances/diving_helmet" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "forge:ingots/copper" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/appliances/diving_helmet" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/copper_backtank.json b/src/generated/resources/data/create/loot_tables/blocks/copper_backtank.json new file mode 100644 index 000000000..b5466bfc9 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/copper_backtank.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Air", + "target": "Air", + "op": "replace" + } + ] + } + ], + "name": "create:copper_backtank" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/schematicannon.json b/src/generated/resources/data/create/loot_tables/blocks/schematicannon.json index 255327042..16d2e3ed1 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/schematicannon.json +++ b/src/generated/resources/data/create/loot_tables/blocks/schematicannon.json @@ -6,6 +6,19 @@ "entries": [ { "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Options", + "target": "BlockEntityTag.Options", + "op": "replace" + } + ] + } + ], "name": "create:schematicannon" } ], diff --git a/src/generated/resources/data/create/recipes/crafting/appliances/copper_backtank.json b/src/generated/resources/data/create/recipes/crafting/appliances/copper_backtank.json new file mode 100644 index 000000000..a99c83f9d --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/appliances/copper_backtank.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "AGA", + "PPP", + " P " + ], + "key": { + "G": { + "item": "create:shaft" + }, + "A": { + "item": "create:andesite_alloy" + }, + "P": { + "tag": "forge:ingots/copper" + } + }, + "result": { + "item": "create:copper_backtank" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/appliances/diving_boots.json b/src/generated/resources/data/create/recipes/crafting/appliances/diving_boots.json new file mode 100644 index 000000000..790d1fd91 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/appliances/diving_boots.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "P P", + "P P", + "G G" + ], + "key": { + "G": { + "item": "create:andesite_alloy" + }, + "P": { + "tag": "forge:ingots/copper" + } + }, + "result": { + "item": "create:diving_boots" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/appliances/diving_helmet.json b/src/generated/resources/data/create/recipes/crafting/appliances/diving_helmet.json new file mode 100644 index 000000000..ebc49ae69 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/appliances/diving_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "PPP", + "PGP" + ], + "key": { + "G": { + "tag": "forge:glass" + }, + "P": { + "tag": "forge:ingots/copper" + } + }, + "result": { + "item": "create:diving_helmet" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/brittle.json b/src/generated/resources/data/create/tags/blocks/brittle.json index c028ad70c..7970c3bf9 100644 --- a/src/generated/resources/data/create/tags/blocks/brittle.json +++ b/src/generated/resources/data/create/tags/blocks/brittle.json @@ -25,6 +25,7 @@ "create:furnace_engine", "create:redstone_link", "#minecraft:doors", + "#minecraft:beds", "minecraft:flower_pot", "minecraft:bell", "minecraft:cocoa" diff --git a/src/main/java/com/simibubi/create/AllBlockPartials.java b/src/main/java/com/simibubi/create/AllBlockPartials.java index ec2984795..adb99f9b8 100644 --- a/src/main/java/com/simibubi/create/AllBlockPartials.java +++ b/src/main/java/com/simibubi/create/AllBlockPartials.java @@ -98,6 +98,9 @@ public class AllBlockPartials { GOGGLES = get("goggles"), EJECTOR_TOP = get("weighted_ejector/top"), + + COPPER_BACKTANK_SHAFT = get("copper_backtank/block_shaft_input"), + COPPER_BACKTANK_COGS = get("copper_backtank/block_cogs"), COUPLING_ATTACHMENT = getEntity("minecart_coupling/attachment"), COUPLING_RING = getEntity("minecart_coupling/ring"), diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index b55e0ce10..bf280e8fb 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -115,6 +115,7 @@ import com.simibubi.create.content.contraptions.relays.encased.GearshiftBlock; import com.simibubi.create.content.contraptions.relays.gauge.GaugeBlock; import com.simibubi.create.content.contraptions.relays.gauge.GaugeGenerator; import com.simibubi.create.content.contraptions.relays.gearbox.GearboxBlock; +import com.simibubi.create.content.curiosities.armor.CopperBacktankBlock; import com.simibubi.create.content.curiosities.projector.ChromaticProjectorBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelBlock; @@ -181,6 +182,15 @@ import net.minecraft.data.ShapedRecipeBuilder; import net.minecraft.item.DyeColor; import net.minecraft.item.Item; import net.minecraft.item.Rarity; +import net.minecraft.loot.ConstantRange; +import net.minecraft.loot.ItemLootEntry; +import net.minecraft.loot.LootPool; +import net.minecraft.loot.LootTable; +import net.minecraft.loot.LootTable.Builder; +import net.minecraft.loot.conditions.ILootCondition.IBuilder; +import net.minecraft.loot.conditions.SurvivesExplosion; +import net.minecraft.loot.functions.CopyName; +import net.minecraft.loot.functions.CopyNbt; import net.minecraft.state.properties.PistonType; import net.minecraft.tags.BlockTags; import net.minecraft.tags.ItemTags; @@ -206,6 +216,16 @@ public class AllBlocks { REGISTRATE.block("schematicannon", SchematicannonBlock::new) .initialProperties(() -> Blocks.DISPENSER) .blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov))) + .loot((lt, block) -> { + Builder builder = LootTable.builder(); + IBuilder survivesExplosion = SurvivesExplosion.builder(); + lt.registerLootTable(block, builder.addLootPool(LootPool.builder() + .acceptCondition(survivesExplosion) + .rolls(ConstantRange.of(1)) + .addEntry(ItemLootEntry.builder(AllBlocks.SCHEMATICANNON.get().asItem()) + .acceptFunction(CopyNbt.func_215881_a(CopyNbt.Source.BLOCK_ENTITY) + .func_216056_a("Options", "BlockEntityTag.Options"))))); + }) .item() .transform(customItemModel()) .register(); @@ -466,7 +486,7 @@ public class AllBlocks { .loot((lt, block) -> lt.registerLootTable(block, BlazeBurnerBlock.buildLootTable())) .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .item(BlazeBurnerBlockItem::withBlaze) - .model(AssetLookup.customItemModel("blaze_burner", "block_with_blaze")) + .model(AssetLookup.customBlockItemModel("blaze_burner", "block_with_blaze")) .build() .register(); @@ -634,7 +654,7 @@ public class AllBlocks { .onRegister(CreateRegistrate.blockModel(() -> FluidTankModel::standard)) .addLayer(() -> RenderType::getCutoutMipped) .item(FluidTankItem::new) - .model(AssetLookup.customItemModel("_", "block_single_window")) + .model(AssetLookup.customBlockItemModel("_", "block_single_window")) .build() .register(); @@ -1273,6 +1293,38 @@ public class AllBlocks { .transform(customItemModel("diodes", "latch_off")) .register(); + // Curiosities + + static { + REGISTRATE.startSection(AllSections.CURIOSITIES); + } + + public static final BlockEntry COPPER_BACKTANK = + REGISTRATE.block("copper_backtank", CopperBacktankBlock::new) + .initialProperties(SharedProperties::softMetal) + .blockstate((c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + .addLayer(() -> RenderType::getCutoutMipped) + .transform(StressConfigDefaults.setImpact(4.0)) + .loot((lt, block) -> { + Builder builder = LootTable.builder(); + IBuilder survivesExplosion = SurvivesExplosion.builder(); + lt.registerLootTable(block, builder.addLootPool(LootPool.builder() + .acceptCondition(survivesExplosion) + .rolls(ConstantRange.of(1)) + .addEntry(ItemLootEntry.builder(AllItems.COPPER_BACKTANK.get()) + .acceptFunction(CopyName.builder(CopyName.Source.BLOCK_ENTITY)) + .acceptFunction(CopyNbt.func_215881_a(CopyNbt.Source.BLOCK_ENTITY) + .func_216056_a("Air", "Air"))))); + }) + .register(); + + public static final BlockEntry CHROMATIC_PROJECTOR = + REGISTRATE.block("chromatic_projector", ChromaticProjectorBlock::new) + .initialProperties(() -> Blocks.IRON_BLOCK) + .item() + .build() + .register(); + // Materials static { @@ -1350,17 +1402,6 @@ public class AllBlocks { .lang("Block of Brass") .register(); - static { - REGISTRATE.startSection(AllSections.CURIOSITIES); - } - - public static final BlockEntry CHROMATIC_PROJECTOR = - REGISTRATE.block("chromatic_projector", ChromaticProjectorBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) - .item() - .build() - .register(); - // Load this class public static void register() {} diff --git a/src/main/java/com/simibubi/create/AllItems.java b/src/main/java/com/simibubi/create/AllItems.java index 9d68df344..2d13ad744 100644 --- a/src/main/java/com/simibubi/create/AllItems.java +++ b/src/main/java/com/simibubi/create/AllItems.java @@ -29,6 +29,10 @@ import com.simibubi.create.content.curiosities.CombustibleItem; import com.simibubi.create.content.curiosities.RefinedRadianceItem; import com.simibubi.create.content.curiosities.ShadowSteelItem; import com.simibubi.create.content.curiosities.TreeFertilizerItem; +import com.simibubi.create.content.curiosities.armor.CopperArmorItem; +import com.simibubi.create.content.curiosities.armor.CopperBacktankItem; +import com.simibubi.create.content.curiosities.armor.DivingBootsItem; +import com.simibubi.create.content.curiosities.armor.DivingHelmetItem; import com.simibubi.create.content.curiosities.symmetry.SymmetryWandItem; import com.simibubi.create.content.curiosities.symmetry.client.SymmetryWandModel; import com.simibubi.create.content.curiosities.tools.ExtendoGripItem; @@ -47,6 +51,7 @@ import com.simibubi.create.foundation.item.TagDependentIngredientItem; import com.simibubi.create.foundation.item.TooltipHelper; import com.tterrag.registrate.util.entry.ItemEntry; +import net.minecraft.item.BlockItem; import net.minecraft.item.Food; import net.minecraft.item.Item; import net.minecraft.item.Rarity; @@ -168,12 +173,12 @@ public class AllItems { public static final ItemEntry VERTICAL_GEARBOX = REGISTRATE.item("vertical_gearbox", VerticalGearboxItem::new) - .model(AssetLookup.customItemModel("gearbox", "item_vertical")) + .model(AssetLookup.customBlockItemModel("gearbox", "item_vertical")) .register(); public static final ItemEntry EMPTY_BLAZE_BURNER = REGISTRATE.item("empty_blaze_burner", BlazeBurnerBlockItem::empty) - .model(AssetLookup.customItemModel("blaze_burner", "block")) + .model(AssetLookup.customBlockItemModel("blaze_burner", "block")) .register(); public static final ItemEntry GOGGLES = REGISTRATE.item("goggles", GogglesItem::new) @@ -208,13 +213,13 @@ public class AllItems { .transform(CreateRegistrate.customRenderedItem(() -> ExtendoGripModel::new)) .model(AssetLookup.itemModelWithPartials()) .register(); - + public static final ItemEntry WAND_OF_SYMMETRY = REGISTRATE.item("wand_of_symmetry", SymmetryWandItem::new) .transform(CreateRegistrate.customRenderedItem(() -> SymmetryWandModel::new)) .model(AssetLookup.itemModelWithPartials()) .register(); - + public static final ItemEntry WORLDSHAPER = REGISTRATE.item("handheld_worldshaper", WorldshaperItem::new) .properties(p -> p.rarity(Rarity.EPIC)) @@ -256,6 +261,20 @@ public class AllItems { REGISTRATE.startSection(CURIOSITIES); } + public static final ItemEntry + + COPPER_BACKTANK = + REGISTRATE + .item("copper_backtank", p -> new CopperBacktankItem(p, new BlockItem(AllBlocks.COPPER_BACKTANK.get(), p))) + .model(AssetLookup.customGenericItemModel("_", "item")) + .register(), + + DIVING_HELMET = REGISTRATE.item("diving_helmet", DivingHelmetItem::new) + .register(), + + DIVING_BOOTS = REGISTRATE.item("diving_boots", DivingBootsItem::new) + .register(); + public static final ItemEntry TREE_FERTILIZER = REGISTRATE.item("tree_fertilizer", TreeFertilizerItem::new) .register(); diff --git a/src/main/java/com/simibubi/create/AllRecipeTypes.java b/src/main/java/com/simibubi/create/AllRecipeTypes.java index 910241dd6..c21740132 100644 --- a/src/main/java/com/simibubi/create/AllRecipeTypes.java +++ b/src/main/java/com/simibubi/create/AllRecipeTypes.java @@ -6,6 +6,7 @@ import java.util.function.Supplier; import com.simibubi.create.compat.jei.ConversionRecipe; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCraftingRecipe; import com.simibubi.create.content.contraptions.components.crusher.CrushingRecipe; +import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe; import com.simibubi.create.content.contraptions.components.fan.SplashingRecipe; import com.simibubi.create.content.contraptions.components.millstone.MillingRecipe; import com.simibubi.create.content.contraptions.components.mixer.CompactingRecipe; @@ -44,6 +45,7 @@ public enum AllRecipeTypes { PRESSING(processingSerializer(PressingRecipe::new)), SANDPAPER_POLISHING(processingSerializer(SandPaperPolishingRecipe::new)), SPLASHING(processingSerializer(SplashingRecipe::new)), + DEPLOYING(processingSerializer(DeployerApplicationRecipe::new)), FILLING(processingSerializer(FillingRecipe::new)), EMPTYING(processingSerializer(EmptyingRecipe::new)), diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index 3afa8656a..6ffb1c167 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -141,6 +141,8 @@ public class AllShapes { BASIN_COLLISION_SHAPE = shape(0, 2, 0, 16, 13, 16).erase(2, 5, 2, 14, 16, 14) .add(2, 0, 2, 14, 2, 14) .build(), + BACKTANK = shape(3, 0, 3, 13, 12, 13).add(SIX_VOXEL_POLE.get(Axis.Y)) + .build(), SPEED_CONTROLLER = shape(0, 0, 0, 16, 4, 16).add(1, 1, 1, 15, 13, 15) .add(0, 8, 0, 16, 14, 16) .build(), diff --git a/src/main/java/com/simibubi/create/AllSoundEvents.java b/src/main/java/com/simibubi/create/AllSoundEvents.java index 32976ac3f..bec9744d2 100644 --- a/src/main/java/com/simibubi/create/AllSoundEvents.java +++ b/src/main/java/com/simibubi/create/AllSoundEvents.java @@ -148,6 +148,16 @@ public class AllSoundEvents { .category(SoundCategory.BLOCKS) .build(), + COPPER_ARMOR_EQUIP = create("copper_armor_equip").subtitle("Diving equipment clinks") + .playExisting(SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 1f, 1f) + .category(SoundCategory.PLAYERS) + .build(), + + AUTO_POLISH = create("deployer_polish").subtitle("Deployer applies polish") + .playExisting(SoundEvents.UI_STONECUTTER_TAKE_RESULT, 1f, 1f) + .category(SoundCategory.BLOCKS) + .build(), + BLAZE_MUNCH = create("blaze_munch").subtitle("Blaze Burner munches") .playExisting(SoundEvents.ENTITY_GENERIC_EAT, .5f, 1f) .category(SoundCategory.BLOCKS) @@ -162,6 +172,11 @@ public class AllSoundEvents { for (SoundEntry entry : entries.values()) entry.register(registry); } + + public static void prepare() { + for (SoundEntry entry : entries.values()) + entry.prepare(); + } public static JsonElement provideLangEntries() { JsonObject object = new JsonObject(); @@ -278,6 +293,8 @@ public class AllSoundEvents { this.category = category; } + public abstract void prepare(); + public abstract void register(IForgeRegistry registry); public abstract void write(JsonObject json); @@ -346,18 +363,23 @@ public class AllSoundEvents { this.wrappedEvents = wrappedEvents; compiledEvents = Lists.newArrayList(); } - + @Override - public void register(IForgeRegistry registry) { + public void prepare() { for (int i = 0; i < wrappedEvents.size(); i++) { ResourceLocation location = Create.asResource(getIdOf(i)); SoundEvent sound = new SoundEvent(location).setRegistryName(location); - registry.register(sound); compiledEvents.add(Pair.of(sound, wrappedEvents.get(i) .getSecond())); } } + @Override + public void register(IForgeRegistry registry) { + for (Pair> pair : compiledEvents) + registry.register(pair.getFirst()); + } + @Override public SoundEvent getMainEvent() { return compiledEvents.get(0) @@ -413,11 +435,16 @@ public class AllSoundEvents { public CustomSoundEntry(String id, String subtitle, SoundCategory category) { super(id, subtitle, category); } + + @Override + public void prepare() { + ResourceLocation location = getLocation(); + event = new SoundEvent(location).setRegistryName(location); + } @Override public void register(IForgeRegistry registry) { - ResourceLocation location = getLocation(); - registry.register(event = new SoundEvent(location).setRegistryName(location)); + registry.register(event); } @Override diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index b42cdf120..231973559 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -209,6 +209,7 @@ public class AllTags { AllBlockTags.WINDMILL_SAILS.includeAll(BlockTags.WOOL); AllBlockTags.BRITTLE.includeAll(BlockTags.DOORS); + AllBlockTags.BRITTLE.includeAll(BlockTags.BEDS); AllBlockTags.BRITTLE.add(Blocks.FLOWER_POT, Blocks.BELL, Blocks.COCOA); AllBlockTags.FAN_TRANSPARENT.includeAll(BlockTags.FENCES); diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 9369fa6f1..7eda87047 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -116,6 +116,9 @@ import com.simibubi.create.content.contraptions.relays.gearbox.GearboxInstance; import com.simibubi.create.content.contraptions.relays.gearbox.GearboxRenderer; import com.simibubi.create.content.contraptions.relays.gearbox.GearboxTileEntity; import com.simibubi.create.content.contraptions.relays.gearbox.GearshiftTileEntity; +import com.simibubi.create.content.curiosities.armor.CopperBacktankInstance; +import com.simibubi.create.content.curiosities.armor.CopperBacktankRenderer; +import com.simibubi.create.content.curiosities.armor.CopperBacktankTileEntity; import com.simibubi.create.content.curiosities.projector.ChromaticProjectorInstance; import com.simibubi.create.content.curiosities.projector.ChromaticProjectorTileEntity; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelInstance; @@ -647,23 +650,27 @@ public class AllTileEntities { .instance(() -> AdjustableRepeaterInstance::new) .validBlocks(AllBlocks.ADJUSTABLE_REPEATER) .renderer(() -> AdjustableRepeaterRenderer::new) - .register(); + .register(); public static final TileEntityEntry ADJUSTABLE_PULSE_REPEATER = - Create.registrate() - .tileEntity("adjustable_pulse_repeater", AdjustablePulseRepeaterTileEntity::new) - .instance(() -> AdjustableRepeaterInstance::new) - .validBlocks(AllBlocks.ADJUSTABLE_PULSE_REPEATER) - .renderer(() -> AdjustableRepeaterRenderer::new) - .register(); + Create.registrate() + .tileEntity("adjustable_pulse_repeater", AdjustablePulseRepeaterTileEntity::new) + .instance(() -> AdjustableRepeaterInstance::new) + .validBlocks(AllBlocks.ADJUSTABLE_PULSE_REPEATER) + .renderer(() -> AdjustableRepeaterRenderer::new) + .register(); + public static final TileEntityEntry COPPER_BACKTANK = Create.registrate() + .tileEntity("copper_backtank", CopperBacktankTileEntity::new) + .instance(() -> CopperBacktankInstance::new) + .validBlocks(AllBlocks.COPPER_BACKTANK) + .renderer(() -> CopperBacktankRenderer::new) + .register(); - public static final TileEntityEntry CHROMATIC_PROJECTOR = - Create.registrate() - .tileEntity("chromatic_projector", ChromaticProjectorTileEntity::new) - .instance(() -> ChromaticProjectorInstance::new) - .validBlocks(AllBlocks.CHROMATIC_PROJECTOR) - .register(); + public static final TileEntityEntry CHROMATIC_PROJECTOR =Create.registrate() + .tileEntity("chromatic_projector", ChromaticProjectorTileEntity::new) + .instance(() -> ChromaticProjectorInstance::new) + .validBlocks(AllBlocks.CHROMATIC_PROJECTOR) + .register(); - public static void register() { - } + public static void register() {} } diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index 8880d98f4..c62a11acb 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -78,6 +78,7 @@ public class Create { IEventBus modEventBus = FMLJavaModLoadingContext.get() .getModEventBus(); + AllSoundEvents.prepare(); AllBlocks.register(); AllItems.register(); AllFluids.register(); diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index 05401f07f..cd804a361 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -14,9 +14,11 @@ import com.jozufozu.flywheel.backend.instancing.InstancedTileRenderer; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; import com.simibubi.create.content.contraptions.relays.encased.CasingConnectivity; +import com.simibubi.create.content.curiosities.armor.CopperBacktankArmorLayer; import com.simibubi.create.content.schematics.ClientSchematicLoader; import com.simibubi.create.content.schematics.client.SchematicAndQuillHandler; import com.simibubi.create.content.schematics.client.SchematicHandler; +import com.simibubi.create.events.ClientEvents; import com.simibubi.create.foundation.ResourceReloadHandler; import com.simibubi.create.foundation.block.render.CustomBlockModels; import com.simibubi.create.foundation.block.render.SpriteShifter; @@ -79,6 +81,7 @@ public class CreateClient { modEventBus.addListener(CreateClient::onModelRegistry); modEventBus.addListener(CreateClient::onTextureStitch); modEventBus.addListener(AllParticleTypes::registerFactories); + modEventBus.addListener(ClientEvents::loadCompleted); Backend.init(); CreateFlywheelHandler.init(); @@ -109,6 +112,7 @@ public class CreateClient { PonderIndex.registerTags(); UIRenderHelper.init(); + UIRenderHelper.enableStencil(); IResourceManager resourceManager = Minecraft.getInstance() .getResourceManager(); @@ -116,6 +120,10 @@ public class CreateClient { ((IReloadableResourceManager) resourceManager).addReloadListener(new ResourceReloadHandler()); AllBlockPartials.clientInit(); + + event.enqueueWork(() -> { + CopperBacktankArmorLayer.register(); + }); } public static void onTextureStitch(TextureStitchEvent.Pre event) { diff --git a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java index 6e8b8d227..5d545b40f 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -19,6 +19,7 @@ import com.simibubi.create.compat.jei.category.BlockCuttingCategory; import com.simibubi.create.compat.jei.category.BlockCuttingCategory.CondensedBlockCuttingRecipe; import com.simibubi.create.compat.jei.category.CreateRecipeCategory; import com.simibubi.create.compat.jei.category.CrushingCategory; +import com.simibubi.create.compat.jei.category.DeployingCategory; import com.simibubi.create.compat.jei.category.FanBlastingCategory; import com.simibubi.create.compat.jei.category.FanSmokingCategory; import com.simibubi.create.compat.jei.category.FanWashingCategory; @@ -33,6 +34,7 @@ import com.simibubi.create.compat.jei.category.PressingCategory; import com.simibubi.create.compat.jei.category.ProcessingViaFanCategory; import com.simibubi.create.compat.jei.category.SawingCategory; import com.simibubi.create.compat.jei.category.SpoutCategory; +import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe; import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity; import com.simibubi.create.content.contraptions.components.saw.SawTileEntity; import com.simibubi.create.content.contraptions.fluids.recipe.PotionMixingRecipeManager; @@ -53,7 +55,6 @@ import mezz.jei.api.registration.IGuiHandlerRegistration; import mezz.jei.api.registration.IRecipeCatalystRegistration; import mezz.jei.api.registration.IRecipeCategoryRegistration; import mezz.jei.api.registration.IRecipeRegistration; -import mezz.jei.api.registration.ISubtypeRegistration; import mezz.jei.api.runtime.IIngredientManager; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; @@ -164,6 +165,14 @@ public class CreateJEI implements IModPlugin { .catalyst(AllItems.SAND_PAPER::get) .catalyst(AllItems.RED_SAND_PAPER::get) .build(), + + deploying = register("deploying", DeployingCategory::new) + .recipeList(() -> DeployerApplicationRecipe.convert(findRecipesByType(AllRecipeTypes.SANDPAPER_POLISHING.type))) + .recipes(AllRecipeTypes.DEPLOYING) + .catalyst(AllBlocks.DEPLOYER::get) + .catalyst(AllBlocks.DEPOT::get) + .catalyst(AllItems.BELT_CONNECTOR::get) + .build(), mysteryConversion = register("mystery_conversion", MysteriousItemConversionCategory::new) .recipeList(MysteriousItemConversionCategory::getRecipes) diff --git a/src/main/java/com/simibubi/create/compat/jei/category/DeployingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/DeployingCategory.java new file mode 100644 index 000000000..28b14c1cc --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/jei/category/DeployingCategory.java @@ -0,0 +1,68 @@ +package com.simibubi.create.compat.jei.category; + +import java.util.Arrays; +import java.util.stream.Collectors; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.compat.jei.category.animations.AnimatedDeployer; +import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe; +import com.simibubi.create.foundation.fluid.FluidIngredient; +import com.simibubi.create.foundation.gui.AllGuiTextures; + +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.ingredients.IIngredients; + +public class DeployingCategory extends CreateRecipeCategory { + + AnimatedDeployer deployer; + + public DeployingCategory() { + super(itemIcon(AllBlocks.DEPLOYER.get()), emptyBackground(177, 70)); + deployer = new AnimatedDeployer(); + } + + @Override + public Class getRecipeClass() { + return DeployerApplicationRecipe.class; + } + + @Override + public void setIngredients(DeployerApplicationRecipe recipe, IIngredients ingredients) { + ingredients.setInputIngredients(recipe.getIngredients()); + ingredients.setInputLists(VanillaTypes.FLUID, recipe.getFluidIngredients() + .stream() + .map(FluidIngredient::getMatchingFluidStacks) + .collect(Collectors.toList())); + + if (!recipe.getRollableResults() + .isEmpty()) + ingredients.setOutput(VanillaTypes.ITEM, recipe.getRecipeOutput()); + } + + @Override + public void setRecipe(IRecipeLayout recipeLayout, DeployerApplicationRecipe recipe, IIngredients ingredients) { + IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); + itemStacks.init(0, true, 50, 4); + itemStacks.set(0, Arrays.asList(recipe.getRequiredHeldItem() + .getMatchingStacks())); + itemStacks.init(1, true, 26, 50); + itemStacks.set(1, Arrays.asList(recipe.getProcessedItem() + .getMatchingStacks())); + itemStacks.init(2, false, 131, 50); + itemStacks.set(2, recipe.getRecipeOutput()); + } + + @Override + public void draw(DeployerApplicationRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { + AllGuiTextures.JEI_SLOT.draw(matrixStack, 50, 4); + AllGuiTextures.JEI_SLOT.draw(matrixStack, 26, 50); + getRenderedSlot(recipe, 0).draw(matrixStack, 131, 50); + AllGuiTextures.JEI_SHADOW.draw(matrixStack, 62, 57); + AllGuiTextures.JEI_DOWN_ARROW.draw(matrixStack, 126, 29); + deployer.draw(matrixStack, getBackground().getWidth() / 2 - 13, 22); + } + +} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/PolishingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/PolishingCategory.java index 1c2d29343..99a5cbaf0 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/PolishingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/PolishingCategory.java @@ -73,7 +73,7 @@ public class PolishingCategory extends CreateRecipeCategoryat(getBackground().getWidth() / 2 - 16, 0, 0) .scale(2) .render(matrixStack); } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java index 9bc30ce82..0c965b5c6 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java @@ -12,6 +12,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.Create; import com.simibubi.create.compat.jei.category.animations.AnimatedSpout; import com.simibubi.create.content.contraptions.fluids.actors.FillingRecipe; +import com.simibubi.create.content.contraptions.fluids.actors.GenericItemFilling; import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; import com.simibubi.create.foundation.fluid.FluidIngredient; @@ -71,6 +72,8 @@ public class SpoutCategory extends CreateRecipeCategory { ItemStack copy = stack.copy(); copy.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY) .ifPresent(fhi -> { + if (!GenericItemFilling.isFluidHandlerValid(copy, fhi)) + return; FluidStack fluidCopy = fluidStack.copy(); fluidCopy.setAmount(1000); fhi.fill(fluidCopy, FluidAction.EXECUTE); diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrushingWheels.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrushingWheels.java index 0459efd33..263add564 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrushingWheels.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrushingWheels.java @@ -1,7 +1,6 @@ package com.simibubi.create.compat.jei.category.animations; import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; import com.simibubi.create.AllBlocks; import com.simibubi.create.foundation.gui.GuiGameElement; @@ -14,11 +13,11 @@ public class AnimatedCrushingWheels extends AnimatedKinetics { @Override public void draw(MatrixStack matrixStack, int xOffset, int yOffset) { - RenderSystem.enableDepthTest(); + matrixStack.push(); matrixStack.translate(xOffset, yOffset, 100); matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(-22.5f)); int scale = 22; - + BlockState wheel = AllBlocks.CRUSHING_WHEEL.get() .getDefaultState() .with(BlockStateProperties.AXIS, Axis.X); @@ -33,6 +32,8 @@ public class AnimatedCrushingWheels extends AnimatedKinetics { .atLocal(2, 0, 0) .scale(scale) .render(matrixStack); + + matrixStack.pop(); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedDeployer.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedDeployer.java new file mode 100644 index 000000000..862e94194 --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedDeployer.java @@ -0,0 +1,61 @@ +package com.simibubi.create.compat.jei.category.animations; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.components.deployer.DeployerBlock; +import com.simibubi.create.foundation.gui.GuiGameElement; +import com.simibubi.create.foundation.utility.AnimationTickHolder; + +import net.minecraft.util.Direction; +import net.minecraft.util.Direction.Axis; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.vector.Vector3f; + +public class AnimatedDeployer extends AnimatedKinetics { + + @Override + public void draw(MatrixStack matrixStack, int xOffset, int yOffset) { + matrixStack.push(); + matrixStack.translate(xOffset, yOffset, 100); + matrixStack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-15.5f)); + matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(22.5f)); + int scale = 20; + + GuiGameElement.of(shaft(Axis.Z)) + .rotateBlock(0, 0, getCurrentAngle()) + .scale(scale) + .render(matrixStack); + + GuiGameElement.of(AllBlocks.DEPLOYER.getDefaultState() + .with(DeployerBlock.FACING, Direction.DOWN) + .with(DeployerBlock.AXIS_ALONG_FIRST_COORDINATE, false)) + .scale(scale) + .render(matrixStack); + + float cycle = AnimationTickHolder.getRenderTime() % 30; + float offset = cycle < 10 ? cycle / 10f : cycle < 20 ? (20 - cycle) / 10f : 0; + + matrixStack.push(); + + matrixStack.translate(0, offset * 17, 0); + GuiGameElement.of(AllBlockPartials.DEPLOYER_POLE) + .rotateBlock(90, 0, 0) + .scale(scale) + .render(matrixStack); + GuiGameElement.of(AllBlockPartials.DEPLOYER_HAND_HOLDING) + .rotateBlock(90, 0, 0) + .scale(scale) + .render(matrixStack); + + matrixStack.pop(); + + GuiGameElement.of(AllBlocks.DEPOT.getDefaultState()) + .atLocal(0, 2, 0) + .scale(scale) + .render(matrixStack); + + matrixStack.pop(); + } + +} diff --git a/src/main/java/com/simibubi/create/content/AllSections.java b/src/main/java/com/simibubi/create/content/AllSections.java index 81569f408..5b04c6380 100644 --- a/src/main/java/com/simibubi/create/content/AllSections.java +++ b/src/main/java/com/simibubi/create/content/AllSections.java @@ -21,13 +21,13 @@ public enum AllSections { /** Decorative blocks */ PALETTES(Palette.Green), + + /** Helpful gadgets and other shenanigans */ + CURIOSITIES(Palette.Purple), /** Base materials, ingredients and tools */ MATERIALS(Palette.Green), - /** Helpful gadgets and other shenanigans */ - CURIOSITIES(Palette.Purple), - /** Fallback section */ UNASSIGNED(Palette.Gray) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/BeltDeployerCallbacks.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/BeltDeployerCallbacks.java new file mode 100644 index 000000000..7daf5b76d --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/BeltDeployerCallbacks.java @@ -0,0 +1,123 @@ +package com.simibubi.create.content.contraptions.components.deployer; + +import static com.simibubi.create.content.contraptions.base.DirectionalKineticBlock.FACING; + +import java.util.List; +import java.util.stream.Collectors; + +import com.simibubi.create.AllSoundEvents; +import com.simibubi.create.Create; +import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.Mode; +import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.State; +import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; +import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; +import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe; +import com.simibubi.create.content.logistics.InWorldProcessing; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; + +import net.minecraft.block.BlockState; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.util.Direction; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.items.ItemHandlerHelper; + +public class BeltDeployerCallbacks { + + public static ProcessingResult onItemReceived(TransportedItemStack s, TransportedItemStackHandlerBehaviour i, + DeployerTileEntity deployerTileEntity) { + + if (deployerTileEntity.getSpeed() == 0) + return ProcessingResult.PASS; + if (deployerTileEntity.mode == Mode.PUNCH) + return ProcessingResult.PASS; + BlockState blockState = deployerTileEntity.getBlockState(); + if (!blockState.contains(FACING) || blockState.get(FACING) != Direction.DOWN) + return ProcessingResult.PASS; + if (deployerTileEntity.state != State.WAITING) + return ProcessingResult.HOLD; + if (deployerTileEntity.redstoneLocked) + return ProcessingResult.PASS; + + if (deployerTileEntity.getRecipe(s.stack) == null) + return ProcessingResult.PASS; + + deployerTileEntity.start(); + return ProcessingResult.HOLD; + } + + public static ProcessingResult whenItemHeld(TransportedItemStack s, TransportedItemStackHandlerBehaviour i, + DeployerTileEntity deployerTileEntity) { + + if (deployerTileEntity.getSpeed() == 0) + return ProcessingResult.PASS; + BlockState blockState = deployerTileEntity.getBlockState(); + if (!blockState.contains(FACING) || blockState.get(FACING) != Direction.DOWN) + return ProcessingResult.PASS; + IRecipe recipe = deployerTileEntity.getRecipe(s.stack); + if (recipe == null) + return ProcessingResult.PASS; + + if (deployerTileEntity.state == State.RETRACTING && deployerTileEntity.timer == 1000) { + activate(s, i, deployerTileEntity, recipe); + return ProcessingResult.HOLD; + } + + if (deployerTileEntity.state == State.WAITING) { + if (deployerTileEntity.redstoneLocked) + return ProcessingResult.PASS; + deployerTileEntity.start(); + } + + return ProcessingResult.HOLD; + } + + public static void activate(TransportedItemStack transported, TransportedItemStackHandlerBehaviour handler, + DeployerTileEntity deployerTileEntity, IRecipe recipe) { + + List collect = + InWorldProcessing.applyRecipeOn(ItemHandlerHelper.copyStackWithSize(transported.stack, 1), recipe) + .stream() + .map(stack -> { + TransportedItemStack copy = transported.copy(); + boolean centered = BeltHelper.isItemUpright(stack); + copy.stack = stack; + copy.locked = true; + copy.angle = centered ? 180 : Create.random.nextInt(360); + return copy; + }) + .collect(Collectors.toList()); + + TransportedItemStack left = transported.copy(); + deployerTileEntity.player.spawnedItemEffects = transported.stack.copy(); + left.stack.shrink(1); + + if (collect.isEmpty()) + handler.handleProcessingOnItem(transported, TransportedResult.convertTo(left)); + else + handler.handleProcessingOnItem(transported, TransportedResult.convertToAndLeaveHeld(collect, left)); + + ItemStack heldItem = deployerTileEntity.player.getHeldItemMainhand(); + if (heldItem.isDamageable()) + heldItem.damageItem(1, deployerTileEntity.player, s -> s.sendBreakAnimation(Hand.MAIN_HAND)); + else + heldItem.shrink(1); + + BlockPos pos = deployerTileEntity.getPos(); + World world = deployerTileEntity.getWorld(); + if (heldItem.isEmpty()) + world.playSound(null, pos, SoundEvents.ENTITY_ITEM_BREAK, SoundCategory.BLOCKS, .25f, 1); + world.playSound(null, pos, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.BLOCKS, .25f, .75f); + if (recipe instanceof SandPaperPolishingRecipe) + AllSoundEvents.AUTO_POLISH.playOnServer(world, pos, .25f, 1f); + + deployerTileEntity.sendData(); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java new file mode 100644 index 000000000..1e4b1e449 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java @@ -0,0 +1,66 @@ +package com.simibubi.create.content.contraptions.components.deployer; + +import java.util.List; +import java.util.stream.Collectors; + +import com.simibubi.create.AllItems; +import com.simibubi.create.AllRecipeTypes; +import com.simibubi.create.Create; +import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; +import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; +import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; + +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.world.World; +import net.minecraftforge.items.wrapper.RecipeWrapper; + +public class DeployerApplicationRecipe extends ProcessingRecipe { + + public DeployerApplicationRecipe(ProcessingRecipeParams params) { + super(AllRecipeTypes.DEPLOYING, params); + } + + @Override + public boolean matches(RecipeWrapper inv, World p_77569_2_) { + return ingredients.get(0) + .test(inv.getStackInSlot(0)) + && ingredients.get(1) + .test(inv.getStackInSlot(1)); + } + + @Override + protected int getMaxInputCount() { + return 2; + } + + @Override + protected int getMaxOutputCount() { + return 2; + } + + public Ingredient getRequiredHeldItem() { + if (ingredients.isEmpty()) + throw new IllegalStateException("Deploying Recipe: " + id.toString() + " has no tool!"); + return ingredients.get(0); + } + + public Ingredient getProcessedItem() { + if (ingredients.size() < 2) + throw new IllegalStateException("Deploying Recipe: " + id.toString() + " has no ingredient!"); + return ingredients.get(1); + } + + public static List convert(List> sandpaperRecipes) { + return sandpaperRecipes.stream() + .map(r -> new ProcessingRecipeBuilder<>(DeployerApplicationRecipe::new, Create.asResource(r.getId() + .getPath() + "_using_deployer")) + .require(Ingredient.fromItems(AllItems.SAND_PAPER.get(), AllItems.RED_SAND_PAPER.get())) + .require(r.getIngredients() + .get(0)) + .output(r.getRecipeOutput()) + .build()) + .collect(Collectors.toList()); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java index 9500a1ea5..55f3a928d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java @@ -6,11 +6,16 @@ import static net.minecraftforge.eventbus.api.Event.Result.DENY; import java.util.ArrayList; import java.util.List; +import javax.annotation.Nullable; + import org.apache.commons.lang3.tuple.Pair; import com.google.common.collect.Multimap; +import com.simibubi.create.AllSoundEvents; import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.Mode; import com.simibubi.create.content.curiosities.tools.SandPaperItem; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; @@ -93,7 +98,7 @@ public class DeployerHandler { } } - static boolean shouldActivate(ItemStack held, World world, BlockPos targetPos) { + static boolean shouldActivate(ItemStack held, World world, BlockPos targetPos, @Nullable Direction facing) { if (held.getItem() instanceof BlockItem) if (world.getBlockState(targetPos) .getBlock() == ((BlockItem) held.getItem()).getBlock()) @@ -107,10 +112,15 @@ public class DeployerHandler { return false; } + if (!held.isEmpty() && facing == Direction.DOWN + && TileEntityBehaviour.get(world, targetPos, TransportedItemStackHandlerBehaviour.TYPE) != null) + return false; + return true; } - static void activate(DeployerFakePlayer player, Vector3d vec, BlockPos clickedPos, Vector3d extensionVector, Mode mode) { + static void activate(DeployerFakePlayer player, Vector3d vec, BlockPos clickedPos, Vector3d extensionVector, + Mode mode) { Multimap attributeModifiers = player.getHeldItemMainhand() .getAttributeModifiers(EquipmentSlotType.MAINHAND); player.getAttributes() @@ -120,8 +130,8 @@ public class DeployerHandler { .addTemporaryModifiers(attributeModifiers); } - private static void activateInner(DeployerFakePlayer player, Vector3d vec, BlockPos clickedPos, Vector3d extensionVector, - Mode mode) { + private static void activateInner(DeployerFakePlayer player, Vector3d vec, BlockPos clickedPos, + Vector3d extensionVector, Mode mode) { Vector3d rayOrigin = vec.add(extensionVector.scale(3 / 2f + 1 / 64f)); Vector3d rayTarget = vec.add(extensionVector.scale(5 / 2f - 1 / 64f)); @@ -148,10 +158,11 @@ public class DeployerHandler { return; } if (cancelResult == null) { - if (entity.processInitialInteract(player, hand).isAccepted()) + if (entity.processInitialInteract(player, hand) + .isAccepted()) success = true; - else if (entity instanceof LivingEntity - && stack.useOnEntity(player, (LivingEntity) entity, hand).isAccepted()) + else if (entity instanceof LivingEntity && stack.useOnEntity(player, (LivingEntity) entity, hand) + .isAccepted()) success = true; } if (!success && stack.isFood() && entity instanceof PlayerEntity) { @@ -215,7 +226,8 @@ public class DeployerHandler { if (blockBreakingProgress != null) before = blockBreakingProgress.getValue(); progress += before; - world.playSound(null, clickedPos, clickedState.getSoundType().getHitSound(), SoundCategory.NEUTRAL, .25f, 1); + world.playSound(null, clickedPos, clickedState.getSoundType() + .getHitSound(), SoundCategory.NEUTRAL, .25f, 1); if (progress >= 1) { tryHarvestBlock(player.interactionManager, clickedPos); @@ -300,8 +312,10 @@ public class DeployerHandler { } CompoundNBT tag = stack.getTag(); - if (tag != null && stack.getItem() instanceof SandPaperItem && tag.contains("Polishing")) + if (tag != null && stack.getItem() instanceof SandPaperItem && tag.contains("Polishing")) { player.spawnedItemEffects = ItemStack.read(tag.getCompound("Polishing")); + AllSoundEvents.AUTO_POLISH.playOnServer(world, pos, .25f, 1f); + } if (!player.getActiveItemStack() .isEmpty()) @@ -359,7 +373,7 @@ public class DeployerHandler { protected static ActionResultType safeOnBeehiveUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand) { // <> BeehiveBlock#onUse - + BeehiveBlock block = (BeehiveBlock) state.getBlock(); ItemStack prevHeldItem = player.getHeldItem(hand); int honeyLevel = state.get(BeehiveBlock.HONEY_LEVEL); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java index a8d81c209..7e12bcdb9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java @@ -64,7 +64,7 @@ public class DeployerMovementBehaviour extends MovementBehaviour { tryGrabbingItem(context); DeployerFakePlayer player = getPlayer(context); Mode mode = getMode(context); - if (mode == Mode.USE && !DeployerHandler.shouldActivate(player.getHeldItemMainhand(), context.world, pos)) + if (mode == Mode.USE && !DeployerHandler.shouldActivate(player.getHeldItemMainhand(), context.world, pos, null)) return; activate(context, pos, player, mode); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java index 102d2bb2b..db34e9ff4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java @@ -5,14 +5,20 @@ import static com.simibubi.create.content.contraptions.base.DirectionalKineticBl import java.util.ArrayList; import java.util.List; +import javax.annotation.Nullable; + import com.jozufozu.flywheel.backend.core.PartialModel; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.curiosities.tools.SandPaperItem; +import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe.SandPaperInv; import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.VecHelper; @@ -21,6 +27,7 @@ import com.simibubi.create.foundation.utility.animation.LerpedFloat; import net.minecraft.block.BlockState; import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.ListNBT; import net.minecraft.tileentity.TileEntity; @@ -41,6 +48,8 @@ import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.IItemHandlerModifiable; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.wrapper.RecipeWrapper; public class DeployerTileEntity extends KineticTileEntity { @@ -59,6 +68,8 @@ public class DeployerTileEntity extends KineticTileEntity { private LerpedFloat animatedOffset; + public BeltProcessingBehaviour processingBehaviour; + enum State { WAITING, EXPANDING, RETRACTING, DUMPING; } @@ -82,6 +93,10 @@ public class DeployerTileEntity extends KineticTileEntity { super.addBehaviours(behaviours); filtering = new FilteringBehaviour(this, new DeployerFilterSlot()); behaviours.add(filtering); + processingBehaviour = + new BeltProcessingBehaviour(this).whenItemEnters((s, i) -> BeltDeployerCallbacks.onItemReceived(s, i, this)) + .whileItemHeld((s, i) -> BeltDeployerCallbacks.whenItemHeld(s, i, this)); + behaviours.add(processingBehaviour); } @Override @@ -158,7 +173,7 @@ public class DeployerTileEntity extends KineticTileEntity { } Direction facing = getBlockState().get(FACING); - if (mode == Mode.USE && !DeployerHandler.shouldActivate(stack, world, pos.offset(facing, 2))) { + if (mode == Mode.USE && !DeployerHandler.shouldActivate(stack, world, pos.offset(facing, 2), facing)) { timer = getTimerSpeed() * 10; return; } @@ -166,25 +181,10 @@ public class DeployerTileEntity extends KineticTileEntity { // Check for advancement conditions if (mode == Mode.PUNCH && !boop && startBoop(facing)) return; - if (redstoneLocked) return; - state = State.EXPANDING; - Vector3d movementVector = getMovementVector(); - Vector3d rayOrigin = VecHelper.getCenterOf(pos) - .add(movementVector.scale(3 / 2f)); - Vector3d rayTarget = VecHelper.getCenterOf(pos) - .add(movementVector.scale(5 / 2f)); - RayTraceContext rayTraceContext = - new RayTraceContext(rayOrigin, rayTarget, BlockMode.OUTLINE, FluidMode.NONE, player); - BlockRayTraceResult result = world.rayTraceBlocks(rayTraceContext); - reach = (float) (.5f + Math.min(result.getHitVec() - .subtract(rayOrigin) - .length(), .75f)); - - timer = 1000; - sendData(); + start(); return; } @@ -208,6 +208,23 @@ public class DeployerTileEntity extends KineticTileEntity { } + protected void start() { + state = State.EXPANDING; + Vector3d movementVector = getMovementVector(); + Vector3d rayOrigin = VecHelper.getCenterOf(pos) + .add(movementVector.scale(3 / 2f)); + Vector3d rayTarget = VecHelper.getCenterOf(pos) + .add(movementVector.scale(5 / 2f)); + RayTraceContext rayTraceContext = + new RayTraceContext(rayOrigin, rayTarget, BlockMode.OUTLINE, FluidMode.NONE, player); + BlockRayTraceResult result = world.rayTraceBlocks(rayTraceContext); + reach = (float) (.5f + Math.min(result.getHitVec() + .subtract(rayOrigin) + .length(), .75f)); + timer = 1000; + sendData(); + } + public boolean startBoop(Direction facing) { if (!world.isAirBlock(pos.offset(facing, 1)) || !world.isAirBlock(pos.offset(facing, 2))) return false; @@ -263,6 +280,10 @@ public class DeployerTileEntity extends KineticTileEntity { player.rotationYaw = direction.getHorizontalAngle(); player.rotationPitch = direction == Direction.UP ? -90 : direction == Direction.DOWN ? 90 : 0; + if (direction == Direction.DOWN + && TileEntityBehaviour.get(world, clickedPos, TransportedItemStackHandlerBehaviour.TYPE) != null) + return; // Belt processing handled in BeltDeployerCallbacks + DeployerHandler.activate(player, center, clickedPos, movementVector, mode); if (player != null) heldItem = player.getHeldItemMainhand(); @@ -294,7 +315,7 @@ public class DeployerTileEntity extends KineticTileEntity { if (compound.contains("Particle")) { ItemStack particleStack = ItemStack.read(compound.getCompound("Particle")); SandPaperItem.spawnParticles(VecHelper.getCenterOf(pos) - .add(getMovementVector().scale(2f)), particleStack, this.world); + .add(getMovementVector().scale(reach + 1)), particleStack, this.world); } } @@ -413,4 +434,23 @@ public class DeployerTileEntity extends KineticTileEntity { animatedOffset.setValue(offset); } + RecipeWrapper recipeInv = new RecipeWrapper(new ItemStackHandler(2)); + SandPaperInv sandpaperInv = new SandPaperInv(ItemStack.EMPTY); + + @Nullable + public IRecipe getRecipe(ItemStack stack) { + if (player == null) + return null; + ItemStack heldItemMainhand = player.getHeldItemMainhand(); + if (heldItemMainhand.getItem() instanceof SandPaperItem) { + sandpaperInv.setInventorySlotContents(0, stack); + return AllRecipeTypes.SANDPAPER_POLISHING.find(sandpaperInv, world) + .orElse(null); + } + recipeInv.setInventorySlotContents(0, heldItemMainhand); + recipeInv.setInventorySlotContents(1, stack); + return AllRecipeTypes.DEPLOYING.find(recipeInv, world) + .orElse(null); + } + } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementTraits.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementTraits.java index 5a47573fe..a7bfd1806 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementTraits.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementTraits.java @@ -29,6 +29,7 @@ import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkBlock; import net.minecraft.block.AbstractPressurePlateBlock; import net.minecraft.block.AbstractRailBlock; import net.minecraft.block.AbstractSignBlock; +import net.minecraft.block.BedBlock; import net.minecraft.block.BellBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -49,6 +50,7 @@ import net.minecraft.block.WallSignBlock; import net.minecraft.block.WallTorchBlock; import net.minecraft.block.material.PushReaction; import net.minecraft.state.properties.AttachFace; +import net.minecraft.state.properties.BedPart; import net.minecraft.state.properties.BellAttachment; import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.tileentity.TileEntity; @@ -163,6 +165,13 @@ public class BlockMovementTraits { return direction == Direction.DOWN; if (block instanceof DoorBlock) return direction == Direction.DOWN; + if (block instanceof BedBlock) { + Direction facing = state.get(BedBlock.HORIZONTAL_FACING); + if (state.get(BedBlock.PART) == BedPart.HEAD) { + facing = facing.getOpposite(); + } + return direction == facing; + } if (block instanceof RedstoneLinkBlock) return direction.getOpposite() == state.get(RedstoneLinkBlock.FACING); if (block instanceof FlowerPotBlock) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java index fa7b49062..d6a4f825d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java @@ -35,6 +35,7 @@ import com.simibubi.create.content.contraptions.components.actors.SeatBlock; import com.simibubi.create.content.contraptions.components.actors.SeatEntity; import com.simibubi.create.content.contraptions.components.structureMovement.bearing.MechanicalBearingBlock; import com.simibubi.create.content.contraptions.components.structureMovement.bearing.StabilizedContraption; +import com.simibubi.create.content.contraptions.components.structureMovement.bearing.WindmillBearingBlock; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.AbstractChassisBlock; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.ChassisTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.StickerBlock; @@ -342,6 +343,10 @@ public abstract class Contraption { // Bearings potentially create stabilized sub-contraptions if (AllBlocks.MECHANICAL_BEARING.has(state)) moveBearing(pos, frontier, visited, state); + + // WM Bearings attach their structure when moved + if (AllBlocks.WINDMILL_BEARING.has(state)) + moveWindmillBearing(pos, frontier, visited, state); // Seats transfer their passenger to the contraption if (state.getBlock() instanceof SeatBlock) @@ -497,6 +502,13 @@ public abstract class Contraption { } } + private void moveWindmillBearing(BlockPos pos, Queue frontier, Set visited, BlockState state) { + Direction facing = state.get(WindmillBearingBlock.FACING); + BlockPos offset = pos.offset(facing); + if (!visited.contains(offset)) + frontier.add(offset); + } + private void moveBearing(BlockPos pos, Queue frontier, Set visited, BlockState state) { Direction facing = state.get(MechanicalBearingBlock.FACING); if (!canBeStabilized(facing, pos.subtract(anchor))) { @@ -701,8 +713,8 @@ public abstract class Contraption { c -> seatMapping.put(NBTUtil.readUniqueId(NBTHelper.getINBT(c, "Id")), c.getInt("Seat"))); stabilizedSubContraptions.clear(); - NBTHelper.iterateCompoundList(nbt.getList("SubContraptions", NBT.TAG_COMPOUND), c -> stabilizedSubContraptions - .put(c.getUniqueId("Id"), BlockFace.fromNBT(c.getCompound("Location")))); + NBTHelper.iterateCompoundList(nbt.getList("SubContraptions", NBT.TAG_COMPOUND), + c -> stabilizedSubContraptions.put(c.getUniqueId("Id"), BlockFace.fromNBT(c.getCompound("Location")))); storage.clear(); NBTHelper.iterateCompoundList(nbt.getList("Storage", NBT.TAG_COMPOUND), c -> storage @@ -831,7 +843,9 @@ public abstract class Contraption { private CompoundNBT writeBlocksCompound() { CompoundNBT compound = new CompoundNBT(); - HashMapPalette palette = new HashMapPalette<>(GameData.getBlockStateIDMap(), 16, (i, s) -> {throw new IllegalStateException("Palette Map index exceeded maximum");}, NBTUtil::readBlockState, NBTUtil::writeBlockState); + HashMapPalette palette = new HashMapPalette<>(GameData.getBlockStateIDMap(), 16, (i, s) -> { + throw new IllegalStateException("Palette Map index exceeded maximum"); + }, NBTUtil::readBlockState, NBTUtil::writeBlockState); ListNBT blockList = new ListNBT(); for (BlockInfo block : this.blocks.values()) { @@ -857,7 +871,9 @@ public abstract class Contraption { ListNBT blockList; if (usePalettedDeserialization) { CompoundNBT c = ((CompoundNBT) compound); - palette = new HashMapPalette<>(GameData.getBlockStateIDMap(), 16, (i, s) -> {throw new IllegalStateException("Palette Map index exceeded maximum");}, NBTUtil::readBlockState, NBTUtil::writeBlockState); + palette = new HashMapPalette<>(GameData.getBlockStateIDMap(), 16, (i, s) -> { + throw new IllegalStateException("Palette Map index exceeded maximum"); + }, NBTUtil::readBlockState, NBTUtil::writeBlockState); palette.read(c.getList("Palette", 10)); blockList = c.getList("BlockList", 10); @@ -906,19 +922,15 @@ public abstract class Contraption { } private static BlockInfo readBlockInfo(CompoundNBT blockListEntry, HashMapPalette palette) { - return new BlockInfo( - BlockPos.fromLong(blockListEntry.getLong("Pos")), - Objects.requireNonNull(palette.get(blockListEntry.getInt("State"))), - blockListEntry.contains("Data") ? blockListEntry.getCompound("Data") : null - ); + return new BlockInfo(BlockPos.fromLong(blockListEntry.getLong("Pos")), + Objects.requireNonNull(palette.get(blockListEntry.getInt("State"))), + blockListEntry.contains("Data") ? blockListEntry.getCompound("Data") : null); } private static BlockInfo legacyReadBlockInfo(CompoundNBT blockListEntry) { - return new BlockInfo( - NBTUtil.readBlockPos(blockListEntry.getCompound("Pos")), - NBTUtil.readBlockState(blockListEntry.getCompound("Block")), - blockListEntry.contains("Data") ? blockListEntry.getCompound("Data") : null - ); + return new BlockInfo(NBTUtil.readBlockPos(blockListEntry.getCompound("Pos")), + NBTUtil.readBlockState(blockListEntry.getCompound("Block")), + blockListEntry.contains("Data") ? blockListEntry.getCompound("Data") : null); } public void removeBlocksFromWorld(World world, BlockPos offset) { @@ -999,8 +1011,7 @@ public abstract class Contraption { } if (state.getBlock() instanceof IWaterLoggable && state.contains(BlockStateProperties.WATERLOGGED)) { FluidState FluidState = world.getFluidState(targetPos); - state = state.with(BlockStateProperties.WATERLOGGED, - FluidState.getFluid() == Fluids.WATER); + state = state.with(BlockStateProperties.WATERLOGGED, FluidState.getFluid() == Fluids.WATER); } world.destroyBlock(targetPos, true); @@ -1232,8 +1243,8 @@ public abstract class Contraption { float distSq = a * a + b * b; - - if (distSq > maxDistSq) maxDistSq = distSq; + if (distSq > maxDistSq) + maxDistSq = distSq; } return maxDistSq; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueRenderer.java index cd73d52ff..34bfa5f3b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueRenderer.java @@ -13,6 +13,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.WorldRenderer; +import net.minecraft.client.renderer.culling.ClippingHelper; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererManager; import net.minecraft.client.renderer.texture.OverlayTexture; @@ -31,10 +32,8 @@ public class SuperGlueRenderer extends EntityRenderer { private ResourceLocation regular = new ResourceLocation(Create.ID, "textures/entity/super_glue/slime.png"); - private Vector3d[] quad1; - private Vector3d[] quad2; - private float[] u = { 0, 1, 1, 0 }; - private float[] v = { 0, 0, 1, 1 }; + private float[] insideQuad; + private float[] outsideQuad; public SuperGlueRenderer(EntityRendererManager renderManager) { super(renderManager); @@ -47,17 +46,23 @@ public class SuperGlueRenderer extends EntityRenderer { } @Override - public void render(SuperGlueEntity entity, float p_225623_2_, float p_225623_3_, MatrixStack ms, + public boolean shouldRender(SuperGlueEntity entity, ClippingHelper frustum, double x, double y, double z) { + if (super.shouldRender(entity, frustum, x, y, z)) { + PlayerEntity player = Minecraft.getInstance().player; + boolean visible = entity.isVisible(); + boolean holdingGlue = AllItems.SUPER_GLUE.isIn(player.getHeldItemMainhand()) + || AllItems.SUPER_GLUE.isIn(player.getHeldItemOffhand()); + + if (visible || holdingGlue) + return true; + } + return false; + } + + @Override + public void render(SuperGlueEntity entity, float yaw, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, int light) { - super.render(entity, p_225623_2_, p_225623_3_, ms, buffer, light); - - PlayerEntity player = Minecraft.getInstance().player; - boolean visible = entity.isVisible(); - boolean holdingGlue = AllItems.SUPER_GLUE.isIn(player.getHeldItemMainhand()) - || AllItems.SUPER_GLUE.isIn(player.getHeldItemOffhand()); - - if (!visible && !holdingGlue) - return; + super.render(entity, yaw, partialTicks, ms, buffer, light); IVertexBuilder builder = buffer.getBuffer(RenderType.getEntityCutout(getEntityTexture(entity))); light = getBrightnessForRender(entity); @@ -65,24 +70,13 @@ public class SuperGlueRenderer extends EntityRenderer { ms.push(); MatrixStacker.of(ms) - .rotateY(AngleHelper.horizontalAngle(face)) + .rotateY(AngleHelper.horizontalAngleNew(face)) .rotateX(AngleHelper.verticalAngle(face)); Entry peek = ms.peek(); - Vector3d[][] quads = { quad1, quad2 }; - for (Vector3d[] quad : quads) { - for (int i = 0; i < 4; i++) { - Vector3d vertex = quad[i]; - builder.vertex(peek.getModel(), (float) vertex.x, (float) vertex.y, (float) vertex.z) - .color(255, 255, 255, 255) - .texture(u[i], v[i]) - .overlay(OverlayTexture.DEFAULT_UV) - .light(light) - .normal(peek.getNormal(), face.getXOffset(), face.getYOffset(), face.getZOffset()) - .endVertex(); - } - face = face.getOpposite(); - } + renderQuad(builder, peek, insideQuad, light, -1); + renderQuad(builder, peek, outsideQuad, light, 1); + ms.pop(); } @@ -111,8 +105,18 @@ public class SuperGlueRenderer extends EntityRenderer { Vector3d a4 = plane.add(start); Vector3d b4 = plane.add(end); - quad1 = new Vector3d[] { a2, a3, a4, a1 }; - quad2 = new Vector3d[] { b3, b2, b1, b4 }; + insideQuad = new float[] { + (float) a1.x, (float) a1.y, (float) a1.z, 1, 0, + (float) a2.x, (float) a2.y, (float) a2.z, 1, 1, + (float) a3.x, (float) a3.y, (float) a3.z, 0, 1, + (float) a4.x, (float) a4.y, (float) a4.z, 0, 0, + }; + outsideQuad = new float[] { + (float) b4.x, (float) b4.y, (float) b4.z, 0, 0, + (float) b3.x, (float) b3.y, (float) b3.z, 0, 1, + (float) b2.x, (float) b2.y, (float) b2.z, 1, 1, + (float) b1.x, (float) b1.y, (float) b1.z, 1, 0, + }; } private int getBrightnessForRender(SuperGlueEntity entity) { @@ -126,4 +130,17 @@ public class SuperGlueRenderer extends EntityRenderer { return Math.max(light, light2); } + // Vertex format: pos x, pos y, pos z, u, v + private void renderQuad(IVertexBuilder builder, Entry matrix, float[] data, int light, float normalZ) { + for (int i = 0; i < 4; i++) { + builder.vertex(matrix.getModel(), data[5 * i], data[5 * i + 1], data[5 * i + 2]) + .color(255, 255, 255, 255) + .texture(data[5 * i + 3], data[5 * i + 4]) + .overlay(OverlayTexture.DEFAULT_UV) + .light(light) + .normal(matrix.getNormal(), 0.0f, 0.0f, normalZ) + .endVertex(); + } + } + } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java index 09c2653a2..1da586170 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java @@ -54,6 +54,7 @@ import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.Direction.Axis; import net.minecraft.util.Hand; +import net.minecraft.util.Mirror; import net.minecraft.util.Rotation; import net.minecraft.util.SoundCategory; import net.minecraft.util.SoundEvents; @@ -492,29 +493,55 @@ public class CartAssemblerBlock extends AbstractRailBlock public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { return false; } - + @Override public ActionResultType onWrenched(BlockState state, ItemUseContext context) { World world = context.getWorld(); if (world.isRemote) return ActionResultType.SUCCESS; BlockPos pos = context.getPos(); - BlockState newState = state.with(RAIL_SHAPE, - state.get(RAIL_SHAPE) == RailShape.NORTH_SOUTH ? RailShape.EAST_WEST : RailShape.NORTH_SOUTH); - if (state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL - || state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS) { - newState = newState.with(RAIL_TYPE, AllBlocks.CONTROLLER_RAIL.get() - .rotate(AllBlocks.CONTROLLER_RAIL.getDefaultState() - .with(ControllerRailBlock.SHAPE, state.get(RAIL_SHAPE)) - .with(ControllerRailBlock.BACKWARDS, - state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS), - Rotation.CLOCKWISE_90) - .get(ControllerRailBlock.BACKWARDS) ? CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS - : CartAssembleRailType.CONTROLLER_RAIL); - } - context.getWorld() - .setBlockState(pos, newState, 3); + world.setBlockState(pos, rotate(state, Rotation.CLOCKWISE_90), 3); world.notifyNeighborsOfStateChange(pos.down(), this); return ActionResultType.SUCCESS; } + + @Override + public BlockState rotate(BlockState state, Rotation rotation) { + if (rotation == Rotation.NONE) + return state; + + boolean is_controller_rail_backwards = state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS; + boolean is_controller_rail = state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL || is_controller_rail_backwards; + BlockState base = AllBlocks.CONTROLLER_RAIL.getDefaultState() + .with(ControllerRailBlock.SHAPE, state.get(RAIL_SHAPE)) + .with(ControllerRailBlock.BACKWARDS, is_controller_rail_backwards) + .rotate(rotation); + if (is_controller_rail) { + state = state.with(RAIL_TYPE, + base.get(ControllerRailBlock.BACKWARDS) ? CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS : + CartAssembleRailType.CONTROLLER_RAIL + ); + } + return state.with(RAIL_SHAPE, base.get(ControllerRailBlock.SHAPE)); + } + + @Override + public BlockState mirror(BlockState state, Mirror mirror) { + if (mirror == Mirror.NONE) + return state; + + boolean is_controller_rail_backwards = state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS; + boolean is_controller_rail = state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL || is_controller_rail_backwards; + BlockState base = AllBlocks.CONTROLLER_RAIL.getDefaultState() + .with(ControllerRailBlock.SHAPE, state.get(RAIL_SHAPE)) + .with(ControllerRailBlock.BACKWARDS, is_controller_rail_backwards) + .mirror(mirror); + if (is_controller_rail) { + state = state.with(RAIL_TYPE, + base.get(ControllerRailBlock.BACKWARDS) ? CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS : + CartAssembleRailType.CONTROLLER_RAIL + ); + } + return state.with(RAIL_SHAPE, base.get(ControllerRailBlock.SHAPE)); + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java index 62630d7ec..77dd51c68 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java @@ -103,6 +103,11 @@ public class PumpTileEntity extends KineticTileEntity { BlockPos backPos = pos.offset(getFront().getOpposite()); FluidPropagator.propagateChangedPipe(world, frontPos, world.getBlockState(frontPos)); FluidPropagator.propagateChangedPipe(world, backPos, world.getBlockState(backPos)); + + FluidTransportBehaviour behaviour = getBehaviour(FluidTransportBehaviour.TYPE); + if (behaviour != null) + behaviour.wipePressure(); + sidesToUpdate.forEach(MutableBoolean::setTrue); } protected void distributePressureTo(Direction side) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/GenericItemFilling.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/GenericItemFilling.java index 801f45fd1..271378b4d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/GenericItemFilling.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/GenericItemFilling.java @@ -5,9 +5,11 @@ import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler import com.simibubi.create.foundation.fluid.FluidHelper; import net.minecraft.fluid.Fluids; +import net.minecraft.item.BucketItem; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.item.MilkBucketItem; import net.minecraft.potion.PotionUtils; import net.minecraft.potion.Potions; import net.minecraft.world.World; @@ -20,6 +22,33 @@ import net.minecraftforge.fluids.capability.wrappers.FluidBucketWrapper; public class GenericItemFilling { + /** + * Checks if an ItemStack's IFluidHandlerItem is valid. Ideally, this check would + * not be necessary. Unfortunately, some mods that copy the functionality of the + * MilkBucketItem copy the FluidBucketWrapper capability that is patched in by + * Forge without looking into what it actually does. In all cases this is + * incorrect because having a non-bucket item turn into a bucket item does not + * make sense. + * + *

This check is only necessary for filling since a FluidBucketWrapper will be + * empty if it is initialized with a non-bucket item. + * + * @param stack The ItemStack. + * @param fluidHandler The IFluidHandlerItem instance retrieved from the ItemStack. + * @return If the IFluidHandlerItem is valid for the passed ItemStack. + */ + public static boolean isFluidHandlerValid(ItemStack stack, IFluidHandlerItem fluidHandler) { + // Not instanceof in case a correct subclass is made + if (fluidHandler.getClass() == FluidBucketWrapper.class) { + Item item = stack.getItem(); + // Forge does not patch the FluidBucketWrapper onto subclasses of BucketItem + if (item.getClass() != BucketItem.class && !(item instanceof MilkBucketItem)) { + return false; + } + } + return true; + } + public static boolean canItemBeFilled(World world, ItemStack stack) { if (stack.getItem() == Items.GLASS_BOTTLE) return true; @@ -31,6 +60,8 @@ public class GenericItemFilling { IFluidHandlerItem tank = capability.orElse(null); if (tank == null) return false; + if (!isFluidHandlerValid(stack, tank)) + return false; for (int i = 0; i < tank.getTanks(); i++) { if (tank.getFluidInTank(i) .getAmount() < tank.getTankCapacity(i)) diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/CreativeFluidTankTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/CreativeFluidTankTileEntity.java index dfa661558..e5bf6f58a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/CreativeFluidTankTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/CreativeFluidTankTileEntity.java @@ -1,10 +1,12 @@ package com.simibubi.create.content.contraptions.fluids.tank; +import java.util.List; import java.util.function.Consumer; import com.simibubi.create.foundation.fluid.SmartFluidTank; import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.text.ITextComponent; import net.minecraftforge.fluids.FluidStack; public class CreativeFluidTankTileEntity extends FluidTankTileEntity { @@ -17,6 +19,11 @@ public class CreativeFluidTankTileEntity extends FluidTankTileEntity { protected SmartFluidTank createInventory() { return new CreativeSmartFluidTank(getCapacityMultiplier(), this::onFluidStackChanged); } + + @Override + public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { + return false; + } public static class CreativeSmartFluidTank extends SmartFluidTank { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankTileEntity.java index 3501c84f3..ccb7403ba 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankTileEntity.java @@ -141,6 +141,8 @@ public class FluidTankTileEntity extends SmartTileEntity implements IHaveGoggleI FluidTankTileEntity tankAt = FluidTankConnectivityHandler.anyTankAt(world, pos); if (tankAt == null) continue; + world.updateComparatorOutputLevel(pos, tankAt.getBlockState() + .getBlock()); if (tankAt.luminosity == actualLuminosity) continue; tankAt.setLuminosity(actualLuminosity); @@ -315,8 +317,11 @@ public class FluidTankTileEntity extends SmartTileEntity implements IHaveGoggleI @Override public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { + FluidTankTileEntity controllerTE = getControllerTE(); + if (controllerTE == null) + return false; return containedFluidTooltip(tooltip, isPlayerSneaking, - getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)); + controllerTE.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftBlock.java index 9592b9d02..19a563c35 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftBlock.java @@ -169,6 +169,20 @@ public class GantryShaftBlock extends DirectionalKineticBlock { return onWrenched; } + @Override + public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) { + super.onBlockAdded(state, worldIn, pos, oldState, isMoving); + + if (!worldIn.isRemote() && oldState.getBlock().is(AllBlocks.GANTRY_SHAFT.get())) { + Part oldPart = oldState.get(PART), part = state.get(PART); + if ((oldPart != Part.MIDDLE && part == Part.MIDDLE) || (oldPart == Part.SINGLE && part != Part.SINGLE)) { + TileEntity te = worldIn.getTileEntity(pos); + if (te instanceof GantryShaftTileEntity) + ((GantryShaftTileEntity) te).checkAttachedCarriageBlocks(); + } + } + } + @Override public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block p_220069_4_, BlockPos p_220069_5_, boolean p_220069_6_) { @@ -260,7 +274,7 @@ public class GantryShaftBlock extends DirectionalKineticBlock { return super.areStatesKineticallyEquivalent(oldState, newState) && oldState.get(POWERED) == newState.get(POWERED); } - + @Override public float getParticleTargetRadius() { return .35f; @@ -270,7 +284,7 @@ public class GantryShaftBlock extends DirectionalKineticBlock { public float getParticleInitialRadius() { return .25f; } - + @Override public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { return false; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftTileEntity.java index 681a01269..2f9fe658a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftTileEntity.java @@ -19,15 +19,12 @@ public class GantryShaftTileEntity extends KineticTileEntity { super(typeIn); } - @Override - public void onSpeedChanged(float previousSpeed) { - super.onSpeedChanged(previousSpeed); - + public void checkAttachedCarriageBlocks() { if (!canAssembleOn()) return; for (Direction d : Iterate.directions) { if (d.getAxis() == getBlockState().get(GantryShaftBlock.FACING) - .getAxis()) + .getAxis()) continue; BlockPos offset = pos.offset(d); BlockState pinionState = world.getBlockState(offset); @@ -39,7 +36,12 @@ public class GantryShaftTileEntity extends KineticTileEntity { if (tileEntity instanceof GantryCarriageTileEntity) ((GantryCarriageTileEntity) tileEntity).queueAssembly(); } + } + @Override + public void onSpeedChanged(float previousSpeed) { + super.onSpeedChanged(previousSpeed); + checkAttachedCarriageBlocks(); } @Override @@ -99,7 +101,7 @@ public class GantryShaftTileEntity extends KineticTileEntity { return 0; return MathHelper.clamp(-getSpeed() / 512f, -.49f, .49f); } - + @Override protected boolean isNoisy() { return false; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java index 157ff3ecc..fb073cbc2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java @@ -153,7 +153,7 @@ public class SequencedGearshiftScreen extends AbstractSimiScreen { 0xffffff); GuiGameElement.of(renderedItem) - .at(guiLeft + background.width + 10, guiTop + 100, -150) + .at(guiLeft + background.width + 10, guiTop + 100, -150) .scale(5) .render(matrixStack); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java index f8a518fa7..c7f53f446 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java @@ -187,6 +187,10 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE directions = - IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getHitVec(), state.get(AXIS)); + IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getHitVec(), state.get(AXIS)); for (Direction dir : directions) { BlockPos newPos = pos.offset(dir); @@ -132,8 +132,8 @@ public class CogwheelBlockItem extends BlockItem { continue; if (!world.getBlockState(newPos) - .getMaterial() - .isReplaceable()) + .getMaterial() + .isReplaceable()) continue; return PlacementOffset.success(newPos, s -> s.with(AXIS, state.get(AXIS))); @@ -162,19 +162,19 @@ public class CogwheelBlockItem extends BlockItem { if (((CogWheelBlock) state.getBlock()).isLarge) { Direction side = IPlacementHelper.orderedByDistanceOnlyAxis(pos, ray.getHitVec(), state.get(AXIS)) - .get(0); + .get(0); List directions = - IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getHitVec(), state.get(AXIS)); + IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getHitVec(), state.get(AXIS)); for (Direction dir : directions) { BlockPos newPos = pos.offset(dir) - .offset(side); + .offset(side); if (!CogWheelBlock.isValidCogwheelPosition(true, world, newPos, dir.getAxis())) continue; if (!world.getBlockState(newPos) - .getMaterial() - .isReplaceable()) + .getMaterial() + .isReplaceable()) continue; return PlacementOffset.success(newPos, s -> s.with(AXIS, dir.getAxis())); @@ -199,16 +199,16 @@ public class CogwheelBlockItem extends BlockItem { public PlacementOffset getOffset(PlayerEntity player, World world, BlockState state, BlockPos pos, BlockRayTraceResult ray) { // diagonal gears of different size Direction closest = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getHitVec(), state.get(AXIS)) - .get(0); + .get(0); List directions = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getHitVec(), - state.get(AXIS), d -> d.getAxis() != closest.getAxis()); + state.get(AXIS), d -> d.getAxis() != closest.getAxis()); for (Direction dir : directions) { BlockPos newPos = pos.offset(dir) - .offset(closest); + .offset(closest); if (!world.getBlockState(newPos) - .getMaterial() - .isReplaceable()) + .getMaterial() + .isReplaceable()) continue; if (!CogWheelBlock.isValidCogwheelPosition(ICogWheel.isLargeCog(state), world, newPos, state.get(AXIS))) @@ -222,16 +222,16 @@ public class CogwheelBlockItem extends BlockItem { protected boolean hitOnShaft(BlockState state, BlockRayTraceResult ray) { return AllShapes.SIX_VOXEL_POLE.get(state.get(AXIS)) - .getBoundingBox() - .grow(0.001) - .contains(ray.getHitVec() - .subtract(ray.getHitVec() - .align(Iterate.axisSet))); + .getBoundingBox() + .grow(0.001) + .contains(ray.getHitVec() + .subtract(ray.getHitVec() + .align(Iterate.axisSet))); } } @MethodsReturnNonnullByDefault - public static class IntegratedCogHelper implements IPlacementHelper { + public static class IntegratedLargeCogHelper implements IPlacementHelper { @Override public Predicate getItemPredicate() { @@ -250,10 +250,10 @@ public class CogwheelBlockItem extends BlockItem { if (state.contains(HorizontalKineticBlock.HORIZONTAL_FACING)) newAxis = state.get(HorizontalKineticBlock.HORIZONTAL_FACING) - .getAxis(); + .getAxis(); else if (state.contains(DirectionalKineticBlock.FACING)) newAxis = state.get(DirectionalKineticBlock.FACING) - .getAxis(); + .getAxis(); else newAxis = Axis.Y; @@ -261,15 +261,15 @@ public class CogwheelBlockItem extends BlockItem { return PlacementOffset.fail(); List directions = - IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getHitVec(), face.getAxis(), newAxis); + IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getHitVec(), face.getAxis(), newAxis); for (Direction d : directions) { BlockPos newPos = pos.offset(face) - .offset(d); + .offset(d); if (!world.getBlockState(newPos) - .getMaterial() - .isReplaceable()) + .getMaterial() + .isReplaceable()) continue; if (!CogWheelBlock.isValidCogwheelPosition(false, world, newPos, newAxis)) @@ -282,4 +282,57 @@ public class CogwheelBlockItem extends BlockItem { } } + + @MethodsReturnNonnullByDefault + public static class IntegratedSmallCogHelper implements IPlacementHelper { + + @Override + public Predicate getItemPredicate() { + return ((Predicate) ICogWheel::isSmallCogItem).and(ICogWheel::isDedicatedCogItem); + } + + @Override + public Predicate getStatePredicate() { + return s -> !ICogWheel.isDedicatedCogWheel(s.getBlock()) && ICogWheel.isSmallCog(s); + } + + @Override + public PlacementOffset getOffset(PlayerEntity player, World world, BlockState state, BlockPos pos, BlockRayTraceResult ray) { + Direction face = ray.getFace(); + Axis newAxis; + + if (state.contains(HorizontalKineticBlock.HORIZONTAL_FACING)) + newAxis = state.get(HorizontalKineticBlock.HORIZONTAL_FACING) + .getAxis(); + else if (state.contains(DirectionalKineticBlock.FACING)) + newAxis = state.get(DirectionalKineticBlock.FACING) + .getAxis(); + else + newAxis = Axis.Y; + + if (face.getAxis() == newAxis) + return PlacementOffset.fail(); + + List directions = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getHitVec(), newAxis); + + for (Direction d : directions) { + BlockPos newPos = pos.offset(d); + + if (!world.getBlockState(newPos) + .getMaterial() + .isReplaceable()) + continue; + + if (!CogWheelBlock.isValidCogwheelPosition(false, world, newPos, newAxis)) + return PlacementOffset.fail(); + + return PlacementOffset.success() + .at(newPos) + .withTransform(s -> s.with(CogWheelBlock.AXIS, newAxis)); + } + + return PlacementOffset.fail(); + } + + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java index 8d1b30216..52d9489c4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java @@ -20,8 +20,6 @@ import net.minecraft.item.ItemUseContext; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.server.ServerWorld; @@ -75,7 +73,7 @@ public interface IWrenchable { default void playRemoveSound(World world, BlockPos pos) { AllSoundEvents.WRENCH_REMOVE.playOnServer(world, pos, 1, Create.random.nextFloat() * .5f + .5f); } - + default void playRotateSound(World world, BlockPos pos) { AllSoundEvents.WRENCH_ROTATE.playOnServer(world, pos, 1, Create.random.nextFloat() + .5f); } diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/AllArmorMaterials.java b/src/main/java/com/simibubi/create/content/curiosities/armor/AllArmorMaterials.java new file mode 100644 index 000000000..1b0f7f6e1 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/AllArmorMaterials.java @@ -0,0 +1,78 @@ +package com.simibubi.create.content.curiosities.armor; + +import java.util.function.Supplier; + +import com.simibubi.create.AllItems; +import com.simibubi.create.AllSoundEvents; + +import net.minecraft.inventory.EquipmentSlotType; +import net.minecraft.item.IArmorMaterial; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.util.LazyValue; +import net.minecraft.util.SoundEvent; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +public enum AllArmorMaterials implements IArmorMaterial { + + COPPER("copper", 7, new int[] { 1, 3, 4, 2 }, 25, AllSoundEvents.COPPER_ARMOR_EQUIP.getMainEvent(), 0.0F, 0.0F, + () -> Ingredient.fromItems(AllItems.COPPER_INGOT.get())) + + ; + + private static final int[] MAX_DAMAGE_ARRAY = new int[] { 13, 15, 16, 11 }; + private final String name; + private final int maxDamageFactor; + private final int[] damageReductionAmountArray; + private final int enchantability; + private final SoundEvent soundEvent; + private final float toughness; + private final float knockbackResistance; + private final LazyValue repairMaterial; + + private AllArmorMaterials(String p_i231593_3_, int p_i231593_4_, int[] p_i231593_5_, int p_i231593_6_, + SoundEvent p_i231593_7_, float p_i231593_8_, float p_i231593_9_, Supplier p_i231593_10_) { + this.name = p_i231593_3_; + this.maxDamageFactor = p_i231593_4_; + this.damageReductionAmountArray = p_i231593_5_; + this.enchantability = p_i231593_6_; + this.soundEvent = p_i231593_7_; + this.toughness = p_i231593_8_; + this.knockbackResistance = p_i231593_9_; + this.repairMaterial = new LazyValue<>(p_i231593_10_); + } + + public int getDurability(EquipmentSlotType p_200896_1_) { + return MAX_DAMAGE_ARRAY[p_200896_1_.getIndex()] * this.maxDamageFactor; + } + + public int getDamageReductionAmount(EquipmentSlotType p_200902_1_) { + return this.damageReductionAmountArray[p_200902_1_.getIndex()]; + } + + public int getEnchantability() { + return this.enchantability; + } + + public SoundEvent getSoundEvent() { + return this.soundEvent; + } + + public Ingredient getRepairMaterial() { + return this.repairMaterial.getValue(); + } + + @OnlyIn(Dist.CLIENT) + public String getName() { + return this.name; + } + + public float getToughness() { + return this.toughness; + } + + public float getKnockbackResistance() { + return this.knockbackResistance; + } + +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperArmorItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperArmorItem.java new file mode 100644 index 000000000..01ccb623e --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperArmorItem.java @@ -0,0 +1,28 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.simibubi.create.Create; + +import net.minecraft.entity.Entity; +import net.minecraft.inventory.EquipmentSlotType; +import net.minecraft.item.ArmorItem; +import net.minecraft.item.ItemStack; + +public class CopperArmorItem extends ArmorItem { + + public CopperArmorItem(EquipmentSlotType p_i48534_2_, Properties p_i48534_3_) { + super(AllArmorMaterials.COPPER, p_i48534_2_, p_i48534_3_); + } + + public boolean isWornBy(Entity entity) { + for (ItemStack itemStack : entity.getArmorInventoryList()) + if (itemStack.getItem() == this) + return true; + return false; + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlotType slot, String type) { + return String.format("%s:textures/models/armor/copper.png", Create.ID); + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java new file mode 100644 index 000000000..f127b8b26 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java @@ -0,0 +1,141 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllItems; +import com.simibubi.create.CreateClient; +import com.simibubi.create.foundation.gui.GuiGameElement; +import com.simibubi.create.foundation.render.SuperByteBuffer; +import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.foundation.utility.AnimationTickHolder; +import com.simibubi.create.foundation.utility.ColorHelper; + +import net.minecraft.block.BlockState; +import net.minecraft.client.MainWindow; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.player.ClientPlayerEntity; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.IRenderTypeBuffer.Impl; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererManager; +import net.minecraft.client.renderer.entity.LivingRenderer; +import net.minecraft.client.renderer.entity.layers.LayerRenderer; +import net.minecraft.client.renderer.entity.model.BipedModel; +import net.minecraft.client.renderer.entity.model.EntityModel; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.Pose; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; +import net.minecraft.util.StringUtils; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.StringTextComponent; + +public class CopperBacktankArmorLayer> extends LayerRenderer { + + private LivingRenderer renderer; + + public CopperBacktankArmorLayer(LivingRenderer renderer) { + super(renderer); + this.renderer = renderer; + renderer.addLayer(this); + } + + @Override + public void render(MatrixStack ms, IRenderTypeBuffer buffer, int light, LivingEntity entity, float yaw, float pitch, + float pt, float p_225628_8_, float p_225628_9_, float p_225628_10_) { + + if (entity.getPose() == Pose.SLEEPING) + return; + if (!AllItems.COPPER_BACKTANK.get() + .isWornBy(entity)) + return; + + M entityModel = renderer.getEntityModel(); + if (!(entityModel instanceof BipedModel)) + return; + + ms.push(); + BipedModel model = (BipedModel) entityModel; + BlockState renderedState = AllBlocks.COPPER_BACKTANK.getDefaultState() + .with(CopperBacktankBlock.HORIZONTAL_FACING, Direction.SOUTH); + RenderType renderType = RenderType.getCutout(); + + SuperByteBuffer backtank = CreateClient.bufferCache.renderBlock(renderedState); + SuperByteBuffer cogs = + CreateClient.bufferCache.renderPartial(AllBlockPartials.COPPER_BACKTANK_COGS, renderedState); + + model.bipedBody.rotate(ms); + ms.translate(-1 / 2f, 10 / 16f, 1f); + ms.scale(1, -1, -1); + backtank.light(light) + .renderInto(ms, buffer.getBuffer(renderType)); + + cogs.matrixStacker() + .centre() + .rotateY(180) + .unCentre() + .translate(0, 6.5f / 16, 11f / 16) + .rotate(Direction.EAST, AngleHelper.rad(2 * AnimationTickHolder.getRenderTime(entity.world) % 360)) + .translate(0, -6.5f / 16, -11f / 16); + + cogs.light(light) + .renderInto(ms, buffer.getBuffer(renderType)); + + if (buffer instanceof Impl) + ((Impl) buffer).draw(renderType); + ms.pop(); + + } + + public static void register() { + EntityRendererManager renderManager = Minecraft.getInstance() + .getRenderManager(); + registerOn(renderManager.playerRenderer); + for (EntityRenderer renderer : renderManager.renderers.values()) + registerOn(renderer); + } + + private static void registerOn(EntityRenderer entityRenderer) { + if (!(entityRenderer instanceof LivingRenderer)) + return; + new CopperBacktankArmorLayer<>((LivingRenderer) entityRenderer); + } + + public static void renderRemainingAirOverlay(MatrixStack ms, Impl buffers, int light, int overlay, float pt) { + ClientPlayerEntity player = Minecraft.getInstance().player; + if (player == null) + return; + if (player.isSpectator() || player.isCreative()) + return; + if (!player.getPersistentData() + .contains("VisualBacktankAir")) + return; + if (!player.areEyesInFluid(FluidTags.WATER)) + return; + + int timeLeft = player.getPersistentData() + .getInt("VisualBacktankAir"); + + ms.push(); + + MainWindow window = Minecraft.getInstance() + .getWindow(); + ms.translate(window.getScaledWidth() / 2 + 90, window.getScaledHeight() - 53, 0); + + ITextComponent text = new StringTextComponent(StringUtils.ticksToElapsedTime(timeLeft * 20)); + GuiGameElement.of(AllItems.COPPER_BACKTANK.asStack()) + .at(0, 0) + .render(ms); + int color = 0xFF_FFFFFF; + if (timeLeft < 60 && timeLeft % 2 == 0) { + color = ColorHelper.mixColors(0xFF_FF0000, color, Math.max(timeLeft / 60f, .25f)); + } + Minecraft.getInstance().fontRenderer.drawWithShadow(ms, text, 16, 5, color); + buffers.draw(); + + ms.pop(); + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankBlock.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankBlock.java new file mode 100644 index 000000000..53327ec31 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankBlock.java @@ -0,0 +1,165 @@ +package com.simibubi.create.content.curiosities.armor; + +import java.util.Optional; + +import com.simibubi.create.AllItems; +import com.simibubi.create.AllShapes; +import com.simibubi.create.AllTileEntities; +import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; +import com.simibubi.create.foundation.block.ITE; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.IWaterLoggable; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.fluid.FluidState; +import net.minecraft.fluid.Fluids; +import net.minecraft.inventory.EquipmentSlotType; +import net.minecraft.item.BlockItem; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.ItemStack; +import net.minecraft.pathfinding.PathType; +import net.minecraft.state.StateContainer.Builder; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Direction; +import net.minecraft.util.Direction.Axis; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; +import net.minecraftforge.common.util.FakePlayer; + +public class CopperBacktankBlock extends HorizontalKineticBlock + implements ITE, IWaterLoggable { + + public CopperBacktankBlock(Properties properties) { + super(properties); + setDefaultState(super.getDefaultState().with(BlockStateProperties.WATERLOGGED, false)); + } + + @Override + public FluidState getFluidState(BlockState state) { + return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) + : Fluids.EMPTY.getDefaultState(); + } + + @Override + protected void fillStateContainer(Builder builder) { + builder.add(BlockStateProperties.WATERLOGGED); + super.fillStateContainer(builder); + } + + @Override + public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState, + IWorld world, BlockPos pos, BlockPos neighbourPos) { + if (state.get(BlockStateProperties.WATERLOGGED)) { + world.getPendingFluidTicks() + .scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); + } + return state; + } + + @Override + public BlockState getStateForPlacement(BlockItemUseContext context) { + FluidState ifluidstate = context.getWorld() + .getFluidState(context.getPos()); + return super.getStateForPlacement(context).with(BlockStateProperties.WATERLOGGED, + Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)); + } + + @Override + public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { + return face == Direction.UP; + } + + @Override + public Axis getRotationAxis(BlockState state) { + return Axis.Y; + } + + @Override + public void onBlockPlacedBy(World worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { + super.onBlockPlacedBy(worldIn, pos, state, placer, stack); + if (worldIn.isRemote) + return; + if (stack == null) + return; + withTileEntityDo(worldIn, pos, te -> { + te.setAirLevel(stack.getOrCreateTag() + .getInt("Air")); + if (stack.hasDisplayName()) + te.setCustomName(stack.getDisplayName()); + }); + } + + @Override + public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand p_225533_5_, + BlockRayTraceResult p_225533_6_) { + if (player == null) + return ActionResultType.PASS; + if (player instanceof FakePlayer) + return ActionResultType.PASS; + if (player.isSneaking()) + return ActionResultType.PASS; + if (player.getHeldItemMainhand() + .getItem() instanceof BlockItem) + return ActionResultType.PASS; + if (!player.getItemStackFromSlot(EquipmentSlotType.CHEST) + .isEmpty()) + return ActionResultType.PASS; + if (!world.isRemote) { + world.playSound(null, pos, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.PLAYERS, .75f, 1); + player.setItemStackToSlot(EquipmentSlotType.CHEST, getItem(world, pos, state)); + world.destroyBlock(pos, false); + } + return ActionResultType.SUCCESS; + } + + @Override + public ItemStack getItem(IBlockReader p_185473_1_, BlockPos p_185473_2_, BlockState p_185473_3_) { + ItemStack item = AllItems.COPPER_BACKTANK.asStack(); + Optional tileEntityOptional = getTileEntityOptional(p_185473_1_, p_185473_2_); + int air = tileEntityOptional.map(CopperBacktankTileEntity::getAirLevel) + .orElse(0); + ITextComponent customName = tileEntityOptional.map(CopperBacktankTileEntity::getCustomName) + .orElse(null); + item.getOrCreateTag() + .putInt("Air", air); + if (customName != null) + item.setDisplayName(customName); + return item; + } + + @Override + public VoxelShape getShape(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, + ISelectionContext p_220053_4_) { + return AllShapes.BACKTANK; + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return AllTileEntities.COPPER_BACKTANK.create(); + } + + @Override + public Class getTileEntityClass() { + return CopperBacktankTileEntity.class; + } + + @Override + public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { + return false; + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankInstance.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankInstance.java new file mode 100644 index 000000000..46a4c6ff6 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankInstance.java @@ -0,0 +1,21 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.jozufozu.flywheel.backend.instancing.InstancedModel; +import com.jozufozu.flywheel.backend.instancing.InstancedTileRenderer; +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.contraptions.base.RotatingData; +import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; + +public class CopperBacktankInstance extends SingleRotatingInstance { + + public CopperBacktankInstance(InstancedTileRenderer modelManager, KineticTileEntity tile) { + super(modelManager, tile); + } + + @Override + protected InstancedModel getModel() { + return getRotatingMaterial().getModel(AllBlockPartials.COPPER_BACKTANK_SHAFT, blockState); + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankItem.java new file mode 100644 index 000000000..571f8097d --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankItem.java @@ -0,0 +1,67 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.simibubi.create.foundation.config.AllConfigs; + +import net.minecraft.inventory.EquipmentSlotType; +import net.minecraft.item.BlockItem; +import net.minecraft.item.ItemGroup; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.NonNullList; +import net.minecraft.util.math.MathHelper; + +public class CopperBacktankItem extends CopperArmorItem { + + private BlockItem blockItem; + + public CopperBacktankItem(Properties p_i48534_3_, BlockItem blockItem) { + super(EquipmentSlotType.CHEST, p_i48534_3_); + this.blockItem = blockItem; + } + + @Override + public ActionResultType onItemUse(ItemUseContext p_195939_1_) { + return blockItem.onItemUse(p_195939_1_); + } + + @Override + public boolean isDamageable() { + return false; + } + + @Override + public int getRGBDurabilityForDisplay(ItemStack stack) { + return 0xefefef; + } + + @Override + public void fillItemGroup(ItemGroup p_150895_1_, NonNullList p_150895_2_) { + if (!isInGroup(p_150895_1_)) + return; + + ItemStack stack = new ItemStack(this); + CompoundNBT nbt = new CompoundNBT(); + nbt.putInt("Air", AllConfigs.SERVER.curiosities.maxAirInBacktank.get()); + stack.setTag(nbt); + p_150895_2_.add(stack); + } + + @Override + public double getDurabilityForDisplay(ItemStack stack) { + return 1 - MathHelper + .clamp(getRemainingAir(stack) / ((float) AllConfigs.SERVER.curiosities.maxAirInBacktank.get()), 0, 1); + } + + @Override + public boolean showDurabilityBar(ItemStack stack) { + return true; + } + + public static int getRemainingAir(ItemStack stack) { + CompoundNBT orCreateTag = stack.getOrCreateTag(); + return orCreateTag.getInt("Air"); + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankRenderer.java new file mode 100644 index 000000000..8cf2b2c89 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankRenderer.java @@ -0,0 +1,49 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.CreateClient; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.SuperByteBuffer; +import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.foundation.utility.AnimationTickHolder; + +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; +import net.minecraft.util.Direction; + +public class CopperBacktankRenderer extends KineticTileEntityRenderer { + + public CopperBacktankRenderer(TileEntityRendererDispatcher dispatcher) { + super(dispatcher); + } + + @Override + protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, + int light, int overlay) { + super.renderSafe(te, partialTicks, ms, buffer, light, overlay); + + SuperByteBuffer cogs = + CreateClient.bufferCache.renderPartial(AllBlockPartials.COPPER_BACKTANK_COGS, te.getBlockState()); + cogs.matrixStacker() + .centre() + .rotateY(180 + AngleHelper.horizontalAngle(te.getBlockState() + .get(CopperBacktankBlock.HORIZONTAL_FACING))) + .unCentre() + .translate(0, 6.5f / 16, 11f / 16) + .rotate(Direction.EAST, + AngleHelper.rad(te.getSpeed() / 4f * AnimationTickHolder.getRenderTime(te.getWorld()) % 360)) + .translate(0, -6.5f / 16, -11f / 16); + cogs.light(light) + .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); + } + + @Override + protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { + return PartialBufferer.get(AllBlockPartials.COPPER_BACKTANK_SHAFT, te.getBlockState()); + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java new file mode 100644 index 000000000..5ac126910 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java @@ -0,0 +1,130 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.simibubi.create.AllItems; +import com.simibubi.create.AllSoundEvents; +import com.simibubi.create.Create; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.contraptions.particle.AirParticleData; +import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.utility.VecHelper; + +import net.minecraft.block.BlockState; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.Direction.Axis; +import net.minecraft.util.INameable; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.vector.Vector3d; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; + +public class CopperBacktankTileEntity extends KineticTileEntity implements INameable { + + public int airLevel; + public int airLevelTimer; + private ITextComponent customName; + + public CopperBacktankTileEntity(TileEntityType typeIn) { + super(typeIn); + } + + @Override + public void tick() { + super.tick(); + if (getSpeed() == 0) + return; + if (airLevelTimer > 0) { + airLevelTimer--; + return; + } + + int max = getMaxAir(); + if (world.isRemote) { + Vector3d centerOf = VecHelper.getCenterOf(pos); + Vector3d v = VecHelper.offsetRandomly(centerOf, Create.random, .65f); + Vector3d m = centerOf.subtract(v); + if (airLevel != max) + world.addParticle(new AirParticleData(1, .05f), v.x, v.y, v.z, m.x, m.y, m.z); + return; + } + + if (airLevel == max) + return; + + float abs = Math.abs(getSpeed()); + int increment = MathHelper.clamp(((int) abs - 100) / 20, 1, 5); + airLevel = Math.min(max, airLevel + increment); + if (airLevel == max) + sendData(); + airLevelTimer = MathHelper.clamp((int) (128f - abs / 5f) - 108, 0, 20); + } + + protected int getMaxAir() { + return AllConfigs.SERVER.curiosities.maxAirInBacktank.get(); + } + + public int getAirLevel() { + return airLevel; + } + + public void setAirLevel(int airLevel) { + this.airLevel = airLevel; + sendData(); + } + + public void setCustomName(ITextComponent customName) { + this.customName = customName; + } + + public ITextComponent getCustomName() { + return customName; + } + + @Override + protected void write(CompoundNBT compound, boolean clientPacket) { + super.write(compound, clientPacket); + compound.putInt("Air", airLevel); + compound.putInt("Timer", airLevelTimer); + if (this.customName != null) + compound.putString("CustomName", ITextComponent.Serializer.toJson(this.customName)); + } + + @Override + protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { + super.fromTag(state, compound, clientPacket); + int prev = airLevel; + airLevel = compound.getInt("Air"); + airLevelTimer = compound.getInt("Timer"); + if (compound.contains("CustomName", 8)) + this.customName = ITextComponent.Serializer.fromJson(compound.getString("CustomName")); + if (prev != 0 && prev != airLevel && airLevel == getMaxAir() && clientPacket) + playFilledEffect(); + } + + protected void playFilledEffect() { + AllSoundEvents.CONFIRM.playAt(world, pos, 0.4f, 1, true); + Vector3d baseMotion = new Vector3d(.25, 0.1, 0); + Vector3d baseVec = VecHelper.getCenterOf(pos); + for (int i = 0; i < 360; i += 10) { + Vector3d m = VecHelper.rotate(baseMotion, i, Axis.Y); + Vector3d v = baseVec.add(m.normalize() + .scale(.25f)); + + world.addParticle(ParticleTypes.SPIT, v.x, v.y, v.z, m.x, m.y, m.z); + } + } + + @Override + public ITextComponent getName() { + return this.customName != null ? this.customName + : new TranslationTextComponent(AllItems.COPPER_BACKTANK.get() + .getTranslationKey()); + } + + @Override + public boolean shouldRenderAsTE() { + return true; + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java new file mode 100644 index 000000000..9b83bbb72 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java @@ -0,0 +1,68 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.simibubi.create.AllItems; +import com.simibubi.create.foundation.utility.NBTHelper; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.Pose; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.EquipmentSlotType; +import net.minecraft.util.math.vector.Vector3d; +import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import net.minecraftforge.fml.common.ObfuscationReflectionHelper; + +@EventBusSubscriber +public class DivingBootsItem extends CopperArmorItem { + + public DivingBootsItem(Properties p_i48534_3_) { + super(EquipmentSlotType.FEET, p_i48534_3_); + } + + @SubscribeEvent + public static void accellerateDescentUnderwater(LivingUpdateEvent event) { + LivingEntity entity = event.getEntityLiving(); + if (!affects(entity)) + return; + + Vector3d motion = entity.getMotion(); + Boolean isJumping = ObfuscationReflectionHelper.getPrivateValue(LivingEntity.class, entity, "field_70703_bu"); + entity.onGround |= entity.collidedVertically; + + if (isJumping && entity.onGround) { + motion = motion.add(0, .5f, 0); + entity.onGround = false; + } else { + motion = motion.add(0, -0.05f, 0); + } + + float multiplier = 1.3f; + if (motion.mul(1, 0, 1) + .length() < 0.145f && (entity.moveForward > 0 || entity.moveStrafing != 0) && !entity.isSneaking()) + motion = motion.mul(multiplier, 1, multiplier); + entity.setMotion(motion); + } + + protected static boolean affects(LivingEntity entity) { + if (!AllItems.DIVING_BOOTS.get() + .isWornBy(entity)) { + entity.getPersistentData() + .remove("HeavyBoots"); + return false; + } + + NBTHelper.putMarker(entity.getPersistentData(), "HeavyBoots"); + if (!entity.isInWater()) + return false; + if (entity.getPose() == Pose.SWIMMING) + return false; + if (entity instanceof PlayerEntity) { + PlayerEntity playerEntity = (PlayerEntity) entity; + if (playerEntity.abilities.isFlying) + return false; + } + return true; + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java new file mode 100644 index 000000000..4eed417c6 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java @@ -0,0 +1,72 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.simibubi.create.AllItems; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.inventory.EquipmentSlotType; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.potion.EffectInstance; +import net.minecraft.potion.Effects; +import net.minecraft.world.World; +import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; + +@EventBusSubscriber +public class DivingHelmetItem extends CopperArmorItem { + + public DivingHelmetItem(Properties p_i48534_3_) { + super(EquipmentSlotType.HEAD, p_i48534_3_); + } + + @SubscribeEvent + public static void breatheUnderwater(LivingUpdateEvent event) { + LivingEntity entity = event.getEntityLiving(); + World world = entity.world; + boolean second = world.getGameTime() % 20 == 0; + boolean drowning = entity.getAir() == 0; + + if (world.isRemote) + entity.getPersistentData() + .remove("VisualBacktankAir"); + + if (!AllItems.DIVING_HELMET.get() + .isWornBy(entity)) + return; + if (!entity.isInWater()) + return; + + ItemStack backtank = ItemStack.EMPTY; + for (ItemStack itemStack : entity.getArmorInventoryList()) { + if (AllItems.COPPER_BACKTANK.isIn(itemStack)) { + backtank = itemStack; + break; + } + } + + if (backtank.isEmpty()) + return; + + CompoundNBT tag = backtank.getOrCreateTag(); + int airRemaining = tag.getInt("Air"); + if (airRemaining == 0) + return; + + if (drowning) + entity.setAir(10); + + if (world.isRemote) + entity.getPersistentData() + .putInt("VisualBacktankAir", airRemaining); + + if (!second) + return; + + entity.setAir(Math.min(entity.getMaxAir(), entity.getAir() + 10)); + entity.addPotionEffect(new EffectInstance(Effects.WATER_BREATHING, 30, 0, true, false, true)); + tag.putInt("Air", airRemaining - 1); + backtank.setTag(tag); + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/projector/ChromaticProjectorScreen.java b/src/main/java/com/simibubi/create/content/curiosities/projector/ChromaticProjectorScreen.java index ee0620239..1478f20cd 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/projector/ChromaticProjectorScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/projector/ChromaticProjectorScreen.java @@ -229,8 +229,8 @@ public class ChromaticProjectorScreen extends AbstractSimiScreen { 0xffffff); GuiGameElement.of(renderedItem) - .at(guiLeft + background.width + 10, guiTop + 140, -150) .scale(5) + .at(guiLeft + background.width + 10, guiTop + 140, -150) .render(matrixStack); } diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java index ecae91299..bc2ebd9ef 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java @@ -96,14 +96,14 @@ public class SymmetryWandScreen extends AbstractSimiScreen { widgets.add(labelAlign); widgets.add(areaType); widgets.add(labelType); - + confirmButton = new IconButton(guiLeft + background.width - 33, guiTop + background.height - 24, AllIcons.I_CONFIRM); widgets.add(confirmButton); } private void initAlign(SymmetryMirror element) { - if (areaAlign != null) + if (areaAlign != null) widgets.remove(areaAlign); areaAlign = new SelectionScrollInput(guiLeft + 45, guiTop + 43, 109, 18).forOptions(element.getAlignToolTips()) @@ -121,10 +121,10 @@ public class SymmetryWandScreen extends AbstractSimiScreen { textRenderer.draw(matrixStack, wand.getDisplayName(), guiLeft + 11, guiTop + 4, 0x6B3802); renderBlock(matrixStack); GuiGameElement.of(wand) - .at(guiLeft + 170, guiTop + 490, -150) - .scale(4) - .rotate(-70, 20, 20) - .render(matrixStack); + .scale(4) + .rotate(-70, 20, 20) + .at(guiLeft + 170, guiTop + 490, -150) + .render(matrixStack); } protected void renderBlock(MatrixStack ms) { @@ -150,7 +150,7 @@ public class SymmetryWandScreen extends AbstractSimiScreen { client.player.setHeldItem(hand, heldItem); super.removed(); } - + @Override public boolean mouseClicked(double x, double y, int button) { if (confirmButton.isHovered()) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java index 7589047be..b62d2039d 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java @@ -135,9 +135,9 @@ public class ZapperScreen extends AbstractSimiScreen { protected void renderZapper(MatrixStack matrixStack) { GuiGameElement.of(zapper) - .at((this.width - this.sWidth) / 2 + 220, this.height / 2 - this.sHeight / 4 + 27, -150) - .scale(4) - .render(matrixStack); + .scale(4) + .at((this.width - this.sWidth) / 2 + 220, this.height / 2 - this.sHeight / 4 + 27, -150) + .render(matrixStack); } protected void renderBlock(MatrixStack matrixStack) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/inventories/AdjustableCrateScreen.java b/src/main/java/com/simibubi/create/content/logistics/block/inventories/AdjustableCrateScreen.java index 3d10ccc62..d8e532662 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/inventories/AdjustableCrateScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/inventories/AdjustableCrateScreen.java @@ -97,7 +97,7 @@ public class AdjustableCrateScreen extends AbstractSimiContainerScreenat(guiLeft + ADJUSTABLE_CRATE.width + 110, guiTop + 70, -150) .scale(5) .render(matrixStack); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java index ae0a584e3..0229882b3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java @@ -122,14 +122,14 @@ public class ArmTileEntity extends KineticTileEntity { } if (world.isRemote) return; - + if (phase == Phase.MOVE_TO_INPUT) collectItem(); else if (phase == Phase.MOVE_TO_OUTPUT) depositItem(); else if (phase == Phase.SEARCH_INPUTS || phase == Phase.DANCING) searchForItem(); - + if (targetReached) lazyTick(); } @@ -142,7 +142,7 @@ public class ArmTileEntity extends KineticTileEntity { return; if (chasedPointProgress < .5f) return; - if (phase == Phase.SEARCH_INPUTS || phase == Phase.DANCING) + if (phase == Phase.SEARCH_INPUTS || phase == Phase.DANCING) checkForMusic(); if (phase == Phase.SEARCH_OUTPUTS) searchForDestination(); @@ -175,7 +175,7 @@ public class ArmTileEntity extends KineticTileEntity { } private boolean tickMovementProgress() { - boolean targetReachedPreviously = chasedPointProgress >= 1; + boolean targetReachedPreviously = chasedPointProgress >= 1; chasedPointProgress += Math.min(256, Math.abs(getSpeed())) / 1024f; if (chasedPointProgress > 1) chasedPointProgress = 1; @@ -349,7 +349,7 @@ public class ArmTileEntity extends KineticTileEntity { chasedPointIndex = -1; sendData(); markDirty(); - + if (!prevHeld.isItemEqual(heldItem)) world.playSound(null, pos, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.BLOCKS, .125f, .5f + Create.random.nextFloat() * .25f); @@ -416,23 +416,26 @@ public class ArmTileEntity extends KineticTileEntity { markDirty(); } + public void writeInteractionPoints(CompoundNBT compound) { + if (updateInteractionPoints) { + compound.put("InteractionPoints", interactionPointTag); + } else { + ListNBT pointsNBT = new ListNBT(); + inputs.stream() + .map(aip -> aip.serialize(pos)) + .forEach(pointsNBT::add); + outputs.stream() + .map(aip -> aip.serialize(pos)) + .forEach(pointsNBT::add); + compound.put("InteractionPoints", pointsNBT); + } + } + @Override public void write(CompoundNBT compound, boolean clientPacket) { super.write(compound, clientPacket); - if (updateInteractionPoints) { - compound.put("InteractionPoints", interactionPointTag); - - } else { - ListNBT pointsNBT = new ListNBT(); - inputs.stream() - .map(aip -> aip.serialize(pos)) - .forEach(pointsNBT::add); - outputs.stream() - .map(aip -> aip.serialize(pos)) - .forEach(pointsNBT::add); - compound.put("InteractionPoints", pointsNBT); - } + writeInteractionPoints(compound); NBTHelper.writeEnum(compound, "Phase", phase); compound.putBoolean("Powered", redstoneLocked); @@ -441,6 +444,13 @@ public class ArmTileEntity extends KineticTileEntity { compound.putFloat("MovementProgress", chasedPointProgress); } + @Override + public void writeSafe(CompoundNBT compound, boolean clientPacket) { + super.writeSafe(compound, clientPacket); + + writeInteractionPoints(compound); + } + @Override protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { int previousIndex = chasedPointIndex; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchScreen.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchScreen.java index 84f468933..acca08977 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchScreen.java @@ -126,7 +126,7 @@ public class StockpileSwitchScreen extends AbstractSimiScreen { matrixStack.push(); GuiGameElement.of(renderedItem) - .at(guiLeft + STOCKSWITCH.width + 15, guiTop + 40, -250) + .at(guiLeft + STOCKSWITCH.width + 15, guiTop + 40, -250) .scale(5) .render(matrixStack); matrixStack.pop(); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/AbstractFilterScreen.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/AbstractFilterScreen.java index ab37bf0bd..bade51cb0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/AbstractFilterScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/AbstractFilterScreen.java @@ -69,7 +69,7 @@ public abstract class AbstractFilterScreen ex textRenderer.draw(ms, I18n.format(container.filterItem.getTranslationKey()), x + 15, y + 3, 0xdedede); GuiGameElement.of(container.filterItem) - .at(x + background.width, guiTop + background.height - 60) + .at(x + background.width, guiTop + background.height - 60, -200) .scale(5) .render(ms); diff --git a/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java b/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java index cd21994a5..93b98c4b7 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java @@ -122,7 +122,7 @@ public class SchematicTableScreen extends AbstractSimiContainerScreenat(mainLeft + 217, mainTop + 50, -150) .scale(3) .render(matrixStack); diff --git a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonScreen.java b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonScreen.java index 6d08924a9..f1e5a3032 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonScreen.java @@ -262,7 +262,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreenat(guiLeft + 230, guiTop + 110, -200) .scale(5) .render(matrixStack); @@ -274,7 +274,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreenat(guiLeft + 150, guiTop + 46, 100) .scale(1) .render(matrixStack); } diff --git a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java index d7f6f57d4..1dc2eba83 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java @@ -28,10 +28,15 @@ import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.item.ItemHelper.ExtractionCountMode; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; +import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.utility.BlockHelper; +import com.simibubi.create.foundation.utility.IPartialSafeNBT; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.NBTProcessors; +import net.minecraft.block.AbstractRailBlock; +import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.PistonHeadBlock; @@ -79,6 +84,10 @@ public class SchematicannonTileEntity extends SmartTileEntity implements INamedC STOPPED, PAUSED, RUNNING; } + public enum PrintStage { + BLOCKS, DEFERRED_BLOCKS, ENTITIES + } + // Inventory public SchematicannonInventory inventory; @@ -99,12 +108,14 @@ public class SchematicannonTileEntity extends SmartTileEntity implements INamedC private int skipsLeft; private boolean blockSkipped; private int printingEntityIndex; + private PrintStage printStage; public BlockPos target; public BlockPos previousTarget; public LinkedHashSet> attachedInventories; public List flyingBlocks; public MaterialChecklist checklist; + public List deferredBlocks; // Gui information public float fuelLevel; @@ -142,7 +153,9 @@ public class SchematicannonTileEntity extends SmartTileEntity implements INamedC inventory = new SchematicannonInventory(this); statusMsg = "idle"; state = State.STOPPED; - printingEntityIndex = -1; + printingEntityIndex = 0; + printStage = PrintStage.BLOCKS; + deferredBlocks = new LinkedList<>(); replaceMode = 2; checklist = new MaterialChecklist(); } @@ -198,8 +211,14 @@ public class SchematicannonTileEntity extends SmartTileEntity implements INamedC replaceTileEntities = options.getBoolean("ReplaceTileEntities"); // Printer & Flying Blocks + if (compound.contains("PrintStage")) + printStage = PrintStage.valueOf(compound.getString("PrintStage")); if (compound.contains("Target")) target = NBTUtil.readBlockPos(compound.getCompound("Target")); + if (compound.contains("DeferredBlocks")) + compound.getList("DeferredBlocks", 10).stream() + .map(p -> NBTUtil.readBlockPos((CompoundNBT) p)) + .collect(Collectors.toCollection(() -> deferredBlocks)); if (compound.contains("FlyingBlocks")) readFlyingBlocks(compound); @@ -273,12 +292,20 @@ public class SchematicannonTileEntity extends SmartTileEntity implements INamedC compound.put("Options", options); // Printer & Flying Blocks + compound.putString("PrintStage", printStage.name()); + if (target != null) compound.put("Target", NBTUtil.writeBlockPos(target)); - ListNBT tagBlocks = new ListNBT(); + + ListNBT tagDeferredBlocks = new ListNBT(); + for (BlockPos p : deferredBlocks) + tagDeferredBlocks.add(NBTUtil.writeBlockPos(p)); + compound.put("DeferredBlocks", tagDeferredBlocks); + + ListNBT tagFlyingBlocks = new ListNBT(); for (LaunchedItem b : flyingBlocks) - tagBlocks.add(b.serializeNBT()); - compound.put("FlyingBlocks", tagBlocks); + tagFlyingBlocks.add(b.serializeNBT()); + compound.put("FlyingBlocks", tagFlyingBlocks); super.write(compound, clientPacket); } @@ -388,7 +415,7 @@ public class SchematicannonTileEntity extends SmartTileEntity implements INamedC target = schematicAnchor.add(currentPos); } - boolean entityMode = printingEntityIndex >= 0; + boolean entityMode = printStage == PrintStage.ENTITIES; // Check block if (!getWorld().isAreaLoaded(target, 0)) { @@ -471,13 +498,18 @@ public class SchematicannonTileEntity extends SmartTileEntity implements INamedC launchBlock(target, icon, blockState, null); } else { CompoundNBT data = null; - if (AllBlockTags.SAFE_NBT.matches(blockState)) { - TileEntity tile = blockReader.getTileEntity(target); - if (tile != null) { + TileEntity tile = blockReader.getTileEntity(target); + if (tile != null) { + if (AllBlockTags.SAFE_NBT.matches(blockState)) { data = tile.write(new CompoundNBT()); data = NBTProcessors.process(tile, data, true); + } else if (tile instanceof IPartialSafeNBT) { + data = new CompoundNBT(); + ((IPartialSafeNBT) tile).writeSafe(data, false); + data = NBTProcessors.process(tile, data, true); } } + launchBlock(target, icon, blockState, data); } @@ -563,7 +595,9 @@ public class SchematicannonTileEntity extends SmartTileEntity implements INamedC schematicLoaded = true; state = State.PAUSED; statusMsg = "ready"; - printingEntityIndex = -1; + printingEntityIndex = 0; + printStage = PrintStage.BLOCKS; + deferredBlocks.clear(); updateChecklist(); sendUpdate = true; blocksToPlace += blocksPlaced; @@ -649,22 +683,33 @@ public class SchematicannonTileEntity extends SmartTileEntity implements INamedC protected void advanceCurrentPos() { List entities = blockReader.getEntities() .collect(Collectors.toList()); - if (printingEntityIndex != -1) { - printingEntityIndex++; - // End of entities reached - if (printingEntityIndex >= entities.size()) { - finishedPrinting(); - return; + if (printStage == PrintStage.BLOCKS) { + MutableBoundingBox bounds = blockReader.getBounds(); + while (tryAdvanceCurrentPos(bounds, entities)) { + deferredBlocks.add(currentPos); } - - currentPos = entities.get(printingEntityIndex) - .getBlockPos() - .subtract(schematicAnchor); - return; } - MutableBoundingBox bounds = blockReader.getBounds(); + if (printStage == PrintStage.DEFERRED_BLOCKS) { + if (deferredBlocks.isEmpty()) { + printStage = PrintStage.ENTITIES; + } else { + currentPos = deferredBlocks.remove(0); + } + } + + if (printStage == PrintStage.ENTITIES) { + if (printingEntityIndex < entities.size()) { + currentPos = entities.get(printingEntityIndex).getBlockPos().subtract(schematicAnchor); + printingEntityIndex++; + } else { + finishedPrinting(); + } + } + } + + protected boolean tryAdvanceCurrentPos(MutableBoundingBox bounds, List entities) { currentPos = currentPos.offset(Direction.EAST); BlockPos posInBounds = currentPos.add(-bounds.minX, -bounds.minY, -bounds.minZ); @@ -675,15 +720,16 @@ public class SchematicannonTileEntity extends SmartTileEntity implements INamedC // End of blocks reached if (currentPos.getY() > bounds.getYSize()) { - printingEntityIndex = 0; - if (entities.isEmpty()) { - finishedPrinting(); - return; - } - currentPos = entities.get(0) - .getBlockPos() - .subtract(schematicAnchor); + printStage = PrintStage.DEFERRED_BLOCKS; + return false; } + + return shouldDeferBlock(blockReader.getBlockState(schematicAnchor.add(currentPos))); + } + + public static boolean shouldDeferBlock(BlockState state) { + Block block = state.getBlock(); + return block instanceof AbstractRailBlock || block.is(AllBlocks.GANTRY_CARRIAGE.get()); } public void finishedPrinting() { @@ -705,10 +751,12 @@ public class SchematicannonTileEntity extends SmartTileEntity implements INamedC blockReader = null; missingItem = null; sendUpdate = true; - printingEntityIndex = -1; + printingEntityIndex = 0; + printStage = PrintStage.BLOCKS; schematicProgress = 0; blocksPlaced = 0; blocksToPlace = 0; + deferredBlocks.clear(); } protected boolean shouldPlace(BlockPos pos, BlockState state) { diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicEditScreen.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicEditScreen.java index aec2fc8c8..b775572c0 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicEditScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicEditScreen.java @@ -152,7 +152,7 @@ public class SchematicEditScreen extends AbstractSimiScreen { x + 93 - textRenderer.getStringWidth(handler.getCurrentSchematicName()) / 2, y + 3, 0xffffff); GuiGameElement.of(AllItems.SCHEMATIC.asStack()) - .at(guiLeft + 200, guiTop + 82, 0) + .at(guiLeft + 200, guiTop + 82, 0) .scale(3) .render(matrixStack); } diff --git a/src/main/java/com/simibubi/create/events/ClientEvents.java b/src/main/java/com/simibubi/create/events/ClientEvents.java index 4465a05e8..222dbc624 100644 --- a/src/main/java/com/simibubi/create/events/ClientEvents.java +++ b/src/main/java/com/simibubi/create/events/ClientEvents.java @@ -10,6 +10,7 @@ import com.jozufozu.flywheel.backend.core.shader.WorldProgram; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.systems.RenderSystem; import com.simibubi.create.AllFluids; +import com.simibubi.create.AllItems; import com.simibubi.create.Create; import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.KineticDebugger; @@ -26,6 +27,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.tra import com.simibubi.create.content.contraptions.components.turntable.TurntableHandler; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorHandler; +import com.simibubi.create.content.curiosities.armor.CopperBacktankArmorLayer; import com.simibubi.create.content.curiosities.tools.ExtendoGripRenderHandler; import com.simibubi.create.content.curiosities.zapper.ZapperItem; import com.simibubi.create.content.curiosities.zapper.ZapperRenderHandler; @@ -33,6 +35,8 @@ import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperR import com.simibubi.create.content.logistics.block.depot.EjectorTargetHandler; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmInteractionPointHandler; import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.config.ui.BaseConfigScreen; +import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.item.ItemDescription; import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.networking.AllPackets; @@ -53,6 +57,7 @@ import com.simibubi.create.foundation.utility.worldWrappers.WrappedClientWorld; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ActiveRenderInfo; import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.IRenderTypeBuffer.Impl; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.world.ClientWorld; import net.minecraft.fluid.Fluid; @@ -78,7 +83,11 @@ import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.ExtensionPoint; +import net.minecraftforge.fml.ModContainer; +import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import net.minecraftforge.fml.event.lifecycle.FMLLoadCompleteEvent; @EventBusSubscriber(value = Dist.CLIENT) public class ClientEvents { @@ -190,18 +199,24 @@ public class ClientEvents { ms.pop(); RenderWork.runAll(); - - //Backend.effects.render(); } @SubscribeEvent public static void onRenderOverlay(RenderGameOverlayEvent.Post event) { + MatrixStack ms = event.getMatrixStack(); + Impl buffers = Minecraft.getInstance() + .getBufferBuilders() + .getEntityVertexConsumers(); + int light = 0xF000F0; + int overlay = OverlayTexture.DEFAULT_UV; + float pt = event.getPartialTicks(); + + if (event.getType() == ElementType.AIR) + CopperBacktankArmorLayer.renderRemainingAirOverlay(ms, buffers, light, overlay, pt); if (event.getType() != ElementType.HOTBAR) return; - onRenderHotbar(event.getMatrixStack(), Minecraft.getInstance() - .getBufferBuilders() - .getEntityVertexConsumers(), 0xF000F0, OverlayTexture.DEFAULT_UV, event.getPartialTicks()); + onRenderHotbar(ms, buffers, light, overlay, pt); } public static void onRenderHotbar(MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay, @@ -274,11 +289,20 @@ public class ClientEvents { if (fluid.isEquivalentTo(AllFluids.CHOCOLATE.get())) { event.setDensity(5f); event.setCanceled(true); + return; } if (fluid.isEquivalentTo(AllFluids.HONEY.get())) { event.setDensity(1.5f); event.setCanceled(true); + return; + } + + if (FluidHelper.isWater(fluid) && AllItems.DIVING_HELMET.get() + .isWornBy(Minecraft.getInstance().renderViewEntity)) { + event.setDensity(0.010f); + event.setCanceled(true); + return; } } @@ -311,4 +335,9 @@ public class ClientEvents { } } + public static void loadCompleted(FMLLoadCompleteEvent event) { + ModContainer createContainer = ModList.get().getModContainerById("create").orElseThrow(() -> new IllegalStateException("Create Mod Container missing after loadCompleted")); + createContainer.registerExtensionPoint(ExtensionPoint.CONFIGGUIFACTORY, () -> (mc, previousScreen) -> new BaseConfigScreen(previousScreen)); + } + } diff --git a/src/main/java/com/simibubi/create/foundation/command/AllCommands.java b/src/main/java/com/simibubi/create/foundation/command/AllCommands.java index bf6883875..81b4a5f5a 100644 --- a/src/main/java/com/simibubi/create/foundation/command/AllCommands.java +++ b/src/main/java/com/simibubi/create/foundation/command/AllCommands.java @@ -21,20 +21,22 @@ public class AllCommands { LiteralCommandNode util = buildUtilityCommands(); LiteralCommandNode createRoot = dispatcher.register(Commands.literal("create") - .requires(cs -> cs.hasPermissionLevel(0)) - // general purpose - .then(new ToggleExperimentalRenderingCommand().register()) - .then(new ToggleDebugCommand().register()) - .then(FabulousWarningCommand.register()) - .then(OverlayConfigCommand.register()) - .then(FixLightingCommand.register()) - .then(HighlightCommand.register()) - .then(CouplingCommand.register()) - .then(CloneCommand.register()) - .then(PonderCommand.register()) + .requires(cs -> cs.hasPermissionLevel(0)) + // general purpose + .then(new ToggleExperimentalRenderingCommand().register()) + .then(new ToggleDebugCommand().register()) + .then(FabulousWarningCommand.register()) + .then(OverlayConfigCommand.register()) + .then(FixLightingCommand.register()) + .then(HighlightCommand.register()) + .then(CouplingCommand.register()) + .then(ConfigCommand.register()) + .then(PonderCommand.register()) + .then(CloneCommand.register()) - // utility - .then(util)); + // utility + .then(util) + ); createRoot.addChild(buildRedirect("u", util)); @@ -50,12 +52,12 @@ public class AllCommands { private static LiteralCommandNode buildUtilityCommands() { return Commands.literal("util") - .then(ReplaceInCommandBlocksCommand.register()) - .then(ClearBufferCacheCommand.register()) - .then(ChunkUtilCommand.register()) - .then(FlySpeedCommand.register()) - // .then(KillTPSCommand.register()) - .build(); + .then(ReplaceInCommandBlocksCommand.register()) + .then(ClearBufferCacheCommand.register()) + .then(ChunkUtilCommand.register()) + .then(FlySpeedCommand.register()) + //.then(KillTPSCommand.register()) + .build(); } @@ -72,15 +74,15 @@ public class AllCommands { * * @return the built node */ - public static LiteralCommandNode buildRedirect(final String alias, - final LiteralCommandNode destination) { + public static LiteralCommandNode buildRedirect(final String alias, final LiteralCommandNode destination) { // Redirects only work for nodes with children, but break the top argument-less command. // Manually adding the root command after setting the redirect doesn't fix it. // See https://github.com/Mojang/brigadier/issues/46). Manually clone the node instead. - LiteralArgumentBuilder builder = LiteralArgumentBuilder.literal(alias) - .requires(destination.getRequirement()) - .forward(destination.getRedirect(), destination.getRedirectModifier(), destination.isFork()) - .executes(destination.getCommand()); + LiteralArgumentBuilder builder = LiteralArgumentBuilder + .literal(alias) + .requires(destination.getRequirement()) + .forward(destination.getRedirect(), destination.getRedirectModifier(), destination.isFork()) + .executes(destination.getCommand()); for (CommandNode child : destination.getChildren()) { builder.then(child); } diff --git a/src/main/java/com/simibubi/create/foundation/command/ConfigCommand.java b/src/main/java/com/simibubi/create/foundation/command/ConfigCommand.java new file mode 100644 index 000000000..24a45110a --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/command/ConfigCommand.java @@ -0,0 +1,27 @@ +package com.simibubi.create.foundation.command; + +import net.minecraft.command.CommandSource; +import net.minecraft.command.Commands; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraftforge.fml.network.PacketDistributor; + +import com.mojang.brigadier.Command; +import com.mojang.brigadier.builder.ArgumentBuilder; +import com.simibubi.create.foundation.networking.AllPackets; + +public class ConfigCommand { + + public static ArgumentBuilder register() { + return Commands.literal("config") + .executes(ctx -> { + ServerPlayerEntity player = ctx.getSource().asPlayer(); + AllPackets.channel.send( + PacketDistributor.PLAYER.with(() -> player), + new SConfigureConfigPacket(SConfigureConfigPacket.Actions.configScreen.name(), "") + ); + + return Command.SINGLE_SUCCESS; + }); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/command/FabulousWarningCommand.java b/src/main/java/com/simibubi/create/foundation/command/FabulousWarningCommand.java index c2f9c5eb1..2c03d40b0 100644 --- a/src/main/java/com/simibubi/create/foundation/command/FabulousWarningCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/FabulousWarningCommand.java @@ -13,16 +13,18 @@ public class FabulousWarningCommand { public static ArgumentBuilder register() { return Commands.literal("dismissFabulousWarning") - .requires(AllCommands.sourceIsPlayer) - .executes(ctx -> { - ServerPlayerEntity player = ctx.getSource() - .asPlayer(); + .requires(AllCommands.sourceIsPlayer) + .executes(ctx -> { + ServerPlayerEntity player = ctx.getSource() + .asPlayer(); - AllPackets.channel.send(PacketDistributor.PLAYER.with(() -> player), - new ConfigureConfigPacket(ConfigureConfigPacket.Actions.fabulousWarning.name(), "")); + AllPackets.channel.send( + PacketDistributor.PLAYER.with(() -> player), + new SConfigureConfigPacket(SConfigureConfigPacket.Actions.fabulousWarning.name(), "") + ); - return Command.SINGLE_SUCCESS; - }); + return Command.SINGLE_SUCCESS; + }); } } diff --git a/src/main/java/com/simibubi/create/foundation/command/FixLightingCommand.java b/src/main/java/com/simibubi/create/foundation/command/FixLightingCommand.java index 7a128bced..4557c07ad 100644 --- a/src/main/java/com/simibubi/create/foundation/command/FixLightingCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/FixLightingCommand.java @@ -17,7 +17,7 @@ public class FixLightingCommand { .executes(ctx -> { AllPackets.channel.send(PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) ctx.getSource() .getEntity()), - new ConfigureConfigPacket(ConfigureConfigPacket.Actions.fixLighting.name(), String.valueOf(true))); + new SConfigureConfigPacket(SConfigureConfigPacket.Actions.fixLighting.name(), String.valueOf(true))); ctx.getSource() .sendFeedback( diff --git a/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java b/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java index bb17a4b02..034746d58 100644 --- a/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java @@ -15,35 +15,32 @@ public class OverlayConfigCommand { public static ArgumentBuilder register() { return Commands.literal("overlay") - .requires(cs -> cs.hasPermissionLevel(0)) - .then(Commands.literal("reset") - .executes(ctx -> { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, - () -> () -> ConfigureConfigPacket.Actions.overlayReset.performAction("")); + .requires(cs -> cs.hasPermissionLevel(0)) + .then(Commands.literal("reset") + .executes(ctx -> { + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> SConfigureConfigPacket.Actions.overlayReset.performAction("")); - DistExecutor.unsafeRunWhenOn(Dist.DEDICATED_SERVER, - () -> () -> AllPackets.channel.send( - PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) ctx.getSource() - .getEntity()), - new ConfigureConfigPacket(ConfigureConfigPacket.Actions.overlayReset.name(), ""))); + DistExecutor.unsafeRunWhenOn(Dist.DEDICATED_SERVER, () -> () -> + AllPackets.channel.send( + PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) ctx.getSource().getEntity()), + new SConfigureConfigPacket(SConfigureConfigPacket.Actions.overlayReset.name(), ""))); ctx.getSource() .sendFeedback(new StringTextComponent("reset overlay offset"), true); - return 1; - })) - .executes(ctx -> { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, - () -> () -> ConfigureConfigPacket.Actions.overlayScreen.performAction("")); + return 1; + }) + ) + .executes(ctx -> { + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> SConfigureConfigPacket.Actions.overlayScreen.performAction("")); - DistExecutor.unsafeRunWhenOn(Dist.DEDICATED_SERVER, - () -> () -> AllPackets.channel.send( - PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) ctx.getSource() - .getEntity()), - new ConfigureConfigPacket(ConfigureConfigPacket.Actions.overlayScreen.name(), ""))); + DistExecutor.unsafeRunWhenOn(Dist.DEDICATED_SERVER, () -> () -> + AllPackets.channel.send( + PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) ctx.getSource().getEntity()), + new SConfigureConfigPacket(SConfigureConfigPacket.Actions.overlayScreen.name(), ""))); - ctx.getSource() - .sendFeedback(new StringTextComponent("window opened"), true); + ctx.getSource() + .sendFeedback(new StringTextComponent("window opened"), true); return 1; }); diff --git a/src/main/java/com/simibubi/create/foundation/command/PonderCommand.java b/src/main/java/com/simibubi/create/foundation/command/PonderCommand.java index 8fe17795e..70d353a64 100644 --- a/src/main/java/com/simibubi/create/foundation/command/PonderCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/PonderCommand.java @@ -21,26 +21,20 @@ import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.fml.network.PacketDistributor; public class PonderCommand { - public static final SuggestionProvider ITEM_PONDERS = SuggestionProviders.register( - new ResourceLocation("all_ponders"), - (iSuggestionProviderCommandContext, builder) -> ISuggestionProvider.func_212476_a(PonderRegistry.all.keySet() - .stream(), builder)); + public static final SuggestionProvider ITEM_PONDERS = SuggestionProviders.register(new ResourceLocation("all_ponders"), (iSuggestionProviderCommandContext, builder) -> ISuggestionProvider.func_212476_a(PonderRegistry.all.keySet().stream(), builder)); static ArgumentBuilder register() { return Commands.literal("ponder") - .requires(cs -> cs.hasPermissionLevel(0)) - .executes(ctx -> openScene("index", ctx.getSource() - .asPlayer())) - .then(Commands.argument("scene", ResourceLocationArgument.resourceLocation()) - .suggests(ITEM_PONDERS) - .executes(ctx -> openScene(ResourceLocationArgument.getResourceLocation(ctx, "scene") - .toString(), - ctx.getSource() - .asPlayer())) - .then(Commands.argument("targets", EntityArgument.players()) - .requires(cs -> cs.hasPermissionLevel(2)) - .executes(ctx -> openScene(ResourceLocationArgument.getResourceLocation(ctx, "scene") - .toString(), EntityArgument.getPlayers(ctx, "targets"))))); + .requires(cs -> cs.hasPermissionLevel(0)) + .executes(ctx -> openScene("index", ctx.getSource().asPlayer())) + .then(Commands.argument("scene", ResourceLocationArgument.resourceLocation()) + .suggests(ITEM_PONDERS) + .executes(ctx -> openScene(ResourceLocationArgument.getResourceLocation(ctx, "scene").toString(), ctx.getSource().asPlayer())) + .then(Commands.argument("targets", EntityArgument.players()) + .requires(cs -> cs.hasPermissionLevel(2)) + .executes(ctx -> openScene(ResourceLocationArgument.getResourceLocation(ctx, "scene").toString(), EntityArgument.getPlayers(ctx, "targets"))) + ) + ); } @@ -53,8 +47,9 @@ public class PonderCommand { if (player instanceof FakePlayer) continue; - AllPackets.channel.send(PacketDistributor.PLAYER.with(() -> player), - new ConfigureConfigPacket(ConfigureConfigPacket.Actions.openPonder.name(), sceneId)); + AllPackets.channel.send( + PacketDistributor.PLAYER.with(() -> player), + new SConfigureConfigPacket(SConfigureConfigPacket.Actions.openPonder.name(), sceneId)); } return Command.SINGLE_SUCCESS; } diff --git a/src/main/java/com/simibubi/create/foundation/command/ConfigureConfigPacket.java b/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java similarity index 93% rename from src/main/java/com/simibubi/create/foundation/command/ConfigureConfigPacket.java rename to src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java index 38005dbb5..d3a2055b4 100644 --- a/src/main/java/com/simibubi/create/foundation/command/ConfigureConfigPacket.java +++ b/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java @@ -10,6 +10,7 @@ import com.jozufozu.flywheel.backend.OptifineHandler; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.goggles.GoggleConfigScreen; import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.config.ui.BaseConfigScreen; import com.simibubi.create.foundation.gui.ScreenOpener; import com.simibubi.create.foundation.networking.SimplePacketBase; import com.simibubi.create.foundation.ponder.PonderRegistry; @@ -31,17 +32,17 @@ import net.minecraftforge.common.ForgeConfig; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.network.NetworkEvent; -public class ConfigureConfigPacket extends SimplePacketBase { +public class SConfigureConfigPacket extends SimplePacketBase { private final String option; private final String value; - public ConfigureConfigPacket(String option, String value) { + public SConfigureConfigPacket(String option, String value) { this.option = option; this.value = value; } - public ConfigureConfigPacket(PacketBuffer buffer) { + public SConfigureConfigPacket(PacketBuffer buffer) { this.option = buffer.readString(32767); this.value = buffer.readString(32767); } @@ -69,7 +70,8 @@ public class ConfigureConfigPacket extends SimplePacketBase { .setPacketHandled(true); } - enum Actions { + public enum Actions { + configScreen(() -> Actions::configScreen), rainbowDebug(() -> Actions::rainbowDebug), overlayScreen(() -> Actions::overlayScreen), fixLighting(() -> Actions::experimentalLighting), @@ -91,6 +93,11 @@ public class ConfigureConfigPacket extends SimplePacketBase { .accept(value); } + @OnlyIn(Dist.CLIENT) + private static void configScreen(String value) { + ScreenOpener.open(new BaseConfigScreen(null)); + } + @OnlyIn(Dist.CLIENT) private static void rainbowDebug(String value) { ClientPlayerEntity player = Minecraft.getInstance().player; diff --git a/src/main/java/com/simibubi/create/foundation/command/ToggleDebugCommand.java b/src/main/java/com/simibubi/create/foundation/command/ToggleDebugCommand.java index 59673f15e..f5b73ecbb 100644 --- a/src/main/java/com/simibubi/create/foundation/command/ToggleDebugCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/ToggleDebugCommand.java @@ -13,7 +13,9 @@ public class ToggleDebugCommand extends ConfigureConfigCommand { @Override protected void sendPacket(ServerPlayerEntity player, String option) { - AllPackets.channel.send(PacketDistributor.PLAYER.with(() -> player), - new ConfigureConfigPacket(ConfigureConfigPacket.Actions.rainbowDebug.name(), option)); + AllPackets.channel.send( + PacketDistributor.PLAYER.with(() -> player), + new SConfigureConfigPacket(SConfigureConfigPacket.Actions.rainbowDebug.name(), option) + ); } } diff --git a/src/main/java/com/simibubi/create/foundation/command/ToggleExperimentalRenderingCommand.java b/src/main/java/com/simibubi/create/foundation/command/ToggleExperimentalRenderingCommand.java index 4c01fa62a..19c761f74 100644 --- a/src/main/java/com/simibubi/create/foundation/command/ToggleExperimentalRenderingCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/ToggleExperimentalRenderingCommand.java @@ -13,7 +13,9 @@ public class ToggleExperimentalRenderingCommand extends ConfigureConfigCommand { @Override protected void sendPacket(ServerPlayerEntity player, String option) { - AllPackets.channel.send(PacketDistributor.PLAYER.with(() -> player), - new ConfigureConfigPacket(ConfigureConfigPacket.Actions.experimentalRendering.name(), option)); + AllPackets.channel.send( + PacketDistributor.PLAYER.with(() -> player), + new SConfigureConfigPacket(SConfigureConfigPacket.Actions.experimentalRendering.name(), option) + ); } } diff --git a/src/main/java/com/simibubi/create/foundation/config/CCuriosities.java b/src/main/java/com/simibubi/create/foundation/config/CCuriosities.java index fda20ec53..2ca4dafa1 100644 --- a/src/main/java/com/simibubi/create/foundation/config/CCuriosities.java +++ b/src/main/java/com/simibubi/create/foundation/config/CCuriosities.java @@ -4,6 +4,7 @@ public class CCuriosities extends ConfigBase { public ConfigInt maxSymmetryWandRange = i(50, 10, "maxSymmetryWandRange", Comments.symmetryRange); public ConfigInt placementAssistRange = i(12, 3, "placementAssistRange", Comments.placementRange); + public ConfigInt maxAirInBacktank = i(900, 1, "maxAirInBacktank", Comments.maxAirInBacktank); // public ConfigInt zapperUndoLogLength = i(10, 0, "zapperUndoLogLength", Comments.zapperUndoLogLength); NYI @Override @@ -13,6 +14,8 @@ public class CCuriosities extends ConfigBase { private static class Comments { static String symmetryRange = "The Maximum Distance to an active mirror for the symmetry wand to trigger."; + static String maxAirInBacktank = + "The Maximum volume of Air that can be stored in a backtank = Seconds of underwater breathing"; static String placementRange = "The Maximum Distance a Block placed by Create's placement assist will have to its interaction point."; // static String zapperUndoLogLength = "The maximum amount of operations, a blockzapper can remember for undoing. (0 to disable undo)"; diff --git a/src/main/java/com/simibubi/create/foundation/config/ConfigBase.java b/src/main/java/com/simibubi/create/foundation/config/ConfigBase.java index 213f8ff51..0dadcfc41 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ConfigBase.java +++ b/src/main/java/com/simibubi/create/foundation/config/ConfigBase.java @@ -107,8 +107,7 @@ public abstract class ConfigBase { if (comment.length > 0) { String[] comments = new String[comment.length + 1]; comments[0] = ""; - for (int i = 0; i < comment.length; i++) - comments[i + 1] = comment[i]; + System.arraycopy(comment, 0, comments, 1, comment.length); builder.comment(comments); } else builder.comment(""); diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/BaseConfigScreen.java b/src/main/java/com/simibubi/create/foundation/config/ui/BaseConfigScreen.java new file mode 100644 index 000000000..915abcb38 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/config/ui/BaseConfigScreen.java @@ -0,0 +1,59 @@ +package com.simibubi.create.foundation.config.ui; + +import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.gui.ScreenOpener; +import com.simibubi.create.foundation.gui.TextStencilElement; +import com.simibubi.create.foundation.gui.Theme; +import com.simibubi.create.foundation.gui.UIRenderHelper; +import com.simibubi.create.foundation.gui.widgets.BoxWidget; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.TextFormatting; +import net.minecraftforge.fml.config.ModConfig; + +public class BaseConfigScreen extends ConfigScreen { + + BoxWidget clientConfigWidget; + BoxWidget commonConfigWidget; + BoxWidget serverConfigWidget; + + public BaseConfigScreen(Screen parent) { + super(parent); + } + + @Override + protected void init() { + widgets.clear(); + super.init(); + + TextStencilElement text = new TextStencilElement(client.fontRenderer, new StringTextComponent("Client Settings").formatted(TextFormatting.BOLD)).centered(true, true); + widgets.add(clientConfigWidget = new BoxWidget(width / 2 - 100, height / 2 - 15 - 30, 200, 16) + .showingElement(text) + .withCallback(() -> ScreenOpener.open(new SubMenuConfigScreen(this, ModConfig.Type.CLIENT, AllConfigs.CLIENT.specification))) + ); + text.withElementRenderer(BoxWidget.gradientFactory.apply(clientConfigWidget)); + + TextStencilElement text2 = new TextStencilElement(client.fontRenderer, new StringTextComponent("World Generation Settings").formatted(TextFormatting.BOLD)).centered(true, true); + widgets.add(commonConfigWidget = new BoxWidget(width / 2 - 100, height / 2 - 15, 200, 16) + .showingElement(text2) + .withCallback(() -> ScreenOpener.open(new SubMenuConfigScreen(this, ModConfig.Type.COMMON, AllConfigs.COMMON.specification))) + ); + text2.withElementRenderer(BoxWidget.gradientFactory.apply(commonConfigWidget)); + + TextStencilElement text3 = new TextStencilElement(client.fontRenderer, new StringTextComponent("Gameplay Settings").formatted(TextFormatting.BOLD)).centered(true, true); + widgets.add(serverConfigWidget = new BoxWidget(width / 2 - 100, height / 2 - 15 + 30, 200, 16) + .showingElement(text3) + ); + + if (Minecraft.getInstance().world != null) { + serverConfigWidget.withCallback(() -> ScreenOpener.open(new SubMenuConfigScreen(this, ModConfig.Type.SERVER, AllConfigs.SERVER.specification))); + text3.withElementRenderer(BoxWidget.gradientFactory.apply(serverConfigWidget)); + } else { + serverConfigWidget.active = false; + serverConfigWidget.updateColorsFromState(); + text3.withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0, 0, height / 2, height, width, Theme.i(Theme.Key.BUTTON_DISABLE, true), Theme.i(Theme.Key.BUTTON_DISABLE, false) | 0x40_000000)); + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/CConfigureConfigPacket.java b/src/main/java/com/simibubi/create/foundation/config/ui/CConfigureConfigPacket.java new file mode 100644 index 000000000..c1a475d29 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/config/ui/CConfigureConfigPacket.java @@ -0,0 +1,83 @@ +package com.simibubi.create.foundation.config.ui; + +import java.util.function.Supplier; + +import com.simibubi.create.foundation.command.SConfigureConfigPacket; +import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.networking.SimplePacketBase; + +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.network.PacketBuffer; +import net.minecraftforge.common.ForgeConfigSpec; +import net.minecraftforge.fml.network.NetworkEvent; +import net.minecraftforge.fml.network.PacketDistributor; + +public class CConfigureConfigPacket extends SimplePacketBase { + + private String path; + private String value; + + public CConfigureConfigPacket(String path, T value) { + this.path = path; + this.value = serialize(value); + } + + public CConfigureConfigPacket(PacketBuffer buffer) { + this.path = buffer.readString(32767); + this.value = buffer.readString(32767); + } + + @Override + public void write(PacketBuffer buffer) { + buffer.writeString(path); + buffer.writeString(value); + } + + @Override + public void handle(Supplier context) { + ServerPlayerEntity sender = context.get().getSender(); + if (sender == null || !sender.hasPermissionLevel(2)) + return; + + ForgeConfigSpec.ValueSpec valueSpec = AllConfigs.SERVER.specification.getRaw(path); + ForgeConfigSpec.ConfigValue configValue = AllConfigs.SERVER.specification.getValues().get(path); + + T v = (T) deserialize(configValue.get(), value); + if (!valueSpec.test(v)) + return; + + configValue.set(v); + + } + + public String serialize(T value) { + if (value instanceof Boolean) + return Boolean.toString((Boolean) value); + if (value instanceof Enum) + return ((Enum) value).name(); + if (value instanceof Integer) + return Integer.toString((Integer) value); + if (value instanceof Float) + return Float.toString((Float) value); + if (value instanceof Double) + return Double.toString((Double) value); + + throw new IllegalArgumentException("unknown type " + value + ": " + value.getClass().getSimpleName()); + } + + public Object deserialize(Object type, String sValue) { + if (type instanceof Boolean) + return Boolean.parseBoolean(sValue); + if (type instanceof Enum) + return Enum.valueOf(((Enum) type).getClass(), sValue); + if (type instanceof Integer) + return Integer.parseInt(sValue); + if (type instanceof Float) + return Float.parseFloat(sValue); + if (type instanceof Double) + return Double.parseDouble(sValue); + + throw new IllegalArgumentException("unknown type " + type + ": " + type.getClass().getSimpleName()); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreen.java b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreen.java new file mode 100644 index 000000000..98086a786 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreen.java @@ -0,0 +1,113 @@ +package com.simibubi.create.foundation.config.ui; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + +import javax.annotation.Nonnull; + +import org.apache.commons.lang3.StringUtils; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock; +import com.simibubi.create.foundation.gui.AbstractSimiScreen; +import com.simibubi.create.foundation.gui.GuiGameElement; +import com.simibubi.create.foundation.gui.StencilElement; +import com.simibubi.create.foundation.utility.animation.Force; +import com.simibubi.create.foundation.utility.animation.PhysicalFloat; + +import net.minecraft.block.BlockState; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.util.Direction; + +public abstract class ConfigScreen extends AbstractSimiScreen { + + /* + * + * zelo's list for configUI + * + * reduce number of packets sent to the server when saving a bunch of values + * maybe replace java's awt color with something mutable + * find out why framebuffer blending is incorrect + * + * FIXME + * + * tooltips are hidden underneath the scrollbar, if the bar is near the middle + * + * */ + + public static final PhysicalFloat cogSpin = PhysicalFloat.create().withDrag(0.3).addForce(new Force.Static(.2f)); + public static final BlockState cogwheelState = AllBlocks.LARGE_COGWHEEL.getDefaultState().with(CogWheelBlock.AXIS, Direction.Axis.Y); + public static final Map changes = new HashMap<>(); + protected final Screen parent; + + public ConfigScreen(Screen parent) { + this.parent = parent; + } + + @Override + public void tick() { + super.tick(); + cogSpin.tick(); + } + + @Override + public void renderBackground(@Nonnull MatrixStack ms) { + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.GuiScreenEvent.BackgroundDrawnEvent(this, ms)); + } + + @Override + protected void renderWindowBackground(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + if (this.client != null && this.client.world != null) { + fill(ms, 0, 0, this.width, this.height, 0xb0_282c34); + } else { + fill(ms, 0, 0, this.width, this.height, 0xff_282c34); + } + + new StencilElement() { + @Override + protected void renderStencil(MatrixStack ms) { + renderCog(ms, partialTicks); + } + + @Override + protected void renderElement(MatrixStack ms) { + fill(ms, -200, -200, 200, 200, 0x60_000000); + } + }.at(width * 0.5f, height * 0.5f, 0).render(ms); + + super.renderWindowBackground(ms, mouseX, mouseY, partialTicks); + + } + + @Override + protected void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks) {} + + @Override + public boolean mouseScrolled(double mouseX, double mouseY, double delta) { + cogSpin.bump(3, -delta * 5); + + return super.mouseScrolled(mouseX, mouseY, delta); + } + + public static String toHumanReadable(String key) { + String s = key.replaceAll("_", " "); + s = Arrays.stream(StringUtils.splitByCharacterTypeCamelCase(s)).map(StringUtils::capitalize).collect(Collectors.joining(" ")); + s = s.replaceAll("\\s\\s+", " "); + return s; + } + + protected void renderCog(MatrixStack ms, float partialTicks) { + ms.push(); + + ms.translate(-100, 100, -100); + ms.scale(200, 200, 1); + GuiGameElement.of(cogwheelState) + .rotateBlock(22.5, cogSpin.getValue(partialTicks), 22.5) + .render(ms); + + ms.pop(); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreenList.java b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreenList.java new file mode 100644 index 000000000..a0d23b7a1 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreenList.java @@ -0,0 +1,176 @@ +package com.simibubi.create.foundation.config.ui; + +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.opengl.GL11; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.systems.RenderSystem; +import com.simibubi.create.foundation.config.ui.entries.NumberEntry; +import com.simibubi.create.foundation.gui.TextStencilElement; +import com.simibubi.create.foundation.gui.Theme; +import com.simibubi.create.foundation.gui.UIRenderHelper; + +import net.minecraft.client.MainWindow; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.IGuiEventListener; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.widget.TextFieldWidget; +import net.minecraft.client.gui.widget.list.ExtendedList; +import net.minecraft.util.text.IFormattableTextComponent; +import net.minecraft.util.text.ITextComponent; +import net.minecraftforge.fml.client.gui.GuiUtils; + +public class ConfigScreenList extends ExtendedList { + + public static TextFieldWidget currentText; + + public boolean isForServer = false; + + public ConfigScreenList(Minecraft client, int width, int height, int top, int bottom, int elementHeight) { + super(client, width, height, top, bottom, elementHeight); + func_244605_b(false); + func_244606_c(false); + setRenderSelection(false); + currentText = null; + headerHeight = 3; + } + + @Override + public void render(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + UIRenderHelper.angledGradient(ms, 90, left + width / 2, top, width, 5, 0x60_000000, 0x0); + UIRenderHelper.angledGradient(ms, -90, left + width / 2, bottom, width, 5, 0x60_000000, 0x0); + UIRenderHelper.angledGradient(ms, 0, left, top + height / 2, height, 5, 0x60_000000, 0x0); + UIRenderHelper.angledGradient(ms, 180, right, top + height / 2, height, 5, 0x60_000000, 0x0); + + super.render(ms, mouseX, mouseY, partialTicks); + } + + @Override + protected void renderList(MatrixStack p_238478_1_, int p_238478_2_, int p_238478_3_, int p_238478_4_, int p_238478_5_, float p_238478_6_) { + MainWindow window = Minecraft.getInstance().getWindow(); + double d0 = window.getGuiScaleFactor(); + RenderSystem.enableScissor((int) (this.left * d0), (int) (window.getFramebufferHeight() - (this.bottom * d0)), (int) (this.width * d0), (int) (this.height * d0)); + super.renderList(p_238478_1_, p_238478_2_, p_238478_3_, p_238478_4_, p_238478_5_, p_238478_6_); + RenderSystem.disableScissor(); + } + + @Override + public boolean mouseClicked(double x, double y, int button) { + children().stream().filter(e -> e instanceof NumberEntry).forEach(e -> e.mouseClicked(x, y, button)); + + return super.mouseClicked(x, y, button); + } + + @Override + public int getRowWidth() { + return width - 16; + } + + @Override + protected int getScrollbarPositionX() { + return left + this.width - 6; + } + + public void tick() { + for(int i = 0; i < getItemCount(); ++i) { + int top = this.getRowTop(i); + int bot = top + itemHeight; + if (bot >= this.top && top <= this.bottom) + this.getEntry(i).tick(); + } + + } + + public void bumpCog(float force) { + ConfigScreen.cogSpin.bump(3, force); + } + + public static abstract class Entry extends ExtendedList.AbstractListEntry { + protected List listeners; + + protected Entry() { + listeners = new ArrayList<>(); + } + + @Override + public boolean mouseClicked(double x, double y, int button) { + return getGuiListeners().stream().anyMatch(l -> l.mouseClicked(x, y, button)); + } + + @Override + public boolean keyPressed(int code, int keyPressed_2_, int keyPressed_3_) { + return getGuiListeners().stream().anyMatch(l -> l.keyPressed(code, keyPressed_2_, keyPressed_3_)); + } + + @Override + public boolean charTyped(char ch, int code) { + return getGuiListeners().stream().anyMatch(l -> l.charTyped(ch, code)); + } + + public void tick() {} + + public List getGuiListeners() { + return listeners; + } + + protected void setEditable(boolean b) {} + } + + public static class LabeledEntry extends Entry { + + protected static final float labelWidthMult = 0.4f; + + protected TextStencilElement label; + protected List labelTooltip; + protected String unit = null; + + public LabeledEntry(String label) { + this.label = new TextStencilElement(Minecraft.getInstance().fontRenderer, label); + this.label.withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0, 0, height / 2, height, width, Theme.p(Theme.Key.TEXT_ACCENT_STRONG))); + labelTooltip = new ArrayList<>(); + } + + @Override + public void render(MatrixStack ms, int index, int y, int x, int width, int height, int mouseX, int mouseY, boolean p_230432_9_, float partialTicks) { + UIRenderHelper.streak(ms, 0, x, y + height / 2, height - 6, width, 0xdd_000000); + IFormattableTextComponent component = label.getComponent(); + FontRenderer font = Minecraft.getInstance().fontRenderer; + if (font.getWidth(component) > getLabelWidth(width) - 10) { + label.withText(font.trimToWidth(component, getLabelWidth(width) - 15).getString() + "..."); + } + if (unit != null) { + int unitWidth = font.getStringWidth(unit); + font.draw(ms, unit, x + getLabelWidth(width) - unitWidth - 5, y + height / 2 + 2, Theme.i(Theme.Key.TEXT_DARKER)); + label.at(x + 10, y + height / 2 - 10, 0).render(ms); + } else { + label.at(x + 10, y + height / 2 - 4, 0).render(ms); + } + + + if (mouseX > x && mouseX < x + getLabelWidth(width) && mouseY > y + 5 && mouseY < y + height - 5) { + List tooltip = getLabelTooltip(); + if (tooltip.isEmpty()) + return; + + GL11.glDisable(GL11.GL_SCISSOR_TEST); + Screen screen = Minecraft.getInstance().currentScreen; + ms.push(); + ms.translate(0, 0, 400); + GuiUtils.drawHoveringText(ms, tooltip, mouseX, mouseY, screen.width, screen.height, 300, font); + ms.pop(); + GL11.glEnable(GL11.GL_SCISSOR_TEST); + } + } + + public List getLabelTooltip() { + return labelTooltip; + } + + protected int getLabelWidth(int totalWidth) { + return totalWidth; + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigTextField.java b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigTextField.java new file mode 100644 index 000000000..efa5d886d --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigTextField.java @@ -0,0 +1,34 @@ +package com.simibubi.create.foundation.config.ui; + +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.widget.TextFieldWidget; +import net.minecraft.util.text.StringTextComponent; + +public class ConfigTextField extends TextFieldWidget { + + protected FontRenderer font; + protected String unit; + + public ConfigTextField(FontRenderer font, int x, int y, int width, int height, String unit) { + super(font, x, y, width, height, StringTextComponent.EMPTY); + this.font = font; + this.unit = unit; + } + + @Override + public void setFocused2(boolean focus) { + super.setFocused2(focus); + + if (!focus) { + if (ConfigScreenList.currentText == this) + ConfigScreenList.currentText = null; + + return; + } + + if (ConfigScreenList.currentText != null && ConfigScreenList.currentText != this) + ConfigScreenList.currentText.setFocused2(false); + + ConfigScreenList.currentText = this; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/SubMenuConfigScreen.java b/src/main/java/com/simibubi/create/foundation/config/ui/SubMenuConfigScreen.java new file mode 100644 index 000000000..e27502281 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/config/ui/SubMenuConfigScreen.java @@ -0,0 +1,345 @@ +package com.simibubi.create.foundation.config.ui; + +import java.awt.Color; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +import org.lwjgl.glfw.GLFW; + +import com.electronwill.nightconfig.core.AbstractConfig; +import com.electronwill.nightconfig.core.UnmodifiableConfig; +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.config.ui.entries.BooleanEntry; +import com.simibubi.create.foundation.config.ui.entries.EnumEntry; +import com.simibubi.create.foundation.config.ui.entries.NumberEntry; +import com.simibubi.create.foundation.config.ui.entries.SubMenuEntry; +import com.simibubi.create.foundation.config.ui.entries.ValueEntry; +import com.simibubi.create.foundation.gui.AllIcons; +import com.simibubi.create.foundation.gui.ConfirmationScreen; +import com.simibubi.create.foundation.gui.DelegatedStencilElement; +import com.simibubi.create.foundation.gui.ScreenOpener; +import com.simibubi.create.foundation.gui.Theme; +import com.simibubi.create.foundation.gui.UIRenderHelper; +import com.simibubi.create.foundation.gui.widgets.BoxWidget; +import com.simibubi.create.foundation.item.TooltipHelper; +import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Couple; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.IGuiEventListener; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.util.text.ITextProperties; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.TextFormatting; +import net.minecraftforge.common.ForgeConfigSpec; +import net.minecraftforge.fml.config.ModConfig; + +public class SubMenuConfigScreen extends ConfigScreen { + + public final ModConfig.Type type; + protected ForgeConfigSpec spec; + protected UnmodifiableConfig configGroup; + protected ConfigScreenList list; + + protected BoxWidget resetAll; + protected BoxWidget saveChanges; + protected BoxWidget discardChanges; + protected BoxWidget goBack; + protected BoxWidget serverLocked; + protected int listWidth; + protected String title; + + + public SubMenuConfigScreen(Screen parent, String title, ModConfig.Type type, ForgeConfigSpec configSpec, UnmodifiableConfig configGroup) { + super(parent); + this.type = type; + this.spec = configSpec; + this.title = title; + this.configGroup = configGroup; + } + + public SubMenuConfigScreen(Screen parent, ModConfig.Type type, ForgeConfigSpec configSpec) { + super(parent); + this.type = type; + this.spec = configSpec; + this.title = "root"; + this.configGroup = configSpec.getValues(); + } + + protected void clearChanges() { + changes.clear(); + list.children() + .stream() + .filter(e -> e instanceof ValueEntry) + .forEach(e -> ((ValueEntry) e).onValueChange()); + } + + protected void saveChanges() { + UnmodifiableConfig values = spec.getValues(); + changes.forEach((path, value) -> { + ForgeConfigSpec.ConfigValue configValue = values.get(path); + configValue.set(value); + if (type == ModConfig.Type.SERVER) { + AllPackets.channel.sendToServer(new CConfigureConfigPacket<>(path, value)); + } + }); + clearChanges(); + } + + protected void resetConfig(UnmodifiableConfig values) { + values.valueMap().forEach((key, obj) -> { + if (obj instanceof AbstractConfig) { + resetConfig((UnmodifiableConfig) obj); + } else if (obj instanceof ForgeConfigSpec.ConfigValue) { + ForgeConfigSpec.ConfigValue configValue = (ForgeConfigSpec.ConfigValue) obj; + ForgeConfigSpec.ValueSpec valueSpec = spec.getRaw(configValue.getPath()); + + if (!configValue.get().equals(valueSpec.getDefault())) + changes.put(String.join(".", configValue.getPath()), valueSpec.getDefault()); + } + }); + + list.children() + .stream() + .filter(e -> e instanceof ValueEntry) + .forEach(e -> ((ValueEntry) e).onValueChange()); + } + + @Override + public void tick() { + super.tick(); + list.tick(); + } + + @Override + protected void init() { + widgets.clear(); + super.init(); + + listWidth = Math.min(width - 80, 300); + + int yCenter = height / 2; + int listL = this.width / 2 - listWidth / 2; + int listR = this.width / 2 + listWidth / 2; + + resetAll = new BoxWidget(listR + 10, yCenter - 25, 20, 20) + .withPadding(2, 2) + .withCallback((x, y) -> + new ConfirmationScreen() + .at(x, y) + .withText(ITextProperties.plain("You are about to reset all settings for the " + type.toString() + " config. Are you sure?")) + .withAction(success -> { + if (success) + resetConfig(spec.getValues()); + }) + .open(this) + ); + + resetAll.showingElement(AllIcons.I_CONFIG_RESET.asStencil().withElementRenderer(BoxWidget.gradientFactory.apply(resetAll))); + resetAll.getToolTip().add(new StringTextComponent("Reset All")); + resetAll.getToolTip().addAll(TooltipHelper.cutStringTextComponent("Click here to reset all configs to their default value.", TextFormatting.GRAY, TextFormatting.GRAY)); + + saveChanges = new BoxWidget(listL - 30, yCenter - 25, 20, 20) + .withPadding(2, 2) + .withCallback((x, y) -> { + if (changes.isEmpty()) + return; + + new ConfirmationScreen() + .at(x, y) + .withText(ITextProperties.plain("You are about to change " + changes.size() + " value" + (changes.size() != 1 ? "s" : "") + ". Are you sure?")) + .withAction(success -> { + if (success) + saveChanges(); + }) + .open(this); + }); + saveChanges.showingElement(AllIcons.I_CONFIG_SAVE.asStencil().withElementRenderer(BoxWidget.gradientFactory.apply(saveChanges))); + saveChanges.getToolTip().add(new StringTextComponent("Save Changes")); + saveChanges.getToolTip().addAll(TooltipHelper.cutStringTextComponent("Click here to save your current changes.", TextFormatting.GRAY, TextFormatting.GRAY)); + + discardChanges = new BoxWidget(listL - 30, yCenter + 5, 20, 20) + .withPadding(2, 2) + .withCallback((x, y) -> { + if (changes.isEmpty()) + return; + + new ConfirmationScreen() + .at(x, y) + .withText(ITextProperties.plain("You are about to discard " + changes.size() + " unsaved change" + (changes.size() != 1 ? "s" : "") + ". Are you sure?")) + .withAction(success -> { + if (success) + clearChanges(); + }) + .open(this); + }); + discardChanges.showingElement(AllIcons.I_CONFIG_DISCARD.asStencil().withElementRenderer(BoxWidget.gradientFactory.apply(discardChanges))); + discardChanges.getToolTip().add(new StringTextComponent("Discard Changes")); + discardChanges.getToolTip().addAll(TooltipHelper.cutStringTextComponent("Click here to discard all the changes you made.", TextFormatting.GRAY, TextFormatting.GRAY)); + + goBack = new BoxWidget(listL - 30, yCenter + 65, 20, 20) + .withPadding(2, 2) + .withCallback(this::attemptBackstep); + goBack.showingElement(AllIcons.I_CONFIG_BACK.asStencil().withElementRenderer(BoxWidget.gradientFactory.apply(goBack))); + goBack.getToolTip().add(new StringTextComponent("Go Back")); + + widgets.add(resetAll); + widgets.add(saveChanges); + widgets.add(discardChanges); + widgets.add(goBack); + + list = new ConfigScreenList(client, listWidth, height - 60, 45, height - 15, 40); + list.setLeftPos(this.width / 2 - list.getWidth() / 2); + + children.add(list); + + configGroup.valueMap().forEach((key, obj) -> { + String humanKey = toHumanReadable(key); + + if (obj instanceof AbstractConfig) { + SubMenuEntry entry = new SubMenuEntry(this, humanKey, spec, (UnmodifiableConfig) obj); + list.children().add(entry); + + } else if (obj instanceof ForgeConfigSpec.ConfigValue) { + ForgeConfigSpec.ConfigValue configValue = (ForgeConfigSpec.ConfigValue) obj; + ForgeConfigSpec.ValueSpec valueSpec = spec.getRaw(configValue.getPath()); + Object value = configValue.get(); + + if (value instanceof Boolean) { + BooleanEntry entry = new BooleanEntry(humanKey, (ForgeConfigSpec.ConfigValue) configValue, valueSpec); + list.children().add(entry); + } else if (value instanceof Enum) { + EnumEntry entry = new EnumEntry(humanKey, (ForgeConfigSpec.ConfigValue>) configValue, valueSpec); + list.children().add(entry); + } else if (value instanceof Number) { + NumberEntry entry = NumberEntry.create(value, humanKey, configValue, valueSpec); + if (entry != null) { + list.children().add(entry); + } else { + list.children().add(new ConfigScreenList.LabeledEntry("n-" + obj.getClass().getSimpleName() + " " + humanKey + " : " + value)); + } + } else { + list.children().add(new ConfigScreenList.LabeledEntry(humanKey + " : " + value)); + } + } + }); + + //extras for server configs + if (type != ModConfig.Type.SERVER) + return; + + list.isForServer = true; + boolean canEdit = client != null && client.player != null && client.player.hasPermissionLevel(2); + + Couple red = Theme.p(Theme.Key.BUTTON_FAIL); + Couple green = Theme.p(Theme.Key.BUTTON_SUCCESS); + + DelegatedStencilElement stencil = new DelegatedStencilElement(); + + serverLocked = new BoxWidget(listR + 10, yCenter + 5, 20, 20) + .withPadding(2, 2) + .showingElement(stencil); + + if (!canEdit) { + list.children().forEach(e -> e.setEditable(false)); + resetAll.active = false; + stencil.withStencilRenderer((ms, w, h, alpha) -> AllIcons.I_CONFIG_LOCKED.draw(ms, 0, 0)); + stencil.withElementRenderer((ms, w, h, alpha) -> UIRenderHelper.angledGradient(ms, 90, 8, 0, 16, 16, red)); + serverLocked.withBorderColors(red); + serverLocked.getToolTip().add(new StringTextComponent("Locked").formatted(TextFormatting.BOLD)); + serverLocked.getToolTip().addAll(TooltipHelper.cutStringTextComponent("You don't have enough permissions to edit the server config. You can still look at the current values here though.", TextFormatting.GRAY, TextFormatting.GRAY)); + } else { + stencil.withStencilRenderer((ms, w, h, alpha) -> AllIcons.I_CONFIG_UNLOCKED.draw(ms, 0, 0)); + stencil.withElementRenderer((ms, w, h, alpha) -> UIRenderHelper.angledGradient(ms, 90, 8, 0, 16, 16, green)); + serverLocked.withBorderColors(green); + serverLocked.getToolTip().add(new StringTextComponent("Unlocked").formatted(TextFormatting.BOLD)); + serverLocked.getToolTip().addAll(TooltipHelper.cutStringTextComponent("You have enough permissions to edit the server config. Changes you make here will be synced with the server when you save them.", TextFormatting.GRAY, TextFormatting.GRAY)); + } + + widgets.add(serverLocked); + } + + @Override + protected void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + super.renderWindow(ms, mouseX, mouseY, partialTicks); + + int x = width/2; + drawCenteredString(ms, client.fontRenderer, "Editing config: " + type.toString() + "@" + title, x, 15, Theme.i(Theme.Key.TEXT)); + + list.render(ms, mouseX, mouseY, partialTicks); + } + + @Override + protected void renderWindowForeground(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + super.renderWindowForeground(ms, mouseX, mouseY, partialTicks); + } + + @Override + public void resize(@Nonnull Minecraft client, int width, int height) { + double scroll = list.getScrollAmount(); + init(client, width, height); + list.setScrollAmount(scroll); + } + + @Nullable + @Override + public IGuiEventListener getFocused() { + if (ConfigScreenList.currentText != null) + return ConfigScreenList.currentText; + + return super.getFocused(); + } + + @Override + public boolean keyPressed(int code, int p_keyPressed_2_, int p_keyPressed_3_) { + if (super.keyPressed(code, p_keyPressed_2_, p_keyPressed_3_)) + return true; + + if (code == GLFW.GLFW_KEY_BACKSPACE) { + attemptBackstep(); + } + + return false; + } + + private void attemptBackstep() { + if (!changes.isEmpty() && parent instanceof BaseConfigScreen) { + new ConfirmationScreen() + .centered() + .addText(ITextProperties.plain("You still have " + changes.size() + " unsaved change" + (changes.size() != 1 ? "s" : "") + " for this config.")) + .addText(ITextProperties.plain("Leaving this screen will discard them without saving. Are you sure?")) + .withAction(success -> { + if (!success) + return; + + changes.clear(); + ScreenOpener.open(parent); + }) + .open(this); + } else { + ScreenOpener.open(parent); + } + } + + @Override + public void onClose() { + if (changes.isEmpty()) { + super.onClose(); + return; + } + + new ConfirmationScreen() + .centered() + .addText(ITextProperties.plain("You still have " + changes.size() + " unsaved change" + (changes.size() != 1 ? "s" : "") + " for this config.")) + .addText(ITextProperties.plain("Leaving this screen will discard them without saving. Are you sure?")) + .withAction(success -> { + if (!success) + return; + + changes.clear(); + super.onClose(); + }) + .open(this); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/entries/BooleanEntry.java b/src/main/java/com/simibubi/create/foundation/config/ui/entries/BooleanEntry.java new file mode 100644 index 000000000..8cab0fe64 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/config/ui/entries/BooleanEntry.java @@ -0,0 +1,66 @@ +package com.simibubi.create.foundation.config.ui.entries; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.gui.AllIcons; +import com.simibubi.create.foundation.gui.RenderElement; +import com.simibubi.create.foundation.gui.Theme; +import com.simibubi.create.foundation.gui.UIRenderHelper; +import com.simibubi.create.foundation.gui.widgets.BoxWidget; + +import net.minecraftforge.common.ForgeConfigSpec; + +public class BooleanEntry extends ValueEntry { + + RenderElement enabled; + RenderElement disabled; + BoxWidget button; + + public BooleanEntry(String label, ForgeConfigSpec.ConfigValue value, ForgeConfigSpec.ValueSpec spec) { + super(label, value, spec); + + enabled = AllIcons.I_CONFIRM.asStencil() + .withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0, 0, height / 2, height, width, Theme.p(Theme.Key.BUTTON_SUCCESS))) + .at(10, 0); + + disabled = AllIcons.I_DISABLE.asStencil() + .withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0, 0, height / 2, height, width, Theme.p(Theme.Key.BUTTON_FAIL))) + .at(10, 0); + + button = new BoxWidget().showingElement(enabled) + .withCallback(() -> setValue(!getValue())); + + listeners.add(button); + onReset(); + } + + @Override + protected void setEditable(boolean b) { + super.setEditable(b); + button.active = b; + } + + @Override + public void tick() { + super.tick(); + button.tick(); + } + + @Override + public void render(MatrixStack ms, int index, int y, int x, int width, int height, int mouseX, int mouseY, + boolean p_230432_9_, float partialTicks) { + super.render(ms, index, y, x, width, height, mouseX, mouseY, p_230432_9_, partialTicks); + + button.x = x + width - 80 - resetWidth; + button.y = y + 10; + button.setWidth(35); + button.setHeight(height - 20); + button.render(ms, mouseX, mouseY, partialTicks); + } + + @Override + public void onValueChange(Boolean newValue) { + super.onValueChange(newValue); + button.showingElement(newValue ? enabled : disabled); + bumpCog(newValue ? 15f : -16f); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/entries/EnumEntry.java b/src/main/java/com/simibubi/create/foundation/config/ui/entries/EnumEntry.java new file mode 100644 index 000000000..08d7e8288 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/config/ui/entries/EnumEntry.java @@ -0,0 +1,102 @@ +package com.simibubi.create.foundation.config.ui.entries; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.gui.AllIcons; +import com.simibubi.create.foundation.gui.BoxElement; +import com.simibubi.create.foundation.gui.DelegatedStencilElement; +import com.simibubi.create.foundation.gui.TextStencilElement; +import com.simibubi.create.foundation.gui.Theme; +import com.simibubi.create.foundation.gui.UIRenderHelper; +import com.simibubi.create.foundation.gui.widgets.BoxWidget; + +import net.minecraft.client.Minecraft; +import net.minecraftforge.common.ForgeConfigSpec; + +public class EnumEntry extends ValueEntry> { + + protected static final int cycleWidth = 34; + + protected TextStencilElement valueText; + protected BoxWidget cycleLeft; + protected BoxWidget cycleRight; + + public EnumEntry(String label, ForgeConfigSpec.ConfigValue> value, ForgeConfigSpec.ValueSpec spec) { + super(label, value, spec); + + valueText = new TextStencilElement(Minecraft.getInstance().fontRenderer, "YEP").centered(true, true); + valueText.withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0, 0, height / 2, + height, width, Theme.p(Theme.Key.TEXT))); + + DelegatedStencilElement l = AllIcons.I_CONFIG_PREV.asStencil(); + cycleLeft = new BoxWidget(0, 0, cycleWidth + 8, 16).showingElement(l) + .withCallback(() -> cycleValue(-1)); + l.withElementRenderer(BoxWidget.gradientFactory.apply(cycleLeft)); + + DelegatedStencilElement r = AllIcons.I_CONFIG_NEXT.asStencil(); + cycleRight = new BoxWidget(0, 0, cycleWidth + 8, 16).showingElement(r) + .withCallback(() -> cycleValue(1)); + r.at(cycleWidth - 8, 0); + r.withElementRenderer(BoxWidget.gradientFactory.apply(cycleRight)); + + listeners.add(cycleLeft); + listeners.add(cycleRight); + + onReset(); + } + + protected void cycleValue(int direction) { + Enum e = getValue(); + Enum[] options = e.getDeclaringClass() + .getEnumConstants(); + e = options[Math.floorMod(e.ordinal() + direction, options.length)]; + setValue(e); + bumpCog(direction * 15f); + } + + @Override + protected void setEditable(boolean b) { + super.setEditable(b); + cycleLeft.active = b; + cycleLeft.animateGradientFromState(); + cycleRight.active = b; + cycleRight.animateGradientFromState(); + } + + @Override + public void tick() { + super.tick(); + cycleLeft.tick(); + cycleRight.tick(); + } + + @Override + public void render(MatrixStack ms, int index, int y, int x, int width, int height, int mouseX, int mouseY, + boolean p_230432_9_, float partialTicks) { + super.render(ms, index, y, x, width, height, mouseX, mouseY, p_230432_9_, partialTicks); + + cycleLeft.x = x + getLabelWidth(width) + 4; + cycleLeft.y = y + 10; + cycleLeft.render(ms, mouseX, mouseY, partialTicks); + + valueText.at(cycleLeft.x + cycleWidth - 8, y + 11, 200) + .withBounds(width - getLabelWidth(width) - 2 * cycleWidth - resetWidth - 4, 16) + .render(ms); + + cycleRight.x = x + width - cycleWidth * 2 - resetWidth + 10; + cycleRight.y = y + 10; + cycleRight.render(ms, mouseX, mouseY, partialTicks); + + new BoxElement() + .withBackground(0) + .flatBorder(0) + .withBounds(10, 10) + .at(cycleLeft.x + cycleWidth + 4, cycleLeft.y + 3) + .render(ms); + } + + @Override + public void onValueChange(Enum newValue) { + super.onValueChange(newValue); + valueText.withText(newValue.name()); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/entries/NumberEntry.java b/src/main/java/com/simibubi/create/foundation/config/ui/entries/NumberEntry.java new file mode 100644 index 000000000..315d147df --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/config/ui/entries/NumberEntry.java @@ -0,0 +1,211 @@ +package com.simibubi.create.foundation.config.ui.entries; + +import java.lang.reflect.Field; +import java.util.function.Function; + +import javax.annotation.Nullable; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.config.ui.ConfigTextField; +import com.simibubi.create.foundation.gui.TextStencilElement; +import com.simibubi.create.foundation.gui.Theme; +import com.simibubi.create.foundation.gui.UIRenderHelper; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.widget.TextFieldWidget; +import net.minecraft.util.text.StringTextComponent; +import net.minecraftforge.common.ForgeConfigSpec; + +public abstract class NumberEntry extends ValueEntry { + + protected int minOffset = 0, maxOffset = 0; + protected TextStencilElement minText = null, maxText = null; + protected TextFieldWidget textField; + + @Nullable + public static NumberEntry create(Object type, String label, ForgeConfigSpec.ConfigValue value, ForgeConfigSpec.ValueSpec spec) { + if (type instanceof Integer) { + return new IntegerEntry(label, (ForgeConfigSpec.ConfigValue) value, spec); + } else if (type instanceof Float) { + return new FloatEntry(label, (ForgeConfigSpec.ConfigValue) value, spec); + } else if (type instanceof Double) { + return new DoubleEntry(label, (ForgeConfigSpec.ConfigValue) value, spec); + } + + return null; + } + + public NumberEntry(String label, ForgeConfigSpec.ConfigValue value, ForgeConfigSpec.ValueSpec spec) { + super(label, value, spec); + textField = new ConfigTextField(Minecraft.getInstance().fontRenderer, 0, 0, 200, 20, unit); + textField.setText(String.valueOf(getValue())); + textField.setTextColor(Theme.i(Theme.Key.TEXT)); + + Object range = spec.getRange(); + try { + Field minField = range.getClass().getDeclaredField("min"); + Field maxField = range.getClass().getDeclaredField("max"); + minField.setAccessible(true); + maxField.setAccessible(true); + T min = (T) minField.get(range); + T max = (T) maxField.get(range); + + FontRenderer font = Minecraft.getInstance().fontRenderer; + if (min.doubleValue() > getTypeMin().doubleValue()) { + StringTextComponent t = new StringTextComponent(formatBound(min) + " < "); + minText = new TextStencilElement(font, t).centered(true, false); + minText.withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0 ,0, height/2, height, width, Theme.p(Theme.Key.TEXT_DARKER))); + minOffset = font.getWidth(t); + } + if (max.doubleValue() < getTypeMax().doubleValue()) { + StringTextComponent t = new StringTextComponent(" < " + formatBound(max)); + maxText = new TextStencilElement(font, t).centered(true, false); + maxText.withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0 ,0, height/2, height, width, Theme.p(Theme.Key.TEXT_DARKER))); + maxOffset = font.getWidth(t); + } + } catch (NoSuchFieldException | IllegalAccessException | ClassCastException | NullPointerException ignored) { + + } + + textField.setResponder(s -> { + try { + T number = getParser().apply(s); + if (!spec.test(number)) + throw new IllegalArgumentException(); + + textField.setTextColor(Theme.i(Theme.Key.TEXT)); + setValue(number); + + } catch (IllegalArgumentException ignored) { + textField.setTextColor(Theme.i(Theme.Key.BUTTON_FAIL)); + } + }); + + listeners.add(textField); + onReset(); + } + + protected String formatBound(T bound) { + String sci = String.format("%.2E", bound.doubleValue()); + String str = String.valueOf(bound); + return sci.length() < str.length() ? sci : str; + } + + protected abstract T getTypeMin(); + + protected abstract T getTypeMax(); + + protected abstract Function getParser(); + + @Override + protected void setEditable(boolean b) { + super.setEditable(b); + textField.setEnabled(b); + } + + @Override + public void onValueChange(T newValue) { + super.onValueChange(newValue); + String newText = String.valueOf(newValue); + if (textField.getText().equals(newText)) + return; + + textField.setText(newText); + } + + @Override + public void tick() { + super.tick(); + textField.tick(); + } + + @Override + public void render(MatrixStack ms, int index, int y, int x, int width, int height, int mouseX, int mouseY, boolean p_230432_9_, float partialTicks) { + super.render(ms, index, y, x, width, height, mouseX, mouseY, p_230432_9_, partialTicks); + + textField.x = x + width - 82 - resetWidth; + textField.y = y + 8; + textField.setWidth(Math.min(width - getLabelWidth(width) - resetWidth - minOffset - maxOffset, 40)); + textField.setHeight(20); + textField.render(ms, mouseX, mouseY, partialTicks); + + if (minText != null) + minText + .at(textField.x - minOffset, textField.y, 0) + .withBounds(minOffset, textField.unusedGetHeight()) + .render(ms); + + if (maxText != null) + maxText + .at(textField.x + textField.getWidth(), textField.y, 0) + .withBounds(maxOffset, textField.unusedGetHeight()) + .render(ms); + } + + public static class IntegerEntry extends NumberEntry { + + public IntegerEntry(String label, ForgeConfigSpec.ConfigValue value, ForgeConfigSpec.ValueSpec spec) { + super(label, value, spec); + } + + @Override + protected Integer getTypeMin() { + return Integer.MIN_VALUE; + } + + @Override + protected Integer getTypeMax() { + return Integer.MAX_VALUE; + } + + @Override + protected Function getParser() { + return Integer::parseInt; + } + } + + public static class FloatEntry extends NumberEntry { + + public FloatEntry(String label, ForgeConfigSpec.ConfigValue value, ForgeConfigSpec.ValueSpec spec) { + super(label, value, spec); + } + + @Override + protected Float getTypeMin() { + return -Float.MAX_VALUE; + } + + @Override + protected Float getTypeMax() { + return Float.MAX_VALUE; + } + + @Override + protected Function getParser() { + return Float::parseFloat; + } + } + + public static class DoubleEntry extends NumberEntry { + + public DoubleEntry(String label, ForgeConfigSpec.ConfigValue value, ForgeConfigSpec.ValueSpec spec) { + super(label, value, spec); + } + + @Override + protected Double getTypeMin() { + return (double) -Float.MAX_VALUE; + } + + @Override + protected Double getTypeMax() { + return (double) Float.MAX_VALUE; + } + + @Override + protected Function getParser() { + return Double::parseDouble; + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/entries/SubMenuEntry.java b/src/main/java/com/simibubi/create/foundation/config/ui/entries/SubMenuEntry.java new file mode 100644 index 000000000..d2812f463 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/config/ui/entries/SubMenuEntry.java @@ -0,0 +1,49 @@ +package com.simibubi.create.foundation.config.ui.entries; + +import com.electronwill.nightconfig.core.UnmodifiableConfig; +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.config.ui.ConfigScreenList; +import com.simibubi.create.foundation.config.ui.SubMenuConfigScreen; +import com.simibubi.create.foundation.gui.AllIcons; +import com.simibubi.create.foundation.gui.DelegatedStencilElement; +import com.simibubi.create.foundation.gui.ScreenOpener; +import com.simibubi.create.foundation.gui.widgets.BoxWidget; + +import net.minecraftforge.common.ForgeConfigSpec; + +public class SubMenuEntry extends ConfigScreenList.LabeledEntry { + + protected BoxWidget button; + + public SubMenuEntry(SubMenuConfigScreen parent, String label, ForgeConfigSpec spec, UnmodifiableConfig config) { + super(label); + + button = new BoxWidget(0, 0, 35, 16) + .showingElement(AllIcons.I_CONFIG_OPEN.asStencil().at(10, 0)) + .withCallback(() -> ScreenOpener.open(new SubMenuConfigScreen(parent, label, parent.type, spec, config))); + button.modifyElement(e -> ((DelegatedStencilElement) e).withElementRenderer(BoxWidget.gradientFactory.apply(button))); + + listeners.add(button); + } + + @Override + public void tick() { + super.tick(); + button.tick(); + } + + @Override + public void render(MatrixStack ms, int index, int y, int x, int width, int height, int mouseX, int mouseY, boolean p_230432_9_, float partialTicks) { + super.render(ms, index, y, x, width, height, mouseX, mouseY, p_230432_9_, partialTicks); + + button.x = x + width - 108; + button.y = y + 10; + button.setHeight(height - 20); + button.render(ms, mouseX, mouseY, partialTicks); + } + + @Override + protected int getLabelWidth(int totalWidth) { + return (int) (totalWidth * labelWidthMult) + 30; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/entries/ValueEntry.java b/src/main/java/com/simibubi/create/foundation/config/ui/entries/ValueEntry.java new file mode 100644 index 000000000..6f6f89093 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/config/ui/entries/ValueEntry.java @@ -0,0 +1,159 @@ +package com.simibubi.create.foundation.config.ui.entries; + +import java.util.Arrays; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +import javax.annotation.Nonnull; + +import org.apache.commons.lang3.ArrayUtils; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.config.ui.ConfigScreen; +import com.simibubi.create.foundation.config.ui.ConfigScreenList; +import com.simibubi.create.foundation.gui.AllIcons; +import com.simibubi.create.foundation.gui.DelegatedStencilElement; +import com.simibubi.create.foundation.gui.widgets.BoxWidget; + +import net.minecraft.util.text.IFormattableTextComponent; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.TextFormatting; +import net.minecraftforge.common.ForgeConfigSpec; + +public class ValueEntry extends ConfigScreenList.LabeledEntry { + + protected static final IFormattableTextComponent modComponent = new StringTextComponent("* ").formatted(TextFormatting.BOLD, TextFormatting.DARK_BLUE).append(StringTextComponent.EMPTY.copy().formatted(TextFormatting.RESET)); + protected static final int resetWidth = 28;//including 6px offset on either side + public static final Pattern unitPattern = Pattern.compile("\\[(in .*)]"); + + protected ForgeConfigSpec.ConfigValue value; + protected ForgeConfigSpec.ValueSpec spec; + protected BoxWidget resetButton; + protected boolean editable = true; + protected String path; + + public ValueEntry(String label, ForgeConfigSpec.ConfigValue value, ForgeConfigSpec.ValueSpec spec) { + super(label); + this.value = value; + this.spec = spec; + this.path = String.join(".", value.getPath()); + + resetButton = new BoxWidget(0, 0, resetWidth - 12, 16) + .showingElement(AllIcons.I_CONFIG_RESET.asStencil()) + .withCallback(() -> { + setValue((T) spec.getDefault()); + this.onReset(); + }); + resetButton.modifyElement(e -> ((DelegatedStencilElement) e).withElementRenderer(BoxWidget.gradientFactory.apply(resetButton))); + + listeners.add(resetButton); + + List path = value.getPath(); + labelTooltip.add(new StringTextComponent(path.get(path.size()-1)).formatted(TextFormatting.GRAY)); + String comment = spec.getComment(); + if (comment == null || comment.isEmpty()) + return; + String[] commentLines = comment.split("\n"); + //find unit in the comment + for (int i = 0; i < commentLines.length; i++) { + if (commentLines[i].isEmpty()) { + commentLines = ArrayUtils.remove(commentLines, i); + i--; + continue; + } + + Matcher matcher = unitPattern.matcher(commentLines[i]); + if (!matcher.matches()) + continue; + + String u = matcher.group(1); + if (u.equals("in Revolutions per Minute")) + u = "in RPM"; + if (u.equals("in Stress Units")) + u = "in SU"; + unit = u; + } + //add comment to tooltip + labelTooltip.addAll(Arrays.stream(commentLines).map(StringTextComponent::new).collect(Collectors.toList())); + } + + @Override + protected void setEditable(boolean b) { + editable = b; + resetButton.active = editable && !isCurrentValueDefault(); + resetButton.animateGradientFromState(); + } + + @Override + public void tick() { + super.tick(); + resetButton.tick(); + } + + @Override + public void render(MatrixStack ms, int index, int y, int x, int width, int height, int mouseX, int mouseY, boolean p_230432_9_, float partialTicks) { + if (isCurrentValueChanged()) { + IFormattableTextComponent original = label.getComponent(); + IFormattableTextComponent changed = modComponent.copy().append(original); + label.withText(changed); + super.render(ms, index, y, x, width, height, mouseX, mouseY, p_230432_9_, partialTicks); + label.withText(original); + } else { + super.render(ms, index, y, x, width, height, mouseX, mouseY, p_230432_9_, partialTicks); + } + + resetButton.x = x + width - resetWidth + 6; + resetButton.y = y + 10; + resetButton.render(ms, mouseX, mouseY, partialTicks); + } + + @Override + protected int getLabelWidth(int totalWidth) { + return (int) (totalWidth * labelWidthMult) + 30; + } + + public void setValue(@Nonnull T value) { + if (value.equals(this.value.get())) { + ConfigScreen.changes.remove(path); + onValueChange(value); + return; + } + + ConfigScreen.changes.put(path, value); + onValueChange(value); + } + + @Nonnull + public T getValue() { + //noinspection unchecked + return (T) ConfigScreen.changes.getOrDefault(path, this.value.get()); + } + + protected boolean isCurrentValueChanged() { + return ConfigScreen.changes.containsKey(path); + } + + protected boolean isCurrentValueDefault() { + return spec.getDefault().equals(getValue()); + } + + public void onReset() { + onValueChange(getValue()); + } + + public void onValueChange() { + onValueChange(getValue()); + } + public void onValueChange(T newValue) { + resetButton.active = editable && !isCurrentValueDefault(); + resetButton.animateGradientFromState(); + } + + protected void bumpCog() {bumpCog(10f);} + protected void bumpCog(float force) { + if (list != null && list instanceof ConfigScreenList) + ((ConfigScreenList) list).bumpCog(force); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/data/AssetLookup.java b/src/main/java/com/simibubi/create/foundation/data/AssetLookup.java index 80a0b8c6f..f677efa7c 100644 --- a/src/main/java/com/simibubi/create/foundation/data/AssetLookup.java +++ b/src/main/java/com/simibubi/create/foundation/data/AssetLookup.java @@ -57,7 +57,17 @@ public class AssetLookup { * models/block/folders[0]/folders[1]/.../item.json "_" will be replaced by the * item name */ - public static NonNullBiConsumer, RegistrateItemModelProvider> customItemModel( + public static NonNullBiConsumer, RegistrateItemModelProvider> customBlockItemModel( + String... folders) { + return (c, p) -> { + String path = "block"; + for (String string : folders) + path += "/" + ("_".equals(string) ? c.getName() : string); + p.withExistingParent(c.getName(), p.modLoc(path)); + }; + } + + public static NonNullBiConsumer, RegistrateItemModelProvider> customGenericItemModel( String... folders) { return (c, p) -> { String path = "block"; diff --git a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java index 922586443..5a110f8b7 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -63,7 +63,7 @@ public class BuilderTransformers { .transform(StressConfigDefaults.setNoImpact()) .loot((p, b) -> p.registerDropping(b, AllBlocks.SHAFT.get())) .item() - .model(AssetLookup.customItemModel("encased_shaft", "item_" + casing)) + .model(AssetLookup.customBlockItemModel("encased_shaft", "item_" + casing)) .build(); } @@ -212,7 +212,7 @@ public class BuilderTransformers { }); }) .item() - .properties(p -> type.equals("creative") ? p : p.rarity(Rarity.EPIC)) + .properties(p -> type.equals("creative") ? p.rarity(Rarity.EPIC) : p) .transform(ModelGen.customItemModel("crate", type, "single")); } diff --git a/src/main/java/com/simibubi/create/foundation/data/ModelGen.java b/src/main/java/com/simibubi/create/foundation/data/ModelGen.java index aec5e178a..ff8cf6679 100644 --- a/src/main/java/com/simibubi/create/foundation/data/ModelGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/ModelGen.java @@ -42,7 +42,7 @@ public class ModelGen { } public static NonNullFunction, P> customItemModel(String... path) { - return b -> b.model(AssetLookup.customItemModel(path)) + return b -> b.model(AssetLookup.customBlockItemModel(path)) .build(); } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/DeployingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/DeployingRecipeGen.java new file mode 100644 index 000000000..4da7b3529 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/DeployingRecipeGen.java @@ -0,0 +1,24 @@ +package com.simibubi.create.foundation.data.recipe; + +import com.simibubi.create.AllRecipeTypes; + +import net.minecraft.data.DataGenerator; + +public class DeployingRecipeGen extends ProcessingRecipeGen { + +// GeneratedRecipe +// TEST = create("test", b -> b.require(AllItems.ANDESITE_ALLOY.get()) +// .require(AllItems.BAR_OF_CHOCOLATE.get()) +// .output(AllItems.BRASS_NUGGET.get())), +// ; + + public DeployingRecipeGen(DataGenerator p_i48262_1_) { + super(p_i48262_1_); + } + + @Override + protected AllRecipeTypes getRecipeType() { + return AllRecipeTypes.DEPLOYING; + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java index 094d59133..920d5ef13 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java @@ -31,6 +31,7 @@ public abstract class ProcessingRecipeGen extends CreateRecipeProvider { generators.add(new CuttingRecipeGen(gen)); generators.add(new WashingRecipeGen(gen)); generators.add(new PolishingRecipeGen(gen)); + generators.add(new DeployingRecipeGen(gen)); generators.add(new MixingRecipeGen(gen)); generators.add(new CompactingRecipeGen(gen)); generators.add(new PressingRecipeGen(gen)); diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java index f36289322..4f6998cc9 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java @@ -948,6 +948,27 @@ public class StandardRecipeGen extends CreateRecipeProvider { .viaShapeless(b -> b.addIngredient(AllItems.WHEAT_FLOUR.get()) .addIngredient(Items.WATER_BUCKET)), + DIVING_HELMET = create(AllItems.DIVING_HELMET).unlockedByTag(I::copper) + .viaShaped(b -> b.key('G', Tags.Items.GLASS) + .key('P', I.copper()) + .patternLine("PPP") + .patternLine("PGP")), + + COPPER_BACKTANK = create(AllItems.COPPER_BACKTANK).unlockedByTag(I::copper) + .viaShaped(b -> b.key('G', I.shaft()) + .key('A', I.andesite()) + .key('P', I.copper()) + .patternLine("AGA") + .patternLine("PPP") + .patternLine(" P ")), + + DIVING_BOOTS = create(AllItems.DIVING_BOOTS).unlockedByTag(I::copper) + .viaShaped(b -> b.key('G', I.andesite()) + .key('P', I.copper()) + .patternLine("P P") + .patternLine("P P") + .patternLine("G G")), + SLIME_BALL = create(() -> Items.SLIME_BALL).unlockedBy(AllItems.DOUGH::get) .viaShapeless(b -> b.addIngredient(AllItems.DOUGH.get()) .addIngredient(Tags.Items.DYES_LIME)), diff --git a/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiContainerScreen.java b/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiContainerScreen.java index 9ad3a705e..d76463414 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiContainerScreen.java +++ b/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiContainerScreen.java @@ -69,8 +69,6 @@ public abstract class AbstractSimiContainerScreen extends C RenderSystem.disableLighting(); RenderSystem.disableDepthTest(); renderWindowForeground(matrixStack, mouseX, mouseY, partialTicks); - for (Widget widget : widgets) - widget.renderToolTip(matrixStack, mouseX, mouseY); } @Override @@ -152,9 +150,12 @@ public abstract class AbstractSimiContainerScreen extends C if (!widget.isHovered()) continue; - if (widget instanceof AbstractSimiWidget && !((AbstractSimiWidget) widget).getToolTip() - .isEmpty()) { - renderTooltip(matrixStack, ((AbstractSimiWidget) widget).getToolTip(), mouseX, mouseY); + if (widget instanceof AbstractSimiWidget) { + if (!((AbstractSimiWidget) widget).getToolTip().isEmpty()) + renderTooltip(matrixStack, ((AbstractSimiWidget) widget).getToolTip(), mouseX, mouseY); + + } else { + widget.renderToolTip(matrixStack, mouseX, mouseY); } } } diff --git a/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java b/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java index 7de342c26..b064ccbfa 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java +++ b/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java @@ -33,6 +33,13 @@ public abstract class AbstractSimiScreen extends Screen { guiTop = (this.height - sHeight) / 2; } + @Override + public void tick() { + super.tick(); + + widgets.stream().filter(w -> w instanceof AbstractSimiWidget).forEach(w -> ((AbstractSimiWidget) w).tick()); + } + @Override public void render(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { partialTicks = partialTicks == 10 ? 0 @@ -46,8 +53,6 @@ public abstract class AbstractSimiScreen extends Screen { for (Widget widget : widgets) widget.render(ms, mouseX, mouseY, partialTicks); renderWindowForeground(ms, mouseX, mouseY, partialTicks); - for (Widget widget : widgets) - widget.renderToolTip(ms, mouseX, mouseY); ms.pop(); } @@ -62,6 +67,10 @@ public abstract class AbstractSimiScreen extends Screen { for (Widget widget : widgets) if (widget.mouseClicked(x, y, button)) result = true; + + if (!result) { + result = super.mouseClicked(x, y, button); + } return result; } @@ -127,9 +136,12 @@ public abstract class AbstractSimiScreen extends Screen { if (!widget.isHovered()) continue; - if (widget instanceof AbstractSimiWidget && !((AbstractSimiWidget) widget).getToolTip() - .isEmpty()) { - renderTooltip(ms, ((AbstractSimiWidget) widget).getToolTip(), mouseX, mouseY); + if (widget instanceof AbstractSimiWidget) { + if (!((AbstractSimiWidget) widget).getToolTip().isEmpty()) + renderTooltip(ms, ((AbstractSimiWidget) widget).getToolTip(), mouseX, mouseY); + + } else { + widget.renderToolTip(ms, mouseX, mouseY); } } } diff --git a/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java b/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java index 1c6c6211e..eb7680eab 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java +++ b/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java @@ -1,5 +1,7 @@ package com.simibubi.create.foundation.gui; +import java.awt.Color; + import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.Create; @@ -86,8 +88,8 @@ public enum AllGuiTextures implements IScreenRenderable { INDICATOR_YELLOW("widgets.png", 54, 18, 18, 6), INDICATOR_RED("widgets.png", 72, 18, 18, 6), - SPEECH_TOOLTIP("widgets.png", 0, 24, 8, 8), - SPEECH_TOOLTIP_HIGHLIGHT("widgets.png", 8, 24, 8, 8), + SPEECH_TOOLTIP_BACKGROUND("widgets.png", 0, 24, 8, 8), + SPEECH_TOOLTIP_COLOR("widgets.png", 8, 24, 8, 8), // PlacementIndicator PLACEMENT_INDICATOR_SHEET("placement_indicator.png", 0, 0, 16, 256); @@ -129,4 +131,9 @@ public enum AllGuiTextures implements IScreenRenderable { bind(); screen.drawTexture(ms, x, y, startX, startY, width, height); } + + public void draw(MatrixStack ms, int x, int y, Color c) { + bind(); + UIRenderHelper.drawColoredTexture(ms, c, x, y, startX, startY, width, height); + } } diff --git a/src/main/java/com/simibubi/create/foundation/gui/AllIcons.java b/src/main/java/com/simibubi/create/foundation/gui/AllIcons.java index 7b9990cbb..3351867e7 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/AllIcons.java +++ b/src/main/java/com/simibubi/create/foundation/gui/AllIcons.java @@ -22,48 +22,129 @@ public class AllIcons implements IScreenRenderable { private int iconX; private int iconY; - public static final AllIcons I_ADD = newRow(), I_TRASH = next(), I_3x3 = next(), I_TARGET = next(), - I_PRIORITY_VERY_LOW = next(), I_PRIORITY_LOW = next(), I_PRIORITY_HIGH = next(), I_PRIORITY_VERY_HIGH = next(), - I_BLACKLIST = next(), I_WHITELIST = next(), I_WHITELIST_OR = next(), I_WHITELIST_AND = next(), - I_WHITELIST_NOT = next(), I_RESPECT_NBT = next(), I_IGNORE_NBT = next(); + public static final AllIcons + I_ADD = newRow(), + I_TRASH = next(), + I_3x3 = next(), + I_TARGET = next(), + I_PRIORITY_VERY_LOW = next(), + I_PRIORITY_LOW = next(), + I_PRIORITY_HIGH = next(), + I_PRIORITY_VERY_HIGH = next(), + I_BLACKLIST = next(), + I_WHITELIST = next(), + I_WHITELIST_OR = next(), + I_WHITELIST_AND = next(), + I_WHITELIST_NOT = next(), + I_RESPECT_NBT = next(), + I_IGNORE_NBT = next(); - public static final AllIcons I_CONFIRM = newRow(), I_NONE = next(), I_OPEN_FOLDER = next(), I_REFRESH = next(), - I_ACTIVE = next(), I_PASSIVE = next(), I_ROTATE_PLACE = next(), I_ROTATE_PLACE_RETURNED = next(), - I_ROTATE_NEVER_PLACE = next(), I_MOVE_PLACE = next(), I_MOVE_PLACE_RETURNED = next(), - I_MOVE_NEVER_PLACE = next(), I_CART_ROTATE = next(), I_CART_ROTATE_PAUSED = next(), + public static final AllIcons + I_CONFIRM = newRow(), + I_NONE = next(), + I_OPEN_FOLDER = next(), + I_REFRESH = next(), + I_ACTIVE = next(), + I_PASSIVE = next(), + I_ROTATE_PLACE = next(), + I_ROTATE_PLACE_RETURNED = next(), + I_ROTATE_NEVER_PLACE = next(), + I_MOVE_PLACE = next(), + I_MOVE_PLACE_RETURNED = next(), + I_MOVE_NEVER_PLACE = next(), + I_CART_ROTATE = next(), + I_CART_ROTATE_PAUSED = next(), I_CART_ROTATE_LOCKED = next(); - public static final AllIcons I_DONT_REPLACE = newRow(), I_REPLACE_SOLID = next(), I_REPLACE_ANY = next(), - I_REPLACE_EMPTY = next(), I_CENTERED = next(), I_ATTACHED = next(), I_INSERTED = next(), I_FILL = next(), - I_PLACE = next(), I_REPLACE = next(), I_CLEAR = next(), I_OVERLAY = next(), I_FLATTEN = next(), I_LMB = next(), - I_SCROLL = next(), I_RMB = next(); + public static final AllIcons + I_DONT_REPLACE = newRow(), + I_REPLACE_SOLID = next(), + I_REPLACE_ANY = next(), + I_REPLACE_EMPTY = next(), + I_CENTERED = next(), + I_ATTACHED = next(), + I_INSERTED = next(), + I_FILL = next(), + I_PLACE = next(), + I_REPLACE = next(), + I_CLEAR = next(), + I_OVERLAY = next(), + I_FLATTEN = next(), + I_LMB = next(), + I_SCROLL = next(), + I_RMB = next(); - public static final AllIcons I_TOOL_DEPLOY = newRow(), I_SKIP_MISSING = next(), I_SKIP_TILES = next(), - I_DICE = next(), I_TUNNEL_SPLIT = next(), I_TUNNEL_FORCED_SPLIT = next(), I_TUNNEL_ROUND_ROBIN = next(), - I_TUNNEL_FORCED_ROUND_ROBIN = next(), I_TUNNEL_PREFER_NEAREST = next(), I_TUNNEL_RANDOMIZE = next(), + public static final AllIcons + I_TOOL_DEPLOY = newRow(), + I_SKIP_MISSING = next(), + I_SKIP_TILES = next(), + I_DICE = next(), + I_TUNNEL_SPLIT = next(), + I_TUNNEL_FORCED_SPLIT = next(), + I_TUNNEL_ROUND_ROBIN = next(), + I_TUNNEL_FORCED_ROUND_ROBIN = next(), + I_TUNNEL_PREFER_NEAREST = next(), + I_TUNNEL_RANDOMIZE = next(), I_TUNNEL_SYNCHRONIZE = next(), - I_TOOL_MOVE_XZ = newRow(), I_TOOL_MOVE_Y = next(), I_TOOL_ROTATE = next(), I_TOOL_MIRROR = next(), - I_ARM_ROUND_ROBIN = next(), I_ARM_FORCED_ROUND_ROBIN = next(), I_ARM_PREFER_FIRST = next(), + I_TOOL_MOVE_XZ = newRow(), + I_TOOL_MOVE_Y = next(), + I_TOOL_ROTATE = next(), + I_TOOL_MIRROR = next(), + I_ARM_ROUND_ROBIN = next(), + I_ARM_FORCED_ROUND_ROBIN = next(), + I_ARM_PREFER_FIRST = next(), - I_ADD_INVERTED_ATTRIBUTE = next(), I_FLIP = next(), + I_ADD_INVERTED_ATTRIBUTE = next(), + I_FLIP = next(), - I_PLAY = newRow(), I_PAUSE = next(), I_STOP = next(), I_PLACEMENT_SETTINGS = next(), I_ROTATE_CCW = next(), - I_HOUR_HAND_FIRST = next(), I_MINUTE_HAND_FIRST = next(), I_HOUR_HAND_FIRST_24 = next(), + I_PLAY = newRow(), + I_PAUSE = next(), + I_STOP = next(), + I_PLACEMENT_SETTINGS = next(), + I_ROTATE_CCW = next(), + I_HOUR_HAND_FIRST = next(), + I_MINUTE_HAND_FIRST = next(), + I_HOUR_HAND_FIRST_24 = next(), - I_PATTERN_SOLID = newRow(), I_PATTERN_CHECKERED = next(), I_PATTERN_CHECKERED_INVERSED = next(), - I_PATTERN_CHANCE_25 = next(), + I_PATTERN_SOLID = newRow(), + I_PATTERN_CHECKERED = next(), + I_PATTERN_CHECKERED_INVERSED = next(), + I_PATTERN_CHANCE_25 = next(), - I_PATTERN_CHANCE_50 = newRow(), I_PATTERN_CHANCE_75 = next(), I_FOLLOW_DIAGONAL = next(), - I_FOLLOW_MATERIAL = next(), + I_PATTERN_CHANCE_50 = newRow(), + I_PATTERN_CHANCE_75 = next(), + I_FOLLOW_DIAGONAL = next(), + I_FOLLOW_MATERIAL = next(), - I_SCHEMATIC = newRow(), + I_SCHEMATIC = newRow(), - I_MTD_LEFT = newRow(), I_MTD_CLOSE = next(), I_MTD_RIGHT = next(), I_MTD_SCAN = next(), I_MTD_REPLAY = next(), - I_MTD_USER_MODE = next(), I_MTD_SLOW_MODE = next(), + I_MTD_LEFT = newRow(), + I_MTD_CLOSE = next(), + I_MTD_RIGHT = next(), + I_MTD_SCAN = next(), + I_MTD_REPLAY = next(), + I_MTD_USER_MODE = next(), + I_MTD_SLOW_MODE = next(), - I_FX_SURFACE_OFF = newRow(), I_FX_SURFACE_ON = next(), I_FX_FIELD_OFF = next(), I_FX_FIELD_ON = next(), - I_FX_BLEND = next(), I_FX_BLEND_OFF = next(); + I_CONFIG_UNLOCKED = newRow(), + I_CONFIG_LOCKED = next(), + I_CONFIG_DISCARD = next(), + I_CONFIG_SAVE = next(), + I_CONFIG_RESET = next(), + I_CONFIG_BACK = next(), + I_CONFIG_PREV = next(), + I_CONFIG_NEXT = next(), + I_DISABLE = next(), + I_CONFIG_OPEN = next(), + + I_FX_SURFACE_OFF = newRow(), + I_FX_SURFACE_ON = next(), + I_FX_FIELD_OFF = next(), + I_FX_FIELD_ON = next(), + I_FX_BLEND = next(), + I_FX_BLEND_OFF = next(); + ; public AllIcons(int x, int y) { iconX = x * 16; @@ -119,8 +200,12 @@ public class AllIcons implements IScreenRenderable { } @OnlyIn(Dist.CLIENT) - private void vertex(Entry peek, IVertexBuilder builder, int j, int k, Vector3d rgb, Vector3d vec, float u, - float v) { + public DelegatedStencilElement asStencil() { + return new DelegatedStencilElement().withStencilRenderer((ms, w, h, alpha) -> this.draw(ms, 0, 0)).withBounds(16, 16); + } + + @OnlyIn(Dist.CLIENT) + private void vertex(Entry peek, IVertexBuilder builder, int j, int k, Vector3d rgb, Vector3d vec, float u, float v) { builder.vertex(peek.getModel(), (float) vec.x, (float) vec.y, (float) vec.z) .color((float) rgb.x, (float) rgb.y, (float) rgb.z, 1) .texture(u, v) diff --git a/src/main/java/com/simibubi/create/foundation/gui/BoxElement.java b/src/main/java/com/simibubi/create/foundation/gui/BoxElement.java new file mode 100644 index 000000000..673b057b6 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/gui/BoxElement.java @@ -0,0 +1,160 @@ +package com.simibubi.create.foundation.gui; + +import java.awt.Color; + +import org.lwjgl.opengl.GL11; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.systems.RenderSystem; +import com.simibubi.create.foundation.utility.ColorHelper; +import com.simibubi.create.foundation.utility.Couple; + +import net.minecraft.client.renderer.BufferBuilder; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.util.math.vector.Matrix4f; + +public class BoxElement extends RenderElement { + + protected Color background = new Color(0xff000000, true); + protected Color borderTop = new Color(0x40ffeedd, true); + protected Color borderBot = new Color(0x20ffeedd, true); + protected int borderOffset = 2; + + public T withBackground(Color color) { + this.background = color; + //noinspection unchecked + return (T) this; + } + + public T withBackground(int color) { + return withBackground(new Color(color, true)); + } + + public T flatBorder(Color color) { + this.borderTop = color; + this.borderBot = color; + //noinspection unchecked + return (T) this; + } + + public T flatBorder(int color) { + return flatBorder(new Color(color, true)); + } + + public T gradientBorder(Couple colors) { + this.borderTop = colors.getFirst(); + this.borderBot = colors.getSecond(); + //noinspection unchecked + return (T) this; + } + + public T gradientBorder(Color top, Color bot) { + this.borderTop = top; + this.borderBot = bot; + //noinspection unchecked + return (T) this; + } + + public T gradientBorder(int top, int bot) { + return gradientBorder(new Color(top, true), new Color(bot, true)); + } + + public T withBorderOffset(int offset) { + this.borderOffset = offset; + //noinspection unchecked + return (T) this; + } + + @Override + public void render(MatrixStack ms) { + renderBox(ms); + } + + //total box width = 1 * 2 (outer border) + 1 * 2 (inner color border) + 2 * borderOffset + width + //defaults to 2 + 2 + 4 + 16 = 24px + //batch everything together to save a bunch of gl calls over GuiUtils + protected void renderBox(MatrixStack ms) { + /* + * _____________ + * _|_____________|_ + * | | ___________ | | + * | | | | | | | + * | | | | | | | + * | | |--* | | | | + * | | | h | | | + * | | | --w-+ | | | + * | | | | | | + * | | |_________| | | + * |_|_____________|_| + * |_____________| + * + * */ + RenderSystem.disableTexture(); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.shadeModel(GL11.GL_SMOOTH); + + int f = borderOffset; + Color c1 = ColorHelper.applyAlpha(background, alpha); + Color c2 = ColorHelper.applyAlpha(borderTop, alpha); + Color c3 = ColorHelper.applyAlpha(borderBot, alpha); + Tessellator tessellator = Tessellator.getInstance(); + BufferBuilder b = tessellator.getBuffer(); + Matrix4f model = ms.peek().getModel(); + b.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR); + //outer top + b.vertex(model, x - f - 1 , y - f - 2 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + b.vertex(model, x - f - 1 , y - f - 1 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + b.vertex(model, x + f + 1 + width, y - f - 1 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + b.vertex(model, x + f + 1 + width, y - f - 2 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + //outer left + b.vertex(model, x - f - 2 , y - f - 1 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + b.vertex(model, x - f - 2 , y + f + 1 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + b.vertex(model, x - f - 1 , y + f + 1 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + b.vertex(model, x - f - 1 , y - f - 1 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + //outer bottom + b.vertex(model, x - f - 1 , y + f + 1 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + b.vertex(model, x - f - 1 , y + f + 2 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + b.vertex(model, x + f + 1 + width, y + f + 2 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + b.vertex(model, x + f + 1 + width, y + f + 1 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + //outer right + b.vertex(model, x + f + 1 + width, y - f - 1 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + b.vertex(model, x + f + 1 + width, y + f + 1 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + b.vertex(model, x + f + 2 + width, y + f + 1 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + b.vertex(model, x + f + 2 + width, y - f - 1 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + //inner background - also render behind the inner edges + b.vertex(model, x - f - 1 , y - f - 1 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + b.vertex(model, x - f - 1 , y + f + 1 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + b.vertex(model, x + f + 1 + width, y + f + 1 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + b.vertex(model, x + f + 1 + width, y - f - 1 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); + tessellator.draw(); + b.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR); + //inner top - includes corners + b.vertex(model, x - f - 1 , y - f - 1 , z).color(c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha()).endVertex(); + b.vertex(model, x - f - 1 , y - f , z).color(c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha()).endVertex(); + b.vertex(model, x + f + 1 + width, y - f , z).color(c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha()).endVertex(); + b.vertex(model, x + f + 1 + width, y - f - 1 , z).color(c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha()).endVertex(); + //inner left - excludes corners + b.vertex(model, x - f - 1 , y - f , z).color(c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha()).endVertex(); + b.vertex(model, x - f - 1 , y + f + height, z).color(c3.getRed(), c3.getGreen(), c3.getBlue(), c3.getAlpha()).endVertex(); + b.vertex(model, x - f , y + f + height, z).color(c3.getRed(), c3.getGreen(), c3.getBlue(), c3.getAlpha()).endVertex(); + b.vertex(model, x - f , y - f , z).color(c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha()).endVertex(); + //inner bottom - includes corners + b.vertex(model, x - f - 1 , y + f + height, z).color(c3.getRed(), c3.getGreen(), c3.getBlue(), c3.getAlpha()).endVertex(); + b.vertex(model, x - f - 1 , y + f + 1 + height, z).color(c3.getRed(), c3.getGreen(), c3.getBlue(), c3.getAlpha()).endVertex(); + b.vertex(model, x + f + 1 + width, y + f + 1 + height, z).color(c3.getRed(), c3.getGreen(), c3.getBlue(), c3.getAlpha()).endVertex(); + b.vertex(model, x + f + 1 + width, y + f + height, z).color(c3.getRed(), c3.getGreen(), c3.getBlue(), c3.getAlpha()).endVertex(); + //inner right - excludes corners + b.vertex(model, x + f + width, y - f , z).color(c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha()).endVertex(); + b.vertex(model, x + f + width, y + f + height, z).color(c3.getRed(), c3.getGreen(), c3.getBlue(), c3.getAlpha()).endVertex(); + b.vertex(model, x + f + 1 + width, y + f + height, z).color(c3.getRed(), c3.getGreen(), c3.getBlue(), c3.getAlpha()).endVertex(); + b.vertex(model, x + f + 1 + width, y - f , z).color(c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha()).endVertex(); + + tessellator.draw(); + + RenderSystem.shadeModel(GL11.GL_FLAT); + RenderSystem.disableBlend(); + RenderSystem.enableTexture(); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/gui/CombinedStencilElement.java b/src/main/java/com/simibubi/create/foundation/gui/CombinedStencilElement.java new file mode 100644 index 000000000..374479c69 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/gui/CombinedStencilElement.java @@ -0,0 +1,79 @@ +package com.simibubi.create.foundation.gui; + +import javax.annotation.Nonnull; + +import com.mojang.blaze3d.matrix.MatrixStack; + +public class CombinedStencilElement extends StencilElement { + + private StencilElement element1; + private StencilElement element2; + private ElementMode mode; + + private CombinedStencilElement() {} + + public static CombinedStencilElement of(@Nonnull StencilElement element1, @Nonnull StencilElement element2) { + return of(element1, element2, ElementMode.FIRST); + } + + public static CombinedStencilElement of(@Nonnull StencilElement element1, @Nonnull StencilElement element2, ElementMode mode) { + CombinedStencilElement e = new CombinedStencilElement(); + e.element1 = element1; + e.element2 = element2; + e.mode = mode; + return e; + } + + public T withFirst(StencilElement element) { + this.element1 = element; + //noinspection unchecked + return (T) this; + } + + public T withSecond(StencilElement element) { + this.element2 = element; + //noinspection unchecked + return (T) this; + } + + public T withMode(ElementMode mode) { + this.mode = mode; + //noinspection unchecked + return (T) this; + } + + @Override + protected void renderStencil(MatrixStack ms) { + ms.push(); + element1.transform(ms); + element1.withBounds(width, height); + element1.renderStencil(ms); + ms.pop(); + ms.push(); + element2.transform(ms); + element2.withBounds(width, height); + element2.renderStencil(ms); + ms.pop(); + } + + @Override + protected void renderElement(MatrixStack ms) { + if (mode.rendersFirst()) + element1.withBounds(width, height).renderElement(ms); + + if (mode.rendersSecond()) + element2.withBounds(width, height).renderElement(ms); + } + + public enum ElementMode { + FIRST, SECOND, BOTH; + + boolean rendersFirst() { + return this == FIRST || this == BOTH; + } + + boolean rendersSecond() { + return this == SECOND || this == BOTH; + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/gui/ConfirmationScreen.java b/src/main/java/com/simibubi/create/foundation/gui/ConfirmationScreen.java new file mode 100644 index 000000000..e7b5b48cf --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/gui/ConfirmationScreen.java @@ -0,0 +1,194 @@ +package com.simibubi.create.foundation.gui; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Consumer; + +import javax.annotation.Nonnull; + +import org.lwjgl.opengl.GL30; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.gui.widgets.BoxWidget; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.shader.Framebuffer; +import net.minecraft.util.text.ITextProperties; +import net.minecraft.util.text.Style; + +public class ConfirmationScreen extends AbstractSimiScreen { + + private Screen source; + private Consumer action = _success -> {}; + private List text = new ArrayList<>(); + private boolean centered = false; + private int x; + private int y; + private int textWidth; + private int textHeight; + + private BoxWidget confirm; + private BoxWidget cancel; + private BoxElement textBackground; + + /* + * Removes text lines from the back of the list + * */ + public ConfirmationScreen removeTextLines(int amount) { + if (amount > text.size()) + return clearText(); + + text.subList(text.size() - amount, text.size()).clear(); + return this; + } + + public ConfirmationScreen clearText() { + this.text.clear(); + return this; + } + + public ConfirmationScreen addText(ITextProperties text) { + this.text.add(text); + return this; + } + + public ConfirmationScreen withText(ITextProperties text) { + return clearText().addText(text); + } + + public ConfirmationScreen at(int x, int y) { + this.x = Math.max(x, 0); + this.y = Math.max(y, 0); + this.centered = false; + return this; + } + + public ConfirmationScreen centered() { + this.centered = true; + return this; + } + + public ConfirmationScreen withAction(Consumer action) { + this.action = action; + return this; + } + + public void open(@Nonnull Screen source) { + this.source = source; + Minecraft client = source.getMinecraft(); + this.init(client, client.getWindow().getScaledWidth(), client.getWindow().getScaledHeight()); + this.client.currentScreen = this; + } + + @Override + public void tick() { + super.tick(); + confirm.tick(); + cancel.tick(); + } + + @Override + protected void init() { + widgets.clear(); + + ArrayList copy = new ArrayList<>(text); + text.clear(); + copy.forEach(t -> text.addAll(client.fontRenderer.getTextHandler().wrapLines(t, 300, Style.EMPTY))); + + textHeight = text.size() * (client.fontRenderer.FONT_HEIGHT + 1) + 4; + textWidth = 300; + + if (x + textWidth > width) { + x = width - textWidth; + } + + if (y + textHeight + 30 > height) { + y = height - textHeight - 30; + } + + if (centered) { + x = width/2 - textWidth/2 - 2; + y = height/2 - textHeight/2 - 16; + } + + TextStencilElement confirmText = new TextStencilElement(client.fontRenderer, "Confirm").centered(true, true); + confirm = new BoxWidget(x + 4, y + textHeight + 2 , textWidth/2 - 10, 20) + .withCallback(() -> accept(true)); + confirm.showingElement(confirmText.withElementRenderer(BoxWidget.gradientFactory.apply(confirm))); + + TextStencilElement cancelText = new TextStencilElement(client.fontRenderer, "Cancel").centered(true, true); + cancel = new BoxWidget(x + textWidth/2 + 6, y + textHeight + 2, textWidth/2 - 10, 20) + .withCallback(() -> accept(false)); + cancel.showingElement(cancelText.withElementRenderer(BoxWidget.gradientFactory.apply(cancel))); + + widgets.add(confirm); + widgets.add(cancel); + + textBackground = new BoxElement() + .gradientBorder(Theme.p(Theme.Key.BUTTON_DISABLE)) + .withBounds(textWidth, textHeight) + .at(x, y); + + } + + @Override + public void onClose() { + accept(false); + } + + private void accept(boolean success) { + client.currentScreen = source; + action.accept(success); + } + + @Override + protected void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + + textBackground.render(ms); + int offset = client.fontRenderer.FONT_HEIGHT + 1; + int lineY = y - offset; + + ms.push(); + ms.translate(0, 0, 200); + + for (ITextProperties line : text) { + lineY = lineY + offset; + + if (line == null) + continue; + + client.fontRenderer.draw(ms, line.getString(), x, lineY, 0xeaeaea); + } + + ms.pop(); + + } + + @Override + protected void renderWindowBackground(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + + UIRenderHelper.framebuffer.framebufferClear(Minecraft.IS_RUNNING_ON_MAC); + + ms.push(); + UIRenderHelper.framebuffer.bindFramebuffer(true); + source.render(ms, mouseX, mouseY, 10); + UIRenderHelper.framebuffer.unbindFramebuffer(); + Framebuffer mainBuffer = Minecraft.getInstance().getFramebuffer(); + ms.pop(); + + //fixme replace with glVersioned-backend calls once they are merged from jozu's branch + GL30.glBindFramebuffer(GL30.GL_READ_FRAMEBUFFER, UIRenderHelper.framebuffer.framebufferObject); + GL30.glBindFramebuffer(GL30.GL_DRAW_FRAMEBUFFER, mainBuffer.framebufferObject); + GL30.glBlitFramebuffer(0, 0, mainBuffer.framebufferWidth, mainBuffer.framebufferHeight, 0, 0, mainBuffer.framebufferWidth, mainBuffer.framebufferHeight, GL30.GL_COLOR_BUFFER_BIT, GL30.GL_LINEAR); + mainBuffer.bindFramebuffer(true); + + this.fillGradient(ms, 0, 0, this.width, this.height, 0x70101010, 0x80101010); + } + + @Override + public void resize(@Nonnull Minecraft client, int width, int height) { + super.resize(client, width, height); + source.resize(client, width, height); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/gui/DelegatedStencilElement.java b/src/main/java/com/simibubi/create/foundation/gui/DelegatedStencilElement.java new file mode 100644 index 000000000..4b45ace4f --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/gui/DelegatedStencilElement.java @@ -0,0 +1,51 @@ +package com.simibubi.create.foundation.gui; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.utility.ColorHelper; + +public class DelegatedStencilElement extends StencilElement { + + protected static final ElementRenderer EMPTY_RENDERER = (ms, width, height, alpha) -> {}; + protected static final ElementRenderer DEFAULT_ELEMENT = (ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0, -3, 5, height+4, width+6, ColorHelper.applyAlpha(0xff_10dd10, alpha), ColorHelper.applyAlpha(0xff_1010dd, alpha)); + + protected ElementRenderer stencil; + protected ElementRenderer element; + + public DelegatedStencilElement() { + stencil = EMPTY_RENDERER; + element = DEFAULT_ELEMENT; + } + + public DelegatedStencilElement(ElementRenderer stencil, ElementRenderer element) { + this.stencil = stencil; + this.element = element; + } + + public T withStencilRenderer(ElementRenderer renderer) { + stencil = renderer; + //noinspection unchecked + return (T) this; + } + + public T withElementRenderer(ElementRenderer renderer) { + element = renderer; + //noinspection unchecked + return (T) this; + } + + @Override + protected void renderStencil(MatrixStack ms) { + stencil.render(ms, width, height, 1); + } + + @Override + protected void renderElement(MatrixStack ms) { + element.render(ms, width, height, alpha); + } + + @FunctionalInterface + public interface ElementRenderer { + void render(MatrixStack ms, int width, int height, float alpha); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/gui/GuiGameElement.java b/src/main/java/com/simibubi/create/foundation/gui/GuiGameElement.java index 8619ad7ae..037ceed34 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/GuiGameElement.java +++ b/src/main/java/com/simibubi/create/foundation/gui/GuiGameElement.java @@ -35,12 +35,15 @@ import net.minecraft.inventory.container.PlayerContainer; import net.minecraft.item.ItemStack; import net.minecraft.util.IItemProvider; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.vector.Vector2f; import net.minecraft.util.math.vector.Vector3d; import net.minecraft.util.math.vector.Vector3f; import net.minecraftforge.fluids.FluidStack; public class GuiGameElement { + public static Vector2f defaultBlockLighting = new Vector2f(30.0f, 7.5f); + public static GuiRenderBuilder of(ItemStack stack) { return new GuiItemRenderBuilder(stack); } @@ -63,31 +66,19 @@ public class GuiGameElement { .with(FlowingFluidBlock.LEVEL, 0)); } - public static abstract class GuiRenderBuilder { - double xBeforeScale, yBeforeScale, zBeforeScale = 0; - double x, y, z; - double xRot, yRot, zRot; - double scale = 1; - int color = 0xFFFFFF; - Vector3d rotationOffset = Vector3d.ZERO; + public static abstract class GuiRenderBuilder extends RenderElement { + protected double xLocal, yLocal, zLocal; + protected double xRot, yRot, zRot; + protected double scale = 1; + protected int color = 0xFFFFFF; + protected Vector3d rotationOffset = Vector3d.ZERO; + protected boolean hasCustomLighting = false; + protected float lightingXRot, lightingYRot; public GuiRenderBuilder atLocal(double x, double y, double z) { - this.x = x; - this.y = y; - this.z = z; - return this; - } - - public GuiRenderBuilder at(double x, double y) { - this.xBeforeScale = x; - this.yBeforeScale = y; - return this; - } - - public GuiRenderBuilder at(double x, double y, double z) { - this.xBeforeScale = x; - this.yBeforeScale = y; - this.zBeforeScale = z; + this.xLocal = x; + this.yLocal = y; + this.zLocal = z; return this; } @@ -118,39 +109,31 @@ public class GuiGameElement { return this; } - public abstract void render(MatrixStack matrixStack); + public GuiRenderBuilder lighting(float xRot, float yRot) { + hasCustomLighting = true; + lightingXRot = xRot; + lightingYRot = yRot; + return this; + } - @Deprecated - protected void prepare() {} + public abstract void render(MatrixStack matrixStack); protected void prepareMatrix(MatrixStack matrixStack) { matrixStack.push(); - RenderSystem.enableBlend(); - RenderSystem.enableRescaleNormal(); - RenderSystem.enableAlphaTest(); - RenderHelper.enableGuiDepthLighting(); - RenderSystem.alphaFunc(516, 0.1F); - RenderSystem.blendFunc(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA); RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); - } - - @Deprecated - protected void transform() { - RenderSystem.translated(xBeforeScale, yBeforeScale, 0); - RenderSystem.scaled(scale, scale, scale); - RenderSystem.translated(x, y, z); - RenderSystem.scaled(1, -1, 1); - RenderSystem.translated(rotationOffset.x, rotationOffset.y, rotationOffset.z); - RenderSystem.rotatef((float) zRot, 0, 0, 1); - RenderSystem.rotatef((float) xRot, 1, 0, 0); - RenderSystem.rotatef((float) yRot, 0, 1, 0); - RenderSystem.translated(-rotationOffset.x, -rotationOffset.y, -rotationOffset.z); + RenderSystem.alphaFunc(516, 0.1F); + RenderSystem.enableAlphaTest(); + RenderSystem.blendFunc(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA); + RenderSystem.enableBlend(); + RenderSystem.enableDepthTest(); + RenderSystem.enableRescaleNormal(); + prepareLighting(matrixStack); } protected void transformMatrix(MatrixStack matrixStack) { - matrixStack.translate(xBeforeScale, yBeforeScale, zBeforeScale); - matrixStack.scale((float) scale, (float) scale, (float) scale); matrixStack.translate(x, y, z); + matrixStack.scale((float) scale, (float) scale, (float) scale); + matrixStack.translate(xLocal, yLocal, zLocal); matrixStack.scale(1, -1, 1); matrixStack.translate(rotationOffset.x, rotationOffset.y, rotationOffset.z); matrixStack.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion((float) zRot)); @@ -159,13 +142,18 @@ public class GuiGameElement { matrixStack.translate(-rotationOffset.x, -rotationOffset.y, -rotationOffset.z); } - @Deprecated - protected void cleanUp() {} - protected void cleanUpMatrix(MatrixStack matrixStack) { matrixStack.pop(); - RenderSystem.disableAlphaTest(); RenderSystem.disableRescaleNormal(); + RenderSystem.disableAlphaTest(); + cleanUpLighting(matrixStack); + } + + protected void prepareLighting(MatrixStack matrixStack) { + RenderHelper.enableGuiDepthLighting(); + } + + protected void cleanUpLighting(MatrixStack matrixStack) { } } @@ -211,6 +199,20 @@ public class GuiGameElement { 0xF000F0, OverlayTexture.DEFAULT_UV, VirtualEmptyModelData.INSTANCE); buffer.draw(); } + + @Override + protected void prepareLighting(MatrixStack matrixStack) { + if (hasCustomLighting) { + UIRenderHelper.setupSimpleCustomLighting(lightingXRot, lightingYRot); + } else { + UIRenderHelper.setupSimpleCustomLighting(defaultBlockLighting.x, defaultBlockLighting.y); + } + } + + @Override + protected void cleanUpLighting(MatrixStack matrixStack) { + RenderHelper.enableGuiDepthLighting(); + } } public static class GuiBlockStateRenderBuilder extends GuiBlockModelRenderBuilder { @@ -228,8 +230,8 @@ public class GuiGameElement { RenderHelper.disableGuiDepthLighting(); blockRenderer.renderBlock(blockState, ms, buffer, 0xF000F0, OverlayTexture.DEFAULT_UV, VirtualEmptyModelData.INSTANCE); - RenderHelper.enable(); buffer.draw(); + RenderHelper.enableGuiDepthLighting(); return; } @@ -272,23 +274,10 @@ public class GuiGameElement { @Override public void render(MatrixStack matrixStack) { prepareMatrix(matrixStack); -// matrixStack.translate(0, 80, 0); transformMatrix(matrixStack); renderItemIntoGUI(matrixStack, stack); cleanUpMatrix(matrixStack); } - /* - * public void render() { - * prepare(); - * transform(); - * RenderSystem.scaled(1, -1, 1); - * RenderSystem.translated(0, 0, -75); - * Minecraft.getInstance() - * .getItemRenderer() - * .renderItemIntoGUI(stack, 0, 0); - * cleanUp(); - * } - */ public static void renderItemIntoGUI(MatrixStack matrixStack, ItemStack stack) { ItemRenderer renderer = Minecraft.getInstance() @@ -308,19 +297,19 @@ public class GuiGameElement { matrixStack.translate((float) 0, (float) 0, 100.0F + renderer.zLevel); matrixStack.translate(8.0F, -8.0F, 0.0F); matrixStack.scale(16.0F, 16.0F, 16.0F); - IRenderTypeBuffer.Impl irendertypebuffer$impl = Minecraft.getInstance() + IRenderTypeBuffer.Impl buffer = Minecraft.getInstance() .getBufferBuilders() .getEntityVertexConsumers(); - boolean flag = !bakedModel.isSideLit(); - if (flag) { + boolean flatLighting = !bakedModel.isSideLit(); + if (flatLighting) { RenderHelper.disableGuiDepthLighting(); } renderer.renderItem(stack, ItemCameraTransforms.TransformType.GUI, false, matrixStack, - irendertypebuffer$impl, 15728880, OverlayTexture.DEFAULT_UV, bakedModel); - irendertypebuffer$impl.draw(); + buffer, 0xF000F0, OverlayTexture.DEFAULT_UV, bakedModel); + buffer.draw(); RenderSystem.enableDepthTest(); - if (flag) { + if (flatLighting) { RenderHelper.enableGuiDepthLighting(); } diff --git a/src/main/java/com/simibubi/create/foundation/gui/RenderElement.java b/src/main/java/com/simibubi/create/foundation/gui/RenderElement.java new file mode 100644 index 000000000..dcc6a3a0d --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/gui/RenderElement.java @@ -0,0 +1,92 @@ +package com.simibubi.create.foundation.gui; + +import com.mojang.blaze3d.matrix.MatrixStack; + +import net.minecraft.client.gui.AbstractGui; + +public abstract class RenderElement implements IScreenRenderable { + + public static RenderElement EMPTY = new RenderElement() {@Override public void render(MatrixStack ms) {}}; + + public static RenderElement of(IScreenRenderable renderable) { + return new SimpleRenderElement(renderable); + } + + protected int width = 16, height = 16; + protected float x = 0, y = 0, z = 0; + protected float alpha = 1f; + + public T at(float x, float y) { + this.x = x; + this.y = y; + //noinspection unchecked + return (T) this; + } + + public T at(float x, float y, float z) { + this.x = x; + this.y = y; + this.z = z; + //noinspection unchecked + return (T) this; + } + + public T withBounds(int width, int height) { + this.width = width; + this.height = height; + //noinspection unchecked + return (T) this; + } + + public T withAlpha(float alpha) { + this.alpha = alpha; + //noinspection unchecked + return (T) this; + } + + public int getWidth() { + return width; + } + + public int getHeight() { + return height; + } + + public float getX() { + return x; + } + + public float getY() { + return y; + } + + public float getZ() { + return z; + } + + public abstract void render(MatrixStack ms); + + @Override + public void draw(MatrixStack ms, AbstractGui screen, int x, int y) { + this.at(x, y).render(ms); + } + + @Override + public void draw(MatrixStack ms, int x, int y) { + this.at(x, y).render(ms); + } + + public static class SimpleRenderElement extends RenderElement { + + private IScreenRenderable renderable; + + public SimpleRenderElement(IScreenRenderable renderable) { + this.renderable = renderable; + } + + @Override + public void render(MatrixStack ms) { + renderable.draw(ms, (int) x, (int) y); + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/gui/ScreenOpener.java b/src/main/java/com/simibubi/create/foundation/gui/ScreenOpener.java index 9687042ab..cfe1aa1d1 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/ScreenOpener.java +++ b/src/main/java/com/simibubi/create/foundation/gui/ScreenOpener.java @@ -65,7 +65,7 @@ public class ScreenOpener { if (screenHistory.isEmpty()) return false; Screen previouslyRenderedScreen = screenHistory.get(0); - if (!(previouslyRenderedScreen instanceof AbstractSimiScreen)) + if (!(previouslyRenderedScreen instanceof NavigatableSimiScreen)) return false; if (!screen.isEquivalentTo((NavigatableSimiScreen) previouslyRenderedScreen)) return false; diff --git a/src/main/java/com/simibubi/create/foundation/gui/StencilElement.java b/src/main/java/com/simibubi/create/foundation/gui/StencilElement.java new file mode 100644 index 000000000..26677e053 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/gui/StencilElement.java @@ -0,0 +1,51 @@ +package com.simibubi.create.foundation.gui; + +import org.lwjgl.opengl.GL11; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.systems.RenderSystem; + +import net.minecraft.client.Minecraft; + +public abstract class StencilElement extends RenderElement { + + @Override + public void render(MatrixStack ms) { + ms.push(); + transform(ms); + prepareStencil(ms); + renderStencil(ms); + prepareElement(ms); + renderElement(ms); + cleanUp(ms); + ms.pop(); + } + + protected abstract void renderStencil(MatrixStack ms); + + protected abstract void renderElement(MatrixStack ms); + + protected void transform(MatrixStack ms) { + ms.translate(x, y, z); + } + + protected void prepareStencil(MatrixStack ms) { + GL11.glDisable(GL11.GL_STENCIL_TEST); + RenderSystem.stencilMask(~0); + RenderSystem.clear(GL11.GL_STENCIL_BUFFER_BIT, Minecraft.IS_RUNNING_ON_MAC); + GL11.glEnable(GL11.GL_STENCIL_TEST); + RenderSystem.stencilOp(GL11.GL_REPLACE, GL11.GL_KEEP, GL11.GL_KEEP); + RenderSystem.stencilMask(0xFF); + RenderSystem.stencilFunc(GL11.GL_NEVER, 1, 0xFF); + } + + protected void prepareElement(MatrixStack ms) { + GL11.glEnable(GL11.GL_STENCIL_TEST); + RenderSystem.stencilOp(GL11.GL_KEEP, GL11.GL_KEEP, GL11.GL_KEEP); + RenderSystem.stencilFunc(GL11.GL_EQUAL, 1, 0xFF); + } + + protected void cleanUp(MatrixStack ms) { + GL11.glDisable(GL11.GL_STENCIL_TEST); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/gui/TextStencilElement.java b/src/main/java/com/simibubi/create/foundation/gui/TextStencilElement.java new file mode 100644 index 000000000..c5d87543c --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/gui/TextStencilElement.java @@ -0,0 +1,79 @@ +package com.simibubi.create.foundation.gui; + +import com.mojang.blaze3d.matrix.MatrixStack; + +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.util.text.IFormattableTextComponent; +import net.minecraft.util.text.StringTextComponent; + +public class TextStencilElement extends DelegatedStencilElement { + + protected FontRenderer font; + protected IFormattableTextComponent component; + protected boolean centerVertically = false; + protected boolean centerHorizontally = false; + + public TextStencilElement(FontRenderer font) { + super(); + this.font = font; + height = 10; + } + + public TextStencilElement(FontRenderer font, String text) { + this(font); + component = new StringTextComponent(text); + } + + public TextStencilElement(FontRenderer font, IFormattableTextComponent component) { + this(font); + this.component = component; + } + + public TextStencilElement withText(String text) { + component = new StringTextComponent(text); + return this; + } + + public TextStencilElement withText(IFormattableTextComponent component) { + this.component = component; + return this; + } + + public TextStencilElement centered(boolean vertical, boolean horizontal) { + this.centerVertically = vertical; + this.centerHorizontally = horizontal; + return this; + } + + @Override + protected void renderStencil(MatrixStack ms) { + + float x = 0, y = 0; + if (centerHorizontally) + x = width / 2f - font.getWidth(component) / 2f; + + if (centerVertically) + y = height / 2f - font.FONT_HEIGHT / 2f; + + font.draw(ms, component, x, y, 0xff_000000); + } + + @Override + protected void renderElement(MatrixStack ms) { + float x = 0, y = 0; + if (centerHorizontally) + x = width / 2f - font.getWidth(component) / 2f; + + if (centerVertically) + y = height / 2f - font.FONT_HEIGHT / 2f; + + ms.push(); + ms.translate(x, y, 0); + element.render(ms, font.getWidth(component), font.FONT_HEIGHT + 2, alpha); + ms.pop(); + } + + public IFormattableTextComponent getComponent() { + return component; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/gui/Theme.java b/src/main/java/com/simibubi/create/foundation/gui/Theme.java new file mode 100644 index 000000000..0f6f0155e --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/gui/Theme.java @@ -0,0 +1,177 @@ +package com.simibubi.create.foundation.gui; + +import java.awt.Color; +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +import com.simibubi.create.foundation.utility.Couple; + +public class Theme { + + private static final Theme base = new Theme(); + private static Theme custom = null; + + public static void setTheme(@Nullable Theme theme) { + custom = theme; + } + + private static ColorHolder resolve(String key) { + ColorHolder h = null; + + if (custom != null) + h = custom.get(key); + + if (h == null) + h = base.get(key); + + if (h == null) + h = ColorHolder.missing; + + return h; + } + + @Nonnull public static Couple p(@Nonnull Key key) {return p(key.get());} + @Nonnull public static Couple p(String key) {return resolve(key).asPair();} + + @Nonnull public static Color c(@Nonnull Key key, boolean first) {return c(key.get(), first);} + @Nonnull public static Color c(String key, boolean first) {return p(key).get(first);} + + public static int i(@Nonnull Key key, boolean first) {return i(key.get(), first);} + public static int i(String key, boolean first) {return p(key).get(first).getRGB();} + + @Nonnull public static Color c(@Nonnull Key key) {return c(key.get());} + @Nonnull public static Color c(String key) {return resolve(key).get();} + + public static int i(@Nonnull Key key) {return i(key.get());} + public static int i(String key) {return resolve(key).get().getRGB();} + + //-----------// + + protected final Map colors; + + protected Theme() { + colors = new HashMap<>(); + init(); + } + + protected void init() { + put(Key.BUTTON_IDLE, new Color(0x60_c0c0ff, true), new Color(0x30_c0c0ff, true)); + put(Key.BUTTON_HOVER, new Color(0xa0_c0c0ff, true), new Color(0x50_c0c0ff, true)); + put(Key.BUTTON_CLICK, new Color(0xff_4b4bff), new Color(0xff_3b3bdd)); + put(Key.BUTTON_DISABLE, new Color(0x80_909090, true), new Color(0x20_909090, true)); + put(Key.BUTTON_SUCCESS, new Color(0xcc_88f788, true), new Color(0xcc_20cc20, true)); + put(Key.BUTTON_FAIL, new Color(0xcc_f78888, true), new Color(0xcc_cc2020, true)); + put(Key.TEXT, new Color(0xff_eeeeee), new Color(0xff_a3a3a3)); + put(Key.TEXT_DARKER, new Color(0xff_a3a3a3), new Color(0xff_808080)); + put(Key.TEXT_ACCENT_STRONG, new Color(0xff_7b7ba3), new Color(0xff_616192)); + put(Key.TEXT_ACCENT_SLIGHT, new Color(0xff_ddeeff), new Color(0xff_a0b0c0)); + put(Key.STREAK, new Color(0x101010, false)); + + put(Key.PONDER_BACKGROUND_TRANSPARENT, new Color(0xdd_000000, true)); + put(Key.PONDER_BACKGROUND_FLAT, new Color(0xff_000000, false)); + put(Key.PONDER_IDLE, new Color(0x40ffeedd, true), new Color(0x20ffeedd, true)); + put(Key.PONDER_HOVER, new Color(0x70ffffff, true), new Color(0x30ffffff, true)); + put(Key.PONDER_HIGHLIGHT, new Color(0xf0ffeedd, true), new Color(0x60ffeedd, true)); + put(Key.TEXT_WINDOW_BORDER, new Color(0x607a6000, true), new Color(0x207a6000, true)); + put(Key.PONDER_BACK_ARROW, new Color(0x70aa9999, true), new Color(0x30aa9999, true)); + put(Key.PONDER_PROGRESSBAR, new Color(0x80ffeedd, true), new Color(0x50ffeedd, true)); + put(Key.PONDER_MISSING_CREATE, new Color(0x70_984500, true), new Color(0x70_692400, true)); + put(Key.PONDER_MISSING_VANILLA, new Color(0x50_5000ff, true), new Color(0x50_300077, true)); + //put(Key., new Color(0x, true), new Color(0x, true)); + } + + protected void put(String key, Color c) { + colors.put(key, ColorHolder.single(c)); + } + + protected void put(Key key, Color c) { + put(key.get(), c); + } + + protected void put(String key, Color c1, Color c2) { + colors.put(key, ColorHolder.pair(c1, c2)); + } + + protected void put(Key key, Color c1, Color c2) { + put(key.get(), c1 , c2); + } + + @Nullable protected ColorHolder get(String key) { + return colors.get(key); + } + + public static class Key { + + public static Key BUTTON_IDLE = new Key(); + public static Key BUTTON_HOVER = new Key(); + public static Key BUTTON_CLICK = new Key(); + public static Key BUTTON_DISABLE = new Key(); + public static Key BUTTON_SUCCESS = new Key(); + public static Key BUTTON_FAIL = new Key(); + + public static Key TEXT = new Key(); + public static Key TEXT_DARKER = new Key(); + public static Key TEXT_ACCENT_STRONG = new Key(); + public static Key TEXT_ACCENT_SLIGHT = new Key(); + + public static Key STREAK = new Key(); + + public static Key PONDER_BACKGROUND_TRANSPARENT = new Key(); + public static Key PONDER_BACKGROUND_FLAT = new Key(); + public static Key PONDER_IDLE = new Key(); + public static Key PONDER_HOVER = new Key(); + public static Key PONDER_HIGHLIGHT = new Key(); + public static Key TEXT_WINDOW_BORDER = new Key(); + public static Key PONDER_BACK_ARROW = new Key(); + public static Key PONDER_PROGRESSBAR = new Key(); + public static Key PONDER_MISSING_CREATE = new Key(); + public static Key PONDER_MISSING_VANILLA = new Key(); + + private static int index = 0; + + private final String s; + + protected Key() { + this.s = "_" + index++; + } + + protected Key(String s) { + this.s = s; + } + + public String get() { + return s; + } + } + + private static class ColorHolder { + + private static final ColorHolder missing = ColorHolder.single(Color.BLACK); + + private Couple colors; + + private static ColorHolder single(Color c) { + ColorHolder h = new ColorHolder(); + h.colors = Couple.create(c, c); + return h; + } + + private static ColorHolder pair(Color first, Color second) { + ColorHolder h = new ColorHolder(); + h.colors = Couple.create(first, second); + return h; + } + + private Color get() { + return colors.getFirst(); + } + + private Couple asPair() { + return colors; + } + + } +} diff --git a/src/main/java/com/simibubi/create/foundation/gui/UIRenderHelper.java b/src/main/java/com/simibubi/create/foundation/gui/UIRenderHelper.java index e177813cf..fee8e48c6 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/UIRenderHelper.java +++ b/src/main/java/com/simibubi/create/foundation/gui/UIRenderHelper.java @@ -1,15 +1,22 @@ package com.simibubi.create.foundation.gui; +import java.awt.Color; + +import javax.annotation.Nonnull; + import org.lwjgl.opengl.GL11; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.systems.RenderSystem; import com.simibubi.create.foundation.utility.ColorHelper; +import com.simibubi.create.foundation.utility.Couple; +import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.client.MainWindow; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.WorldVertexBufferUploader; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.shader.Framebuffer; import net.minecraft.util.math.vector.Matrix4f; @@ -18,32 +25,26 @@ import net.minecraftforge.fml.client.gui.GuiUtils; public class UIRenderHelper { + public static void enableStencil() { + RenderSystem.recordRenderCall(() -> Minecraft.getInstance().getFramebuffer().enableStencil()); + } + public static Framebuffer framebuffer; public static void init() { RenderSystem.recordRenderCall(() -> { MainWindow mainWindow = Minecraft.getInstance() - .getWindow(); + .getWindow(); framebuffer = new Framebuffer(mainWindow.getFramebufferWidth(), mainWindow.getFramebufferHeight(), true, - Minecraft.IS_RUNNING_ON_MAC); + Minecraft.IS_RUNNING_ON_MAC); framebuffer.setFramebufferColor(0, 0, 0, 0); -// framebuffer.deleteFramebuffer(); + framebuffer.enableStencil(); }); } - public static void prepFramebufferSize() { - MainWindow window = Minecraft.getInstance() - .getWindow(); - if (framebuffer.framebufferWidth != window.getFramebufferWidth() - || framebuffer.framebufferHeight != window.getFramebufferHeight()) { - framebuffer.func_216491_a(window.getFramebufferWidth(), window.getFramebufferHeight(), - Minecraft.IS_RUNNING_ON_MAC); - } - } - public static void drawFramebuffer(float alpha) { MainWindow window = Minecraft.getInstance() - .getWindow(); + .getWindow(); float vx = (float) window.getScaledWidth(); float vy = (float) window.getScaledHeight(); @@ -51,10 +52,6 @@ public class UIRenderHelper { float ty = (float) framebuffer.framebufferHeight / (float) framebuffer.framebufferTextureHeight; RenderSystem.enableTexture(); - RenderSystem.enableBlend(); - RenderSystem.disableLighting(); - RenderSystem.disableAlphaTest(); - RenderSystem.defaultBlendFunc(); RenderSystem.enableDepthTest(); framebuffer.bindFramebufferTexture(); @@ -63,33 +60,21 @@ public class UIRenderHelper { BufferBuilder bufferbuilder = tessellator.getBuffer(); bufferbuilder.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR_TEXTURE); - bufferbuilder.vertex(0, vy, 0) - .color(1, 1, 1, alpha) - .texture(0, 0) - .endVertex(); - bufferbuilder.vertex(vx, vy, 0) - .color(1, 1, 1, alpha) - .texture(tx, 0) - .endVertex(); - bufferbuilder.vertex(vx, 0, 0) - .color(1, 1, 1, alpha) - .texture(tx, ty) - .endVertex(); - bufferbuilder.vertex(0, 0, 0) - .color(1, 1, 1, alpha) - .texture(0, ty) - .endVertex(); + bufferbuilder.vertex(0, vy, 0).color(1, 1, 1, alpha).texture(0, 0).endVertex(); + bufferbuilder.vertex(vx, vy, 0).color(1, 1, 1, alpha).texture(tx, 0).endVertex(); + bufferbuilder.vertex(vx, 0, 0).color(1, 1, 1, alpha).texture(tx, ty).endVertex(); + bufferbuilder.vertex(0, 0, 0).color(1, 1, 1, alpha).texture(0, ty).endVertex(); tessellator.draw(); framebuffer.unbindFramebufferTexture(); - RenderSystem.disableBlend(); - RenderSystem.enableAlphaTest(); } + public static void streak(MatrixStack ms, float angle, int x, int y, int breadth, int length) {streak(ms, angle, x, y, breadth, length, Theme.i(Theme.Key.STREAK));} + // angle in degrees; 0° -> fading to the right // x and y specify the middle point of the starting edge - // width is the total width of the streak - public static void streak(MatrixStack ms, float angle, int x, int y, int width, int length, int color) { + // breadth is the total width of the streak + public static void streak(MatrixStack ms, float angle, int x, int y, int breadth, int length, int color) { int a1 = 0xa0 << 24; int a2 = 0x80 << 24; int a3 = 0x10 << 24; @@ -105,7 +90,7 @@ public class UIRenderHelper { ms.translate(x, y, 0); ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(angle - 90)); - streak(ms, width / 2, length, c1, c2, c3, c4); + streak(ms, breadth / 2, length, c1, c2, c3, c4); ms.pop(); } @@ -113,16 +98,59 @@ public class UIRenderHelper { private static void streak(MatrixStack ms, int width, int height, int c1, int c2, int c3, int c4) { double split1 = .5; double split2 = .75; - Matrix4f model = ms.peek() - .getModel(); + Matrix4f model = ms.peek().getModel(); + RenderSystem.disableAlphaTest(); GuiUtils.drawGradientRect(model, 0, -width, 0, width, (int) (split1 * height), c1, c2); GuiUtils.drawGradientRect(model, 0, -width, (int) (split1 * height), width, (int) (split2 * height), c2, c3); GuiUtils.drawGradientRect(model, 0, -width, (int) (split2 * height), width, height, c3, c4); + RenderSystem.enableAlphaTest(); } + /** + * @see #angledGradient(MatrixStack, float, int, int, int, int, int, int, int) + */ + public static void angledGradient(@Nonnull MatrixStack ms, float angle, int x, int y, int breadth, int length, Couple c) { + angledGradient(ms, angle, x, y, 0, breadth, length, c); + } + + /** + * @see #angledGradient(MatrixStack, float, int, int, int, int, int, int, int) + */ + public static void angledGradient(@Nonnull MatrixStack ms, float angle, int x, int y, int z, int breadth, int length, Couple c) { + angledGradient(ms, angle, x, y, z, breadth, length, c.getFirst().getRGB(), c.getSecond().getRGB()); + } + + /** + * @see #angledGradient(MatrixStack, float, int, int, int, int, int, int, int) + */ + public static void angledGradient(@Nonnull MatrixStack ms, float angle, int x, int y, int breadth, int length, int color1, int color2) { + angledGradient(ms, angle, x, y, 0, breadth, length, color1, color2); + } + + /** + * x and y specify the middle point of the starting edge + * + * @param angle the angle of the gradient in degrees; 0° means from left to right + * @param color1 the color at the starting edge + * @param color2 the color at the ending edge + * @param breadth the total width of the gradient + */ + public static void angledGradient(@Nonnull MatrixStack ms, float angle, int x, int y, int z, int breadth, int length, int color1, int color2) { + ms.push(); + ms.translate(x, y, z); + ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(angle - 90)); + + Matrix4f model = ms.peek().getModel(); + int w = breadth / 2; + GuiUtils.drawGradientRect(model, 0, -w, 0, w, length, color1, color2); + + ms.pop(); + } + + public static void breadcrumbArrow(MatrixStack matrixStack, int x, int y, int z, int width, int height, int indent, Couple colors) {breadcrumbArrow(matrixStack, x, y, z, width, height, indent, colors.getFirst().getRGB(), colors.getSecond().getRGB());} + // draws a wide chevron-style breadcrumb arrow pointing left - public static void breadcrumbArrow(MatrixStack matrixStack, int x, int y, int z, int width, int height, int indent, - int startColor, int endColor) { + public static void breadcrumbArrow(MatrixStack matrixStack, int x, int y, int z, int width, int height, int indent, int startColor, int endColor) { matrixStack.push(); matrixStack.translate(x - indent, y, z); @@ -134,13 +162,13 @@ public class UIRenderHelper { private static void breadcrumbArrow(MatrixStack ms, int width, int height, int indent, int c1, int c2) { /* - * 0,0 x1,y1 ********************* x4,y4 ***** x7,y7 - * **** **** - * **** **** - * x0,y0 x2,y2 x5,y5 - * **** **** - * **** **** - * x3,y3 ********************* x6,y6 ***** x8,y8 + * 0,0 x1,y1 ********************* x4,y4 ***** x7,y7 + * **** **** + * **** **** + * x0,y0 x2,y2 x5,y5 + * **** **** + * **** **** + * x3,y3 ********************* x6,y6 ***** x8,y8 * */ @@ -170,69 +198,32 @@ public class UIRenderHelper { Tessellator tessellator = Tessellator.getInstance(); BufferBuilder bufferbuilder = tessellator.getBuffer(); - Matrix4f model = ms.peek() - .getModel(); + Matrix4f model = ms.peek().getModel(); bufferbuilder.begin(GL11.GL_TRIANGLES, DefaultVertexFormats.POSITION_COLOR); - bufferbuilder.vertex(model, x0, y0, 0) - .color(fc1 >> 16 & 0xFF, fc1 >> 8 & 0xFF, fc1 & 0xFF, fc1 >> 24 & 0xFF) - .endVertex(); - bufferbuilder.vertex(model, x1, y1, 0) - .color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF) - .endVertex(); - bufferbuilder.vertex(model, x2, y2, 0) - .color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF) - .endVertex(); + bufferbuilder.vertex(model, x0, y0, 0).color(fc1 >> 16 & 0xFF, fc1 >> 8 & 0xFF, fc1 & 0xFF, fc1 >> 24 & 0xFF).endVertex(); + bufferbuilder.vertex(model, x1, y1, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex(); + bufferbuilder.vertex(model, x2, y2, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x0, y0, 0) - .color(fc1 >> 16 & 0xFF, fc1 >> 8 & 0xFF, fc1 & 0xFF, fc1 >> 24 & 0xFF) - .endVertex(); - bufferbuilder.vertex(model, x2, y2, 0) - .color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF) - .endVertex(); - bufferbuilder.vertex(model, x3, y3, 0) - .color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF) - .endVertex(); + bufferbuilder.vertex(model, x0, y0, 0).color(fc1 >> 16 & 0xFF, fc1 >> 8 & 0xFF, fc1 & 0xFF, fc1 >> 24 & 0xFF).endVertex(); + bufferbuilder.vertex(model, x2, y2, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex(); + bufferbuilder.vertex(model, x3, y3, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x3, y3, 0) - .color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF) - .endVertex(); - bufferbuilder.vertex(model, x1, y1, 0) - .color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF) - .endVertex(); - bufferbuilder.vertex(model, x4, y4, 0) - .color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF) - .endVertex(); + bufferbuilder.vertex(model, x3, y3, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex(); + bufferbuilder.vertex(model, x1, y1, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex(); + bufferbuilder.vertex(model, x4, y4, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x3, y3, 0) - .color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF) - .endVertex(); - bufferbuilder.vertex(model, x4, y4, 0) - .color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF) - .endVertex(); - bufferbuilder.vertex(model, x6, y6, 0) - .color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF) - .endVertex(); + bufferbuilder.vertex(model, x3, y3, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex(); + bufferbuilder.vertex(model, x4, y4, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex(); + bufferbuilder.vertex(model, x6, y6, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x5, y5, 0) - .color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF) - .endVertex(); - bufferbuilder.vertex(model, x4, y4, 0) - .color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF) - .endVertex(); - bufferbuilder.vertex(model, x7, y7, 0) - .color(fc4 >> 16 & 0xFF, fc4 >> 8 & 0xFF, fc4 & 0xFF, fc4 >> 24 & 0xFF) - .endVertex(); + bufferbuilder.vertex(model, x5, y5, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex(); + bufferbuilder.vertex(model, x4, y4, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex(); + bufferbuilder.vertex(model, x7, y7, 0).color(fc4 >> 16 & 0xFF, fc4 >> 8 & 0xFF, fc4 & 0xFF, fc4 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x6, y6, 0) - .color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF) - .endVertex(); - bufferbuilder.vertex(model, x5, y5, 0) - .color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF) - .endVertex(); - bufferbuilder.vertex(model, x8, y8, 0) - .color(fc4 >> 16 & 0xFF, fc4 >> 8 & 0xFF, fc4 & 0xFF, fc4 >> 24 & 0xFF) - .endVertex(); + bufferbuilder.vertex(model, x6, y6, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex(); + bufferbuilder.vertex(model, x5, y5, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex(); + bufferbuilder.vertex(model, x8, y8, 0).color(fc4 >> 16 & 0xFF, fc4 >> 8 & 0xFF, fc4 & 0xFF, fc4 >> 24 & 0xFF).endVertex(); tessellator.draw(); RenderSystem.shadeModel(GL11.GL_FLAT); @@ -241,4 +232,40 @@ public class UIRenderHelper { RenderSystem.enableAlphaTest(); RenderSystem.enableTexture(); } + + //just like AbstractGui#drawTexture, but with a color at every vertex + public static void drawColoredTexture(MatrixStack ms, Color c, int x, int y, int tex_left, int tex_top, int width, int height) { + drawColoredTexture(ms, c, x, y, 0, (float) tex_left, (float) tex_top, width, height, 256, 256); + } + + public static void drawColoredTexture(MatrixStack ms, Color c, int x, int y, int z, float tex_left, float tex_top, int width, int height, int sheet_width, int sheet_height) { + drawColoredTexture(ms, c, x, x + width, y, y + height, z, width, height, tex_left, tex_top, sheet_width, sheet_height); + } + + private static void drawColoredTexture(MatrixStack ms, Color c, int left, int right, int top, int bot, int z, int tex_width, int tex_height, float tex_left, float tex_top, int sheet_width, int sheet_height) { + drawTexturedQuad(ms.peek().getModel(), c, left, right, top, bot, z, (tex_left + 0.0F) / (float) sheet_width, (tex_left + (float) tex_width) / (float) sheet_width, (tex_top + 0.0F) / (float) sheet_height, (tex_top + (float) tex_height) / (float) sheet_height); + } + + private static void drawTexturedQuad(Matrix4f m, Color c, int left, int right, int top, int bot, int z, float u1, float u2, float v1, float v2) { + RenderSystem.enableBlend(); + BufferBuilder bufferbuilder = Tessellator.getInstance().getBuffer(); + bufferbuilder.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR_TEXTURE); + bufferbuilder.vertex(m, (float) left , (float) bot, (float) z).color(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha()).texture(u1, v2).endVertex(); + bufferbuilder.vertex(m, (float) right, (float) bot, (float) z).color(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha()).texture(u2, v2).endVertex(); + bufferbuilder.vertex(m, (float) right, (float) top, (float) z).color(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha()).texture(u2, v1).endVertex(); + bufferbuilder.vertex(m, (float) left , (float) top, (float) z).color(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha()).texture(u1, v1).endVertex(); + bufferbuilder.finishDrawing(); + RenderSystem.enableAlphaTest(); + WorldVertexBufferUploader.draw(bufferbuilder); + } + + public static void setupSimpleCustomLighting(float xRot, float yRot) { + Matrix4f lightingMatrix = new Matrix4f(); + lightingMatrix.loadIdentity(); + lightingMatrix.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(yRot)); + lightingMatrix.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(xRot)); + lightingMatrix.multiply(Matrix4f.translate(0, 0, 1)); + RenderSystem.setupLevelDiffuseLighting(VecHelper.ZERO_3F, VecHelper.ZERO_3F, lightingMatrix); + } + } diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/AbstractSimiWidget.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/AbstractSimiWidget.java index 2c84c9ccf..f8539a3d3 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/AbstractSimiWidget.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widgets/AbstractSimiWidget.java @@ -2,6 +2,9 @@ package com.simibubi.create.foundation.gui.widgets; import java.util.LinkedList; import java.util.List; +import java.util.function.BiConsumer; + +import javax.annotation.Nonnull; import com.mojang.blaze3d.matrix.MatrixStack; @@ -11,19 +14,78 @@ import net.minecraft.util.text.StringTextComponent; public abstract class AbstractSimiWidget extends Widget { - protected List toolTip; - - public AbstractSimiWidget(int xIn, int yIn, int widthIn, int heightIn) { - super(xIn, yIn, widthIn, heightIn, StringTextComponent.EMPTY); - toolTip = new LinkedList<>(); + protected float z; + protected boolean wasHovered = false; + protected List toolTip = new LinkedList<>(); + protected BiConsumer onClick = (_$, _$$) -> {}; + + protected AbstractSimiWidget() { + this(0, 0); } - + + protected AbstractSimiWidget(int x, int y) { + this(x, y, 16, 16); + } + + protected AbstractSimiWidget(int x, int y, int width, int height) { + super(x, y, width, height, StringTextComponent.EMPTY); + } + + public T withCallback(BiConsumer cb) { + this.onClick = cb; + //noinspection unchecked + return (T) this; + } + + public T withCallback(Runnable cb) { + return withCallback((_$, _$$) -> cb.run()); + } + + public T atZLevel(float z) { + this.z = z; + //noinspection unchecked + return (T) this; + } + public List getToolTip() { return toolTip; } - + + public void tick() {} + @Override - public void renderButton(MatrixStack matrixStack, int p_renderButton_1_, int p_renderButton_2_, float p_renderButton_3_) { + public void render(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + if (visible) { + hovered = isMouseOver(mouseX, mouseY); + beforeRender(ms, mouseX, mouseY, partialTicks); + renderButton(ms, mouseX, mouseY, partialTicks); + afterRender(ms, mouseX, mouseY, partialTicks); + wasHovered = isHovered(); + } } + @Override + public void renderButton(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) {} + + @Override + protected boolean clicked(double mouseX, double mouseY) { + return active && visible && isMouseOver(mouseX, mouseY); + } + + protected void beforeRender(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + ms.push(); + } + + protected void afterRender(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + ms.pop(); + } + + public void runCallback(double mouseX, double mouseY) { + onClick.accept((int) mouseX, (int) mouseY); + } + + @Override + public void onClick(double mouseX, double mouseY) { + runCallback(mouseX, mouseY); + } } diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/BoxWidget.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/BoxWidget.java new file mode 100644 index 000000000..07b35d4f9 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/gui/widgets/BoxWidget.java @@ -0,0 +1,197 @@ +package com.simibubi.create.foundation.gui.widgets; + +import java.awt.Color; +import java.util.function.Function; + +import javax.annotation.Nonnull; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.gui.BoxElement; +import com.simibubi.create.foundation.gui.DelegatedStencilElement; +import com.simibubi.create.foundation.gui.Theme; +import com.simibubi.create.foundation.gui.UIRenderHelper; +import com.simibubi.create.foundation.utility.ColorHelper; +import com.simibubi.create.foundation.utility.Couple; +import com.simibubi.create.foundation.utility.animation.LerpedFloat; + +public class BoxWidget extends ElementWidget { + + public static final Function gradientFactory = (box) -> (ms, w, h, alpha) -> UIRenderHelper.angledGradient(ms, 90, w/2, -2, w + 4, h + 4, box.gradientColor1.getRGB(), box.gradientColor2.getRGB()); + + protected BoxElement box; + + protected Color customBorderTop; + protected Color customBorderBot; + protected boolean animateColors = true; + protected LerpedFloat colorAnimation = LerpedFloat.linear(); + protected Color gradientColor1, gradientColor2; + private Color colorTarget1 = Theme.c(Theme.Key.BUTTON_IDLE, true), colorTarget2 = Theme.c(Theme.Key.BUTTON_IDLE, false); + private Color previousColor1, previousColor2; + + public BoxWidget() { + this(0, 0); + } + + public BoxWidget(int x, int y) { + this(x, y, 16, 16); + } + + public BoxWidget(int x, int y, int width, int height) { + super(x, y, width, height); + box = new BoxElement() + .at(x, y) + .withBounds(width, height); + gradientColor1 = colorTarget1; + gradientColor2 = colorTarget2; + } + + public T withBounds(int width, int height) { + this.width = width; + this.height = height; + //noinspection unchecked + return (T) this; + } + + public T withBorderColors(Couple colors) { + this.customBorderTop = colors.getFirst(); + this.customBorderBot = colors.getSecond(); + updateColorsFromState(); + //noinspection unchecked + return (T) this; + } + + public T withBorderColors(Color top, Color bot) { + this.customBorderTop = top; + this.customBorderBot = bot; + updateColorsFromState(); + //noinspection unchecked + return (T) this; + } + + public T animateColors(boolean b) { + this.animateColors = b; + //noinspection unchecked + return (T) this; + } + + @Override + public void tick() { + super.tick(); + colorAnimation.tickChaser(); + } + + @Override + public void onClick(double x, double y) { + super.onClick(x, y); + + gradientColor1 = Theme.c(Theme.Key.BUTTON_CLICK, true); + gradientColor2 = Theme.c(Theme.Key.BUTTON_CLICK, true); + startGradientAnimation(getColorForState(true), getColorForState(false), true, 0.15); + } + + @Override + protected void beforeRender(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + super.beforeRender(ms, mouseX, mouseY, partialTicks); + + if (hovered != wasHovered) { + startGradientAnimation( + getColorForState(true), + getColorForState(false), + hovered + ); + } + + if (colorAnimation.settled()) { + gradientColor1 = colorTarget1; + gradientColor2 = colorTarget2; + } else { + float animationValue = 1 - Math.abs(colorAnimation.getValue(partialTicks)); + gradientColor1 = ColorHelper.mixColors(previousColor1, colorTarget1, animationValue); + gradientColor2 = ColorHelper.mixColors(previousColor2, colorTarget2, animationValue); + } + + } + + @Override + public void renderButton(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + float fadeValue = fade.getValue(partialTicks); + if (fadeValue < .1f) + return; + + box.withAlpha(fadeValue); + box.withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_TRANSPARENT)) + .gradientBorder(gradientColor1, gradientColor2) + .at(x, y, z) + .withBounds(width, height) + .render(ms); + + super.renderButton(ms, mouseX, mouseY, partialTicks); + + wasHovered = hovered; + } + + @Override + public boolean isMouseOver(double mX, double mY) { + if (!active || !visible) + return false; + + return + x - 4 <= mX && + y - 4 <= mY && + mX <= x + 4 + width && + mY <= y + 4 + height; + } + + public BoxElement getBox() { + return box; + } + + public void updateColorsFromState() { + colorTarget1 = getColorForState(true); + colorTarget2 = getColorForState(false); + } + + public void animateGradientFromState() { + startGradientAnimation( + getColorForState(true), + getColorForState(false), + true + ); + } + + private void startGradientAnimation(Color c1, Color c2, boolean positive, double expSpeed) { + if (!animateColors) + return; + + colorAnimation.startWithValue(positive ? 1 : -1); + colorAnimation.chase(0, expSpeed, LerpedFloat.Chaser.EXP); + colorAnimation.tickChaser(); + + previousColor1 = gradientColor1; + previousColor2 = gradientColor2; + + colorTarget1 = c1; + colorTarget2 = c2; + } + + private void startGradientAnimation(Color c1, Color c2, boolean positive) { + startGradientAnimation(c1, c2, positive, 0.3); + } + + private Color getColorForState(boolean first) { + if (!active) + return Theme.p(Theme.Key.BUTTON_DISABLE).get(first); + + if (hovered) { + if (first) + return customBorderTop != null ? customBorderTop.darker() : Theme.c(Theme.Key.BUTTON_HOVER, true); + else + return customBorderBot != null ? customBorderBot.darker() : Theme.c(Theme.Key.BUTTON_HOVER, false); + } + + if (first) + return customBorderTop != null ? customBorderTop : Theme.c(Theme.Key.BUTTON_IDLE, true); + else + return customBorderBot != null ? customBorderBot : Theme.c(Theme.Key.BUTTON_IDLE, false); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/ElementWidget.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/ElementWidget.java new file mode 100644 index 000000000..499e81587 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/gui/widgets/ElementWidget.java @@ -0,0 +1,144 @@ +package com.simibubi.create.foundation.gui.widgets; + +import java.util.function.Consumer; +import java.util.function.UnaryOperator; + +import javax.annotation.Nonnull; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.gui.IScreenRenderable; +import com.simibubi.create.foundation.gui.RenderElement; +import com.simibubi.create.foundation.utility.animation.LerpedFloat; + +public class ElementWidget extends AbstractSimiWidget { + + protected RenderElement element = RenderElement.EMPTY; + + protected boolean usesFade = false; + protected int fadeModX; + protected int fadeModY; + protected LerpedFloat fade = LerpedFloat.linear().startWithValue(1); + + protected boolean rescaleElement = false; + protected float rescaleSizeX; + protected float rescaleSizeY; + + protected float paddingX = 0; + protected float paddingY = 0; + + public ElementWidget(int x, int y) { + super(x, y); + } + + public ElementWidget(int x, int y, int width, int height) { + super(x, y, width, height); + } + + public T showingElement(RenderElement element) { + this.element = element; + //noinspection unchecked + return (T) this; + } + + public T showing(IScreenRenderable renderable) { + return this.showingElement(RenderElement.of(renderable)); + } + + public T modifyElement(Consumer consumer) { + if (element != null) + consumer.accept(element); + //noinspection unchecked + return (T) this; + } + + public T mapElement(UnaryOperator function) { + if (element != null) + element = function.apply(element); + //noinspection unchecked + return (T) this; + } + + public T withPadding(float paddingX, float paddingY) { + this.paddingX = paddingX; + this.paddingY = paddingY; + //noinspection unchecked + return (T) this; + } + + public T enableFade(int fadeModifierX, int fadeModifierY) { + this.fade.startWithValue(0); + this.usesFade = true; + this.fadeModX = fadeModifierX; + this.fadeModY = fadeModifierY; + //noinspection unchecked + return (T) this; + } + + public T disableFade() { + this.fade.startWithValue(1); + this.usesFade = false; + //noinspection unchecked + return (T) this; + } + + public LerpedFloat fade() { + return fade; + } + + public T fade(float target) { + fade.chase(target, 0.1, LerpedFloat.Chaser.EXP); + //noinspection unchecked + return (T) this; + } + + public T rescaleElement(float rescaleSizeX, float rescaleSizeY) { + this.rescaleElement = true; + this.rescaleSizeX = rescaleSizeX; + this.rescaleSizeY = rescaleSizeY; + //noinspection unchecked + return (T) this; + } + + public T disableRescale() { + this.rescaleElement = false; + //noinspection unchecked + return (T) this; + } + + @Override + public void tick() { + super.tick(); + fade.tickChaser(); + } + + @Override + protected void beforeRender(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + super.beforeRender(ms, mouseX, mouseY, partialTicks); + + float fadeValue = fade.getValue(partialTicks); + element.withAlpha(fadeValue); + if (fadeValue < 1) { + ms.translate((1 - fadeValue) * fadeModX, (1 - fadeValue) * fadeModY, 0); + } + } + + @Override + public void renderButton(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + ms.push(); + ms.translate(x + paddingX, y + paddingY, z); + float innerWidth = width - 2 * paddingX; + float innerHeight = height - 2 * paddingY; + if (rescaleElement) { + float xScale = innerWidth / rescaleSizeX; + float yScale = innerHeight / rescaleSizeY; + ms.scale(xScale, yScale, 1); + element.at(element.getX() / xScale, element.getY() / yScale); + } + element.withBounds((int) innerWidth, (int) innerHeight).render(ms); + ms.pop(); + } + + public RenderElement getRenderElement() { + return element; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/IconButton.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/IconButton.java index a97e125f2..3b553b729 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/IconButton.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widgets/IconButton.java @@ -7,6 +7,8 @@ import com.simibubi.create.foundation.gui.AllIcons; import net.minecraft.util.text.ITextComponent; +import javax.annotation.Nonnull; + public class IconButton extends AbstractSimiWidget { private AllIcons icon; @@ -18,7 +20,7 @@ public class IconButton extends AbstractSimiWidget { } @Override - public void renderButton(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { + public void renderButton(@Nonnull MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { if (this.visible) { this.hovered = mouseX >= this.x && mouseY >= this.y && mouseX < this.x + this.width && mouseY < this.y + this.height; diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/Indicator.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/Indicator.java index 25df71cb1..627d6b017 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/Indicator.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widgets/Indicator.java @@ -1,5 +1,7 @@ package com.simibubi.create.foundation.gui.widgets; +import javax.annotation.Nonnull; + import com.google.common.collect.ImmutableList; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.foundation.gui.AllGuiTextures; @@ -22,7 +24,7 @@ public class Indicator extends AbstractSimiWidget { } @Override - public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks ) { + public void render(@Nonnull MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks ) { AllGuiTextures toDraw; switch(state) { case ON: toDraw = AllGuiTextures.INDICATOR_WHITE; break; diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/Label.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/Label.java index 55e3ea767..3c7d904ca 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/Label.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widgets/Label.java @@ -1,5 +1,7 @@ package com.simibubi.create.foundation.gui.widgets; +import javax.annotation.Nonnull; + import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.systems.RenderSystem; @@ -69,7 +71,7 @@ public class Label extends AbstractSimiWidget { } @Override - public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { + public void render(@Nonnull MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { if (!visible) return; if (text == null || text.getString().isEmpty()) diff --git a/src/main/java/com/simibubi/create/foundation/item/CreateItemGroupBase.java b/src/main/java/com/simibubi/create/foundation/item/CreateItemGroupBase.java index 82d5afc13..379c84c76 100644 --- a/src/main/java/com/simibubi/create/foundation/item/CreateItemGroupBase.java +++ b/src/main/java/com/simibubi/create/foundation/item/CreateItemGroupBase.java @@ -58,7 +58,10 @@ public abstract class CreateItemGroupBase extends ItemGroup { continue; ItemStack stack = new ItemStack(item); IBakedModel model = itemRenderer.getItemModelWithOverrides(stack, world, null); - if ((model.isGui3d() && AllSections.of(stack) != AllSections.CURIOSITIES) != specialItems) + if (AllSections.of(stack) != AllSections.KINETICS) { + if (specialItems) + continue; + } else if (model.isGui3d() != specialItems) continue; item.fillItemGroup(this, items); } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/FixNormalScalingMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/FixNormalScalingMixin.java new file mode 100644 index 000000000..46b35d6e3 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/FixNormalScalingMixin.java @@ -0,0 +1,36 @@ +package com.simibubi.create.foundation.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import com.mojang.blaze3d.matrix.MatrixStack; + +@Mixin(MatrixStack.class) +public class FixNormalScalingMixin { + /** + * Minecraft negates the normal matrix if all scales are equal and negative, but + * does not return afterward. This allows the rest of the method's logic to be + * applied, which negates the matrix again, resulting in the matrix being the + * same as in the beginning. + */ + @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/vector/Matrix3f;multiply(F)V", shift = Shift.AFTER), method = "scale(FFF)V", cancellable = true) + private void returnAfterNegate(float x, float y, float z, CallbackInfo ci) { + ci.cancel(); + } + + /** + * Minecraft takes the inverse cube root of the product of all scales to provide a + * rough estimate for normalization so that it does not need to be done later. It + * does not make sense for this "normalization factor" to be negative though, as + * that would invert all normals. Additionally, Minecraft's fastInverseCbrt method + * does not work for negative numbers. + */ + @ModifyArg(at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;fastInverseCbrt(F)F"), method = "scale(FFF)V") + private float absInvCbrtInput(float input) { + return Math.abs(input); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnEntityMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnEntityMixin.java new file mode 100644 index 000000000..d295d6fa4 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnEntityMixin.java @@ -0,0 +1,30 @@ +package com.simibubi.create.foundation.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import net.minecraft.entity.Entity; +import net.minecraft.nbt.CompoundNBT; +import net.minecraftforge.common.capabilities.CapabilityProvider; + +@Mixin(Entity.class) +public abstract class HeavyBootsOnEntityMixin extends CapabilityProvider { + + protected HeavyBootsOnEntityMixin(Class baseClass) { + super(baseClass); + } + + @Shadow + public abstract CompoundNBT getPersistentData(); + + @Inject(at = @At("HEAD"), method = "canSwim", cancellable = true) + public void noSwimmingWithHeavyBootsOn(CallbackInfoReturnable cir) { + CompoundNBT persistentData = getPersistentData(); + if (persistentData.contains("HeavyBoots")) + cir.setReturnValue(false); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnPlayerMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnPlayerMixin.java new file mode 100644 index 000000000..3ab84bb01 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnPlayerMixin.java @@ -0,0 +1,32 @@ +package com.simibubi.create.foundation.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import com.mojang.authlib.GameProfile; + +import net.minecraft.client.entity.player.AbstractClientPlayerEntity; +import net.minecraft.client.entity.player.ClientPlayerEntity; +import net.minecraft.client.world.ClientWorld; +import net.minecraft.nbt.CompoundNBT; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn(Dist.CLIENT) +@Mixin(ClientPlayerEntity.class) +public abstract class HeavyBootsOnPlayerMixin extends AbstractClientPlayerEntity { + + public HeavyBootsOnPlayerMixin(ClientWorld p_i50991_1_, GameProfile p_i50991_2_) { + super(p_i50991_1_, p_i50991_2_); + } + + @Inject(at = @At("HEAD"), method = "canSwim", cancellable = true) + public void noSwimmingWithHeavyBootsOn(CallbackInfoReturnable cir) { + CompoundNBT persistentData = getPersistentData(); + if (persistentData.contains("HeavyBoots")) + cir.setReturnValue(false); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/ModelDataRefreshMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/ModelDataRefreshMixin.java new file mode 100644 index 000000000..151a0a7c6 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/ModelDataRefreshMixin.java @@ -0,0 +1,37 @@ +package com.simibubi.create.foundation.mixin; + +import com.simibubi.create.content.schematics.SchematicWorld; + +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.client.model.ModelDataManager; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import net.minecraft.client.Minecraft; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn(Dist.CLIENT) +@Mixin(ModelDataManager.class) +public class ModelDataRefreshMixin { + + /** + * Normally ModelDataManager will throw an exception if a tile entity tries + * to refresh its model data from a world the client isn't currently in, + * but we need that to not happen for tile entities in fake schematic + * worlds, so in those cases just do nothing instead. + */ + @Inject(at = @At("HEAD"), method = "requestModelDataRefresh", cancellable = true, remap = false) + private static void requestModelDataRefresh(TileEntity te, CallbackInfo ci) { + if (te != null) { + World world = te.getWorld(); + if (world != Minecraft.getInstance().world && world instanceof SchematicWorld) + ci.cancel(); + } + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/WindowResizeMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/WindowResizeMixin.java new file mode 100644 index 000000000..5008129b3 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/WindowResizeMixin.java @@ -0,0 +1,29 @@ +package com.simibubi.create.foundation.mixin; + +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import com.simibubi.create.foundation.gui.UIRenderHelper; + +import net.minecraft.client.MainWindow; +import net.minecraft.client.Minecraft; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn(Dist.CLIENT) +@Mixin(Minecraft.class) +public class WindowResizeMixin { + + @Shadow @Final private MainWindow mainWindow; + + @Inject(at = @At("TAIL"), method = "updateWindowSize") + private void updateWindowSize(CallbackInfo ci) { + if (UIRenderHelper.framebuffer != null) + UIRenderHelper.framebuffer.func_216491_a(mainWindow.getFramebufferWidth(), mainWindow.getFramebufferHeight(), Minecraft.IS_RUNNING_ON_MAC); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java index 667ac2f5d..79ad62da0 100644 --- a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java +++ b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java @@ -1,15 +1,7 @@ package com.simibubi.create.foundation.networking; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.fml.network.NetworkDirection; -import net.minecraftforge.fml.network.NetworkEvent.Context; -import net.minecraftforge.fml.network.NetworkRegistry; -import net.minecraftforge.fml.network.PacketDistributor; -import net.minecraftforge.fml.network.PacketDistributor.TargetPoint; -import net.minecraftforge.fml.network.simple.SimpleChannel; +import static net.minecraftforge.fml.network.NetworkDirection.PLAY_TO_CLIENT; +import static net.minecraftforge.fml.network.NetworkDirection.PLAY_TO_SERVER; import java.util.function.BiConsumer; import java.util.function.Function; @@ -20,7 +12,11 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Con import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionStallPacket; import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryContraptionUpdatePacket; import com.simibubi.create.content.contraptions.components.structureMovement.glue.GlueEffectPacket; -import com.simibubi.create.content.contraptions.components.structureMovement.sync.*; +import com.simibubi.create.content.contraptions.components.structureMovement.sync.ClientMotionPacket; +import com.simibubi.create.content.contraptions.components.structureMovement.sync.ContraptionFluidPacket; +import com.simibubi.create.content.contraptions.components.structureMovement.sync.ContraptionInteractionPacket; +import com.simibubi.create.content.contraptions.components.structureMovement.sync.ContraptionSeatMappingPacket; +import com.simibubi.create.content.contraptions.components.structureMovement.sync.LimbSwingUpdatePacket; import com.simibubi.create.content.contraptions.components.structureMovement.train.CouplingCreationPacket; import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartControllerUpdatePacket; import com.simibubi.create.content.contraptions.fluids.actors.FluidSplashPacket; @@ -38,15 +34,28 @@ import com.simibubi.create.content.logistics.packet.ConfigureFlexcratePacket; import com.simibubi.create.content.logistics.packet.ConfigureStockswitchPacket; import com.simibubi.create.content.logistics.packet.FunnelFlapPacket; import com.simibubi.create.content.logistics.packet.TunnelFlapPacket; -import com.simibubi.create.content.schematics.packet.*; -import com.simibubi.create.foundation.command.ConfigureConfigPacket; +import com.simibubi.create.content.schematics.packet.ConfigureSchematicannonPacket; +import com.simibubi.create.content.schematics.packet.InstantSchematicPacket; +import com.simibubi.create.content.schematics.packet.SchematicPlacePacket; +import com.simibubi.create.content.schematics.packet.SchematicSyncPacket; +import com.simibubi.create.content.schematics.packet.SchematicUploadPacket; +import com.simibubi.create.foundation.command.SConfigureConfigPacket; import com.simibubi.create.foundation.command.HighlightPacket; +import com.simibubi.create.foundation.config.ui.CConfigureConfigPacket; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringCountUpdatePacket; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueUpdatePacket; import com.simibubi.create.foundation.utility.ServerSpeedProvider; -import static net.minecraftforge.fml.network.NetworkDirection.PLAY_TO_CLIENT; -import static net.minecraftforge.fml.network.NetworkDirection.PLAY_TO_SERVER; +import net.minecraft.network.PacketBuffer; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.fml.network.NetworkDirection; +import net.minecraftforge.fml.network.NetworkEvent.Context; +import net.minecraftforge.fml.network.NetworkRegistry; +import net.minecraftforge.fml.network.PacketDistributor; +import net.minecraftforge.fml.network.PacketDistributor.TargetPoint; +import net.minecraftforge.fml.network.simple.SimpleChannel; public enum AllPackets { @@ -74,12 +83,13 @@ public enum AllPackets { PLACE_EJECTOR(EjectorPlacementPacket.class, EjectorPlacementPacket::new, PLAY_TO_SERVER), TRIGGER_EJECTOR(EjectorTriggerPacket.class, EjectorTriggerPacket::new, PLAY_TO_SERVER), EJECTOR_ELYTRA(EjectorElytraPacket.class, EjectorElytraPacket::new, PLAY_TO_SERVER), + C_CONFIGURE_CONFIG(CConfigureConfigPacket.class, CConfigureConfigPacket::new, PLAY_TO_SERVER), // Server to Client SYMMETRY_EFFECT(SymmetryEffectPacket.class, SymmetryEffectPacket::new, PLAY_TO_CLIENT), SERVER_SPEED(ServerSpeedProvider.Packet.class, ServerSpeedProvider.Packet::new, PLAY_TO_CLIENT), BEAM_EFFECT(ZapperBeamPacket.class, ZapperBeamPacket::new, PLAY_TO_CLIENT), - CONFIGURE_CONFIG(ConfigureConfigPacket.class, ConfigureConfigPacket::new, PLAY_TO_CLIENT), + S_CONFIGURE_CONFIG(SConfigureConfigPacket.class, SConfigureConfigPacket::new, PLAY_TO_CLIENT), CONTRAPTION_STALL(ContraptionStallPacket.class, ContraptionStallPacket::new, PLAY_TO_CLIENT), CONTRAPTION_DISASSEMBLE(ContraptionDisassemblyPacket.class, ContraptionDisassemblyPacket::new, PLAY_TO_CLIENT), GLUE_EFFECT(GlueEffectPacket.class, GlueEffectPacket::new, PLAY_TO_CLIENT), diff --git a/src/main/java/com/simibubi/create/foundation/ponder/NavigatableSimiScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/NavigatableSimiScreen.java index 9f834b83c..59d350155 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/NavigatableSimiScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/NavigatableSimiScreen.java @@ -9,9 +9,11 @@ import org.apache.commons.lang3.mutable.MutableInt; import org.lwjgl.glfw.GLFW; import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.systems.RenderSystem; import com.simibubi.create.foundation.gui.AbstractSimiScreen; import com.simibubi.create.foundation.gui.IScreenRenderable; import com.simibubi.create.foundation.gui.ScreenOpener; +import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.ponder.content.PonderTagScreen; import com.simibubi.create.foundation.ponder.ui.PonderButton; @@ -76,9 +78,9 @@ public abstract class NavigatableSimiScreen extends AbstractSimiScreen { if (screen instanceof PonderTagScreen) icon = ((PonderTagScreen) screen).getTag(); - widgets.add(backTrack = new PonderButton(31, height - 31 - PonderButton.SIZE, () -> { - ScreenOpener.openPreviousScreen(this, Optional.empty()); - }).fade(0, -1)); + widgets.add(backTrack = new PonderButton(31, height - 31 - 20) + .enableFade(0, 5) + .withCallback(() -> ScreenOpener.openPreviousScreen(this, Optional.empty()))); backTrack.fade(1); if (icon != null) @@ -97,7 +99,7 @@ public abstract class NavigatableSimiScreen extends AbstractSimiScreen { ms.push(); ms.translate(0, 0, 500); if (backTrack.isHovered()) { - textRenderer.draw(ms, Lang.translate(THINK_BACK), 15, height - 16, 0xffa3a3a3); + textRenderer.draw(ms, Lang.translate(THINK_BACK), 15, height - 16, Theme.i(Theme.Key.TEXT_DARKER)); if (MathHelper.epsilonEquals(arrowAnimation.getValue(), arrowAnimation.getChaseTarget())) { arrowAnimation.setValue(1); arrowAnimation.setValue(1);// called twice to also set the previous value to 1 @@ -108,7 +110,18 @@ public abstract class NavigatableSimiScreen extends AbstractSimiScreen { @Override protected void renderWindowBackground(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - if (transition.getChaseTarget() == 0) { + if (backTrack != null) { + int x = (int) MathHelper.lerp(arrowAnimation.getValue(partialTicks), -9, 21); + int maxX = backTrack.x + backTrack.getWidth(); + + if (x + 30 < backTrack.x) + UIRenderHelper.breadcrumbArrow(ms, x + 30, height - 51, 0, maxX - (x + 30), 20, 5, Theme.p(Theme.Key.PONDER_BACK_ARROW)); + + UIRenderHelper.breadcrumbArrow(ms, x, height - 51, 0, 30, 20, 5, Theme.p(Theme.Key.PONDER_BACK_ARROW)); + UIRenderHelper.breadcrumbArrow(ms, x - 30, height - 51, 0, 30, 20, 5, Theme.p(Theme.Key.PONDER_BACK_ARROW)); + } + + if (transition.getChaseTarget() == 0 || transition.settled()) { renderBackground(ms); return; } @@ -121,14 +134,14 @@ public abstract class NavigatableSimiScreen extends AbstractSimiScreen { // draw last screen into buffer if (lastScreen != null && lastScreen != this && !transition.settled()) { - ms.push();// 1 + ms.push(); UIRenderHelper.framebuffer.framebufferClear(Minecraft.IS_RUNNING_ON_MAC); - UIRenderHelper.prepFramebufferSize(); - ms.push();// 2 ms.translate(0, 0, -1000); UIRenderHelper.framebuffer.bindFramebuffer(true); - lastScreen.render(ms, mouseX, mouseY, 10); - ms.pop();// 2 + lastScreen.render(ms, mouseX, mouseY, partialTicks); + + ms.pop(); + ms.push(); // use the buffer texture Minecraft.getInstance() @@ -144,32 +157,23 @@ public abstract class NavigatableSimiScreen extends AbstractSimiScreen { dpy = ((NavigatableSimiScreen) lastScreen).depthPointY; } - // transitionV is 1/-1 when the older screen is hidden - // transitionV is 0 when the older screen is still fully visible ms.translate(dpx, dpy, 0); - ms.scale((float) scale, (float) scale, 1); + ms.scale(scale, scale, 1); ms.translate(-dpx, -dpy, 0); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.disableAlphaTest(); UIRenderHelper.drawFramebuffer(1f - Math.abs(transitionValue)); - ms.pop();// 1 + RenderSystem.disableBlend(); + RenderSystem.enableAlphaTest(); + ms.pop(); } // modify current screen as well scale = transitionValue > 0 ? 1 - 0.5f * (1 - transitionValue) : 1 + .5f * (1 + transitionValue); ms.translate(depthPointX, depthPointY, 0); - ms.scale((float) scale, (float) scale, 1); + ms.scale(scale, scale, 1); ms.translate(-depthPointX, -depthPointY, 0); - - if (backTrack != null) { - int x = (int) MathHelper.lerp(arrowAnimation.getValue(partialTicks), -9, 21); - int maxX = backTrack.x + backTrack.getWidth(); - - if (x + 30 < backTrack.x) - UIRenderHelper.breadcrumbArrow(ms, x + 30, height - 51, 0, maxX - (x + 30), 20, 5, 0x40aa9999, - 0x10aa9999); - - UIRenderHelper.breadcrumbArrow(ms, x, height - 51, 0, 30, 20, 5, 0x40aa9999, 0x10aa9999); - UIRenderHelper.breadcrumbArrow(ms, x - 30, height - 51, 0, 30, 20, 5, 0x40aa9999, 0x10aa9999); - } } @Override diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderProgressBar.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderProgressBar.java index e19eaa51f..d2c25f25f 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderProgressBar.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderProgressBar.java @@ -1,9 +1,11 @@ package com.simibubi.create.foundation.ponder; +import javax.annotation.Nonnull; + import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.gui.BoxElement; +import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.widgets.AbstractSimiWidget; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.ColorHelper; import com.simibubi.create.foundation.utility.animation.LerpedFloat; import it.unimi.dsi.fastutil.ints.IntList; @@ -15,7 +17,6 @@ import net.minecraftforge.fml.client.gui.GuiUtils; public class PonderProgressBar extends AbstractSimiWidget { LerpedFloat progress; - LerpedFloat flash; PonderUI ponder; @@ -24,35 +25,20 @@ public class PonderProgressBar extends AbstractSimiWidget { this.ponder = ponder; progress = LerpedFloat.linear() - .startWithValue(0); - flash = LerpedFloat.linear() - .startWithValue(0); + .startWithValue(0); } public void tick() { progress.chase(ponder.getActiveScene() - .getSceneProgress(), .5f, LerpedFloat.Chaser.EXP); + .getSceneProgress(), .5f, LerpedFloat.Chaser.EXP); progress.tickChaser(); - - if (hovered) - flash(); - } - - public void flash() { - float value = flash.getValue(); - flash.setValue(value + (1 - value) * .2f); - } - - public void dim() { - float value = flash.getValue(); - flash.setValue(value * .5f); } @Override protected boolean clicked(double mouseX, double mouseY) { return this.active && this.visible && !ponder.getActiveScene().keyframeTimes.isEmpty() - && mouseX >= (double) this.x && mouseX < (double) (this.x + this.width + 4) && mouseY >= (double) this.y - 3 - && mouseY < (double) (this.y + this.height + 20); + && mouseX >= (double) this.x && mouseX < (double) (this.x + this.width + 4) && mouseY >= (double) this.y - 3 + && mouseY < (double) (this.y + this.height + 20); } @Override @@ -102,58 +88,46 @@ public class PonderProgressBar extends AbstractSimiWidget { } @Override - public void renderButton(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + public void renderButton(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { hovered = clicked(mouseX, mouseY); - ms.push(); - ms.translate(0, 0, 250); - /* - * ponderButtons are at z+400 - * renderBox is at z+100 - * gradients have to be in front of the box so z>+100 - */ + new BoxElement() + .withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_FLAT)) + .gradientBorder(Theme.p(Theme.Key.PONDER_IDLE)) + .at(x, y, 250) + .withBounds(width, height) + .render(ms); ms.push(); - PonderUI.renderBox(ms, x, y, width, height, false); - ms.pop(); - - ms.push(); - ms.translate(x - 2, y - 2, 0); + ms.translate(x - 2, y - 2, 150); ms.push(); ms.scale((width + 4) * progress.getValue(partialTicks), 1, 1); - GuiUtils.drawGradientRect(ms.peek() - .getModel(), 110, 0, 3, 1, 4, 0x80ffeedd, 0x80ffeedd); - GuiUtils.drawGradientRect(ms.peek() - .getModel(), 110, 0, 4, 1, 5, 0x50ffeedd, 0x50ffeedd); + int c1 = Theme.i(Theme.Key.PONDER_PROGRESSBAR, true); + int c2 = Theme.i(Theme.Key.PONDER_PROGRESSBAR, false); + GuiUtils.drawGradientRect(ms.peek().getModel(), 110, 0, 3, 1, 4, c1, c1); + GuiUtils.drawGradientRect(ms.peek().getModel(), 110, 0, 4, 1, 5, c2, c2); ms.pop(); renderKeyframes(ms, mouseX, partialTicks); ms.pop(); - - ms.pop(); } private void renderKeyframes(MatrixStack ms, int mouseX, float partialTicks) { PonderScene activeScene = ponder.getActiveScene(); - int hoverStartColor; - int hoverEndColor; + int hoverStartColor = Theme.i(Theme.Key.PONDER_HOVER, true) | 0xa0_000000; + int hoverEndColor = Theme.i(Theme.Key.PONDER_HOVER, false) | 0xa0_000000; + int idleStartColor = Theme.i(Theme.Key.PONDER_IDLE, true) | 0x40_000000; + int idleEndColor = Theme.i(Theme.Key.PONDER_IDLE, false) | 0x40_000000; int hoverIndex; if (hovered) { hoverIndex = getHoveredKeyframeIndex(activeScene, mouseX); - float flashValue = flash.getValue(partialTicks) * 3 - + (float) Math.sin((AnimationTickHolder.getTicks() + partialTicks) / 6); - - hoverEndColor = ColorHelper.applyAlpha(0x70ffffff, flashValue); - hoverStartColor = ColorHelper.applyAlpha(0x30ffffff, flashValue); } else { hoverIndex = -2; - hoverEndColor = 0; - hoverStartColor = 0; } IntList keyframeTimes = activeScene.keyframeTimes; @@ -167,8 +141,8 @@ public class PonderProgressBar extends AbstractSimiWidget { int keyframePos = (int) (((float) keyframeTime) / ((float) activeScene.totalTime) * (width + 4)); boolean selected = i == hoverIndex; - int startColor = selected ? hoverStartColor : 0x30ffeedd; - int endColor = selected ? hoverEndColor : 0x60ffeedd; + int startColor = selected ? hoverStartColor : idleStartColor; + int endColor = selected ? hoverEndColor : idleEndColor; int height = selected ? 8 : 4; drawKeyframe(ms, activeScene, selected, keyframeTime, keyframePos, startColor, endColor, height); @@ -176,12 +150,11 @@ public class PonderProgressBar extends AbstractSimiWidget { } } - private void drawKeyframe(MatrixStack ms, PonderScene activeScene, boolean selected, int keyframeTime, - int keyframePos, int startColor, int endColor, int height) { + private void drawKeyframe(MatrixStack ms, PonderScene activeScene, boolean selected, int keyframeTime, int keyframePos, int startColor, int endColor, int height) { if (selected) { FontRenderer font = Minecraft.getInstance().fontRenderer; GuiUtils.drawGradientRect(ms.peek() - .getModel(), 100, keyframePos, 10, keyframePos + 1, 10 + height, endColor, startColor); + .getModel(), 100, keyframePos, 10, keyframePos + 1, 10 + height, endColor, startColor); ms.push(); ms.translate(0, 0, 100); String text; @@ -198,7 +171,7 @@ public class PonderProgressBar extends AbstractSimiWidget { } GuiUtils.drawGradientRect(ms.peek() - .getModel(), 500, keyframePos, -1, keyframePos + 1, 2 + height, startColor, endColor); + .getModel(), 500, keyframePos, -1, keyframePos + 1, 2 + height, startColor, endColor); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderUI.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderUI.java index 2e9c14f23..7f0e951fd 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderUI.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderUI.java @@ -2,13 +2,13 @@ package com.simibubi.create.foundation.ponder; import static com.simibubi.create.foundation.ponder.PonderLocalization.LANG_PREFIX; +import java.awt.Color; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; import java.util.stream.IntStream; -import org.apache.commons.lang3.mutable.MutableBoolean; import org.lwjgl.opengl.GL11; import com.mojang.blaze3d.matrix.MatrixStack; @@ -16,8 +16,10 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllIcons; +import com.simibubi.create.foundation.gui.BoxElement; import com.simibubi.create.foundation.gui.GuiGameElement; import com.simibubi.create.foundation.gui.ScreenOpener; +import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.ponder.PonderScene.SceneTransform; import com.simibubi.create.foundation.ponder.content.DebugScenes; @@ -29,6 +31,7 @@ import com.simibubi.create.foundation.ponder.elements.TextWindowElement; import com.simibubi.create.foundation.ponder.ui.PonderButton; import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; import com.simibubi.create.foundation.utility.ColorHelper; +import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.FontHelper; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; @@ -43,14 +46,12 @@ import net.minecraft.client.MainWindow; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.widget.Widget; -import net.minecraft.client.settings.KeyBinding; import net.minecraft.item.ItemStack; import net.minecraft.util.Direction; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MutableBoundingBox; -import net.minecraft.util.math.vector.Matrix4f; import net.minecraft.util.math.vector.Vector3d; import net.minecraft.util.math.vector.Vector3f; import net.minecraft.util.text.IFormattableTextComponent; @@ -166,13 +167,16 @@ public class PonderUI extends NavigatableSimiScreen { int i = tagButtons.size(); int x = 31; int y = 81 + i * 30; - PonderButton b = new PonderButton(x, y, (mouseX, mouseY) -> { - centerScalingOn(mouseX, mouseY); - ScreenOpener.transitionTo(new PonderTagScreen(t)); - }).showing(t); - widgets.add(b); - tagButtons.add(b); + PonderButton b2 = new PonderButton(x, y) + .showing(t) + .withCallback((mX, mY) -> { + centerScalingOn(mX, mY); + ScreenOpener.transitionTo(new PonderTagScreen(t)); + }); + + widgets.add(b2); + tagButtons.add(b2); LerpedFloat chase = LerpedFloat.linear() .startWithValue(0) @@ -181,10 +185,10 @@ public class PonderUI extends NavigatableSimiScreen { }); - if (chapter != null) { + /*if (chapter != null) { widgets.add(chap = new PonderButton(width - 31 - 24, 31, () -> { }).showing(chapter)); - } + }*/ GameSettings bindings = client.gameSettings; int spacing = 8; @@ -193,53 +197,63 @@ public class PonderUI extends NavigatableSimiScreen { { int pX = (width / 2) - 110; - int pY = bY + PonderButton.SIZE + 4; + int pY = bY + 20 + 4; int pW = width - 2 * pX; widgets.add(progressBar = new PonderProgressBar(this, pX, pY, pW, 1)); } - widgets.add(scan = new PonderButton(bX, bY, () -> { - identifyMode = !identifyMode; - if (!identifyMode) - scenes.get(index) - .deselect(); - else - ponderPartialTicksPaused = client.getRenderPartialTicks(); - }).showing(AllIcons.I_MTD_SCAN) - .shortcut(bindings.keyBindDrop) - .fade(0, -1)); + widgets.add(scan = new PonderButton(bX, bY) + .withShortcut(bindings.keyBindDrop) + .showing(AllIcons.I_MTD_SCAN) + .enableFade(0, 5) + .withCallback(() -> { + identifyMode = !identifyMode; + if (!identifyMode) + scenes.get(index) + .deselect(); + else + ponderPartialTicksPaused = client.getRenderPartialTicks(); + })); - widgets.add(slowMode = new PonderButton(width - 20 - 31, bY, () -> { - setComfyReadingEnabled(!isComfyReadingEnabled()); - }).showing(AllIcons.I_MTD_SLOW_MODE) - .fade(0, -1)); + widgets.add(slowMode = new PonderButton(width - 20 - 31, bY) + .showing(AllIcons.I_MTD_SLOW_MODE) + .enableFade(0, 5) + .withCallback(() -> setComfyReadingEnabled(!isComfyReadingEnabled()))); if (PonderIndex.EDITOR_MODE) { - widgets.add(userMode = new PonderButton(width - 50 - 31, bY, () -> { - userViewMode = !userViewMode; - }).showing(AllIcons.I_MTD_USER_MODE) - .fade(0, -1)); + widgets.add(userMode = new PonderButton(width - 50 - 31, bY) + .showing(AllIcons.I_MTD_USER_MODE) + .enableFade(0, 5) + .withCallback(() -> userViewMode = !userViewMode)); } bX += 50 + spacing; - widgets.add(left = new PonderButton(bX, bY, () -> this.scroll(false)).showing(AllIcons.I_MTD_LEFT) - .shortcut(bindings.keyBindLeft) - .fade(0, -1)); + widgets.add(left = new PonderButton(bX, bY) + .withShortcut(bindings.keyBindLeft) + .showing(AllIcons.I_MTD_LEFT) + .enableFade(0, 5) + .withCallback(() -> this.scroll(false))); bX += 20 + spacing; - widgets.add(close = new PonderButton(bX, bY, this::onClose).showing(AllIcons.I_MTD_CLOSE) - .shortcut(bindings.keyBindInventory) - .fade(0, -1)); + widgets.add(close = new PonderButton(bX, bY) + .withShortcut(bindings.keyBindInventory) + .showing(AllIcons.I_MTD_CLOSE) + .enableFade(0, 5) + .withCallback(this::onClose)); bX += 20 + spacing; - widgets.add(right = new PonderButton(bX, bY, () -> this.scroll(true)).showing(AllIcons.I_MTD_RIGHT) - .shortcut(bindings.keyBindRight) - .fade(0, -1)); + widgets.add(right = new PonderButton(bX, bY) + .withShortcut(bindings.keyBindRight) + .showing(AllIcons.I_MTD_RIGHT) + .enableFade(0, 5) + .withCallback(() -> this.scroll(true))); bX += 50 + spacing; - widgets.add(replay = new PonderButton(bX, bY, this::replay).showing(AllIcons.I_MTD_REPLAY) - .shortcut(bindings.keyBindBack) - .fade(0, -1)); + widgets.add(replay = new PonderButton(bX, bY) + .withShortcut(bindings.keyBindBack) + .showing(AllIcons.I_MTD_REPLAY) + .enableFade(0, 5) + .withCallback(this::replay)); } @Override @@ -429,7 +443,6 @@ public class PonderUI extends NavigatableSimiScreen { MutableBoundingBox bounds = story.getBounds(); ms.push(); - // ms.peek().getModel().multiply(ms.peek().getModel()); // kool shadow fx { @@ -527,17 +540,16 @@ public class PonderUI extends NavigatableSimiScreen { float lazyIndexValue = lazyIndex.getValue(partialTicks); float indexDiff = Math.abs(lazyIndexValue - index); PonderScene activeScene = scenes.get(index); - int textColor = 0xeeeeee; boolean noWidgetsHovered = true; for (Widget widget : widgets) noWidgetsHovered &= !widget.isMouseOver(mouseX, mouseY); - int tooltipColor = 0xffa3a3a3; + int tooltipColor = Theme.i(Theme.Key.TEXT_DARKER); { // Chapter title ms.push(); - ms.translate(0, 0, 300); + ms.translate(0, 0, 100); int x = 31 + 20 + 8; int y = 31; @@ -545,36 +557,40 @@ public class PonderUI extends NavigatableSimiScreen { int wordWrappedHeight = textRenderer.getWordWrappedHeight(title, left.x - 51); int streakHeight = 35 - 9 + wordWrappedHeight; - UIRenderHelper.streak(ms, 0, x - 4, y - 12 + streakHeight / 2, streakHeight, (int) (150 * fade), 0x101010); - UIRenderHelper.streak(ms, 180, x - 4, y - 12 + streakHeight / 2, streakHeight, (int) (30 * fade), 0x101010); - renderBox(ms, 21, 21, 30, 30, false); + UIRenderHelper.streak(ms, 0, x - 4, y - 12 + streakHeight / 2, streakHeight, (int) (150 * fade)); + UIRenderHelper.streak(ms, 180, x - 4, y - 12 + streakHeight / 2, streakHeight, (int) (30 * fade)); + new BoxElement() + .withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_FLAT)) + .gradientBorder(Theme.p(Theme.Key.PONDER_IDLE)) + .at(21, 21, 100) + .withBounds(30, 30) + .render(ms); + GuiGameElement.of(stack) - .at(x - 39, y - 11) - .scale(2) - .render(ms); + .scale(2) + .at(x - 39, y - 11) + .render(ms); textRenderer.draw(ms, Lang.translate(PONDERING), x, y - 6, tooltipColor); y += 8; x += 0; - // ms.translate(0, 3 * (indexDiff), 0); ms.translate(x, y, 0); ms.multiply(Vector3f.NEGATIVE_X.getDegreesQuaternion(indexDiff * -75)); ms.translate(0, 0, 5); FontHelper.drawSplitString(ms, textRenderer, title, 0, 0, left.x - 51, - ColorHelper.applyAlpha(textColor, 1 - indexDiff)); + ColorHelper.applyAlpha(Theme.i(Theme.Key.TEXT), 1 - indexDiff)); ms.pop(); if (chapter != null) { ms.push(); ms.translate(chap.x - 4 - 4, chap.y, 0); - UIRenderHelper.streak(ms, 180, 4, 10, 26, (int) (150 * fade), 0x101010); + UIRenderHelper.streak(ms, 180, 4, 10, 26, (int) (150 * fade)); - drawRightAlignedString(textRenderer, ms, Lang.translate(IN_CHAPTER) - .getString(), 0, 0, tooltipColor); - drawRightAlignedString(textRenderer, ms, Lang.translate(LANG_PREFIX + "chapter." + chapter.getId()) - .getString(), 0, 12, 0xffeeeeee); + drawRightAlignedString(textRenderer, ms, Lang.translate(IN_CHAPTER).getString(), 0, 0, tooltipColor); + drawRightAlignedString(textRenderer, ms, + Lang.translate(LANG_PREFIX + "chapter." + chapter.getId()).getString(), 0, 12, Theme.i(Theme.Key.TEXT)); ms.pop(); } @@ -590,29 +606,24 @@ public class PonderUI extends NavigatableSimiScreen { ms.push(); ms.translate(mouseX, mouseY, 100); if (hoveredTooltipItem.isEmpty()) { - IFormattableTextComponent text = Lang - .translate(IDENTIFY_MODE, - ((IFormattableTextComponent) client.gameSettings.keyBindDrop.getBoundKeyLocalizedText()) - .formatted(TextFormatting.WHITE)) - .formatted(TextFormatting.GRAY); + IFormattableTextComponent text = Lang.translate( + IDENTIFY_MODE, + ((IFormattableTextComponent) client.gameSettings.keyBindDrop.getBoundKeyLocalizedText()).formatted(TextFormatting.WHITE) + ).formatted(TextFormatting.GRAY); - // renderOrderedTooltip(ms, textRenderer.wrapLines(text, width / 3), 0, 0); - renderWrappedToolTip(ms, textRenderer.getTextHandler() - .wrapLines(text, width / 3, Style.EMPTY), 0, 0, textRenderer); - /* - * String tooltip = Lang - * .createTranslationTextComponent(IDENTIFY_MODE, client.gameSettings.keyBindDrop.getBoundKeyLocalizedText().applyTextStyle(TextFormatting.WHITE)) - * .applyTextStyle(TextFormatting.GRAY) - * .getFormattedText(); - * renderTooltip(font.listFormattedStringToWidth(tooltip, width / 3), 0, 0); - */ + //renderOrderedTooltip(ms, textRenderer.wrapLines(text, width / 3), 0, 0); + renderWrappedToolTip(ms, textRenderer.getTextHandler().wrapLines(text, width / 3, Style.EMPTY), 0, 0, textRenderer); + /*String tooltip = Lang + .createTranslationTextComponent(IDENTIFY_MODE, client.gameSettings.keyBindDrop.getBoundKeyLocalizedText().applyTextStyle(TextFormatting.WHITE)) + .applyTextStyle(TextFormatting.GRAY) + .getFormattedText(); + renderTooltip(font.listFormattedStringToWidth(tooltip, width / 3), 0, 0);*/ } else renderTooltip(ms, hoveredTooltipItem, 0, 0); if (hoveredBlockPos != null && PonderIndex.EDITOR_MODE && !userViewMode) { ms.translate(0, -15, 0); boolean copied = copiedBlockPos != null && hoveredBlockPos.equals(copiedBlockPos); - IFormattableTextComponent coords = new StringTextComponent( - hoveredBlockPos.getX() + ", " + hoveredBlockPos.getY() + ", " + hoveredBlockPos.getZ()) + IFormattableTextComponent coords = new StringTextComponent(hoveredBlockPos.getX() + ", " + hoveredBlockPos.getY() + ", " + hoveredBlockPos.getZ()) .formatted(copied ? TextFormatting.GREEN : TextFormatting.GOLD); renderTooltip(ms, coords, 0, 0); } @@ -649,15 +660,14 @@ public class PonderUI extends NavigatableSimiScreen { // Widgets widgets.forEach(w -> { if (w instanceof PonderButton) { - PonderButton mtdButton = (PonderButton) w; - mtdButton.fade(fade); + ((PonderButton) w).fade().startWithValue(fade); } }); if (index == 0 || index == 1 && lazyIndexValue < index) - left.fade(lazyIndexValue); + left.fade().startWithValue(lazyIndexValue); if (index == scenes.size() - 1 || index == scenes.size() - 2 && lazyIndexValue > index) - right.fade(scenes.size() - lazyIndexValue - 1); + right.fade().startWithValue(scenes.size() - lazyIndexValue - 1); boolean finished = activeScene.isFinished(); if (finished) @@ -693,14 +703,14 @@ public class PonderUI extends NavigatableSimiScreen { ms.translate(x, y + 5 * (1 - fade), 800); float fadedWidth = 200 * chase.getValue(partialTicks); - UIRenderHelper.streak(ms, 0, 0, 12, 26, (int) fadedWidth, 0x101010); + UIRenderHelper.streak(ms, 0, 0, 12, 26, (int) fadedWidth); GL11.glScissor((int) (x * s), 0, (int) (fadedWidth * s), (int) (height * s)); GL11.glEnable(GL11.GL_SCISSOR_TEST); String tagName = this.tags.get(i) .getTitle(); - textRenderer.draw(ms, tagName, 3, 8, 0xffeedd); + textRenderer.draw(ms, tagName, 3, 8, Theme.i(Theme.Key.TEXT_ACCENT_SLIGHT)); GL11.glDisable(GL11.GL_SCISSOR_TEST); @@ -727,24 +737,6 @@ public class PonderUI extends NavigatableSimiScreen { ms.pop(); } - protected void lowerButtonGroup(MatrixStack ms, int index, int mouseX, int mouseY, float fade, AllIcons icon, - KeyBinding key) { - int bWidth = 20; - int bHeight = 20; - int bX = (width - bWidth) / 2 + (index - 1) * (bWidth + 8); - int bY = height - bHeight - 31; - - ms.push(); - if (fade < fadeIn.getChaseTarget()) - ms.translate(0, (1 - fade) * 5, 0); - boolean hovered = isMouseOver(mouseX, mouseY, bX, bY, bWidth, bHeight); - renderBox(ms, bX, bY, bWidth, bHeight, hovered); - icon.draw(ms, bX + 2, bY + 2); - drawCenteredText(ms, textRenderer, key.getBoundKeyLocalizedText(), bX + bWidth / 2 + 8, bY + bHeight - 6, - 0xff606060); - ms.pop(); - } - private void renderOverlay(MatrixStack ms, int i, float partialTicks) { if (identifyMode) return; @@ -756,23 +748,6 @@ public class PonderUI extends NavigatableSimiScreen { @Override public boolean mouseClicked(double x, double y, int button) { - MutableBoolean handled = new MutableBoolean(false); - widgets.forEach(w -> { - if (handled.booleanValue()) - return; - if (!w.isMouseOver(x, y)) - return; - if (w instanceof PonderButton) { - PonderButton mtdButton = (PonderButton) w; - mtdButton.runCallback(x, y); - handled.setTrue(); - return; - } - }); - - if (handled.booleanValue()) - return true; - if (identifyMode && hoveredBlockPos != null && PonderIndex.EDITOR_MODE) { long handle = client.getWindow() .getHandle(); @@ -843,8 +818,8 @@ public class PonderUI extends NavigatableSimiScreen { .getString(); return stack.getItem() - .getName() - .getString(); + .getName() + .getString(); } public FontRenderer getFontRenderer() { @@ -857,13 +832,8 @@ public class PonderUI extends NavigatableSimiScreen { return hovered; } - public static void renderBox(MatrixStack ms, int x, int y, int w, int h, boolean highlighted) { - renderBox(ms, x, y, w, h, 0xff000000, highlighted ? 0xf0ffeedd : 0x40ffeedd, - highlighted ? 0x60ffeedd : 0x20ffeedd); - } - - public static void renderSpeechBox(MatrixStack ms, int x, int y, int w, int h, boolean highlighted, - Pointing pointing, boolean returnWithLocalTransform) { + public static void renderSpeechBox(MatrixStack ms, int x, int y, int w, int h, boolean highlighted, Pointing pointing, + boolean returnWithLocalTransform) { if (!returnWithLocalTransform) ms.push(); @@ -875,6 +845,8 @@ public class PonderUI extends NavigatableSimiScreen { int divotSize = 8; int distance = 1; int divotRadius = divotSize / 2; + Couple borderColors = Theme.p(highlighted ? Theme.Key.PONDER_HIGHLIGHT : Theme.Key.PONDER_IDLE); + Color c; switch (pointing) { default: @@ -884,6 +856,7 @@ public class PonderUI extends NavigatableSimiScreen { boxY -= h + divotSize + 1 + distance; divotX -= divotRadius; divotY -= divotSize + distance; + c = borderColors.getSecond(); break; case LEFT: divotRotation = 90; @@ -891,6 +864,7 @@ public class PonderUI extends NavigatableSimiScreen { boxY -= h / 2; divotX += distance; divotY -= divotRadius; + c = ColorHelper.mixColors(borderColors, 0.5f); break; case RIGHT: divotRotation = 270; @@ -898,6 +872,7 @@ public class PonderUI extends NavigatableSimiScreen { boxY -= h / 2; divotX -= divotSize + distance; divotY -= divotRadius; + c = ColorHelper.mixColors(borderColors, 0.5f); break; case UP: divotRotation = 180; @@ -905,17 +880,23 @@ public class PonderUI extends NavigatableSimiScreen { boxY += divotSize + 1 + distance; divotX -= divotRadius; divotY += distance; + c = borderColors.getFirst(); break; } - renderBox(ms, boxX, boxY, w, h, highlighted); + new BoxElement() + .withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_FLAT)) + .gradientBorder(borderColors) + .at(boxX, boxY, 100) + .withBounds(w, h) + .render(ms); ms.push(); - AllGuiTextures toRender = highlighted ? AllGuiTextures.SPEECH_TOOLTIP_HIGHLIGHT : AllGuiTextures.SPEECH_TOOLTIP; ms.translate(divotX + divotRadius, divotY + divotRadius, 10); ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(divotRotation)); ms.translate(-divotRadius, -divotRadius, 0); - toRender.draw(ms, 0, 0); + AllGuiTextures.SPEECH_TOOLTIP_BACKGROUND.draw(ms, 0, 0); + AllGuiTextures.SPEECH_TOOLTIP_COLOR.draw(ms, 0, 0, c); ms.pop(); if (returnWithLocalTransform) { @@ -927,24 +908,6 @@ public class PonderUI extends NavigatableSimiScreen { } - public static void renderBox(MatrixStack ms, int x, int y, int w, int h, int backgroundColor, int borderColorStart, - int borderColorEnd) { - int z = 100; - Matrix4f model = ms.peek() - .getModel(); - GuiUtils.drawGradientRect(model, z, x - 3, y - 4, x + w + 3, y - 3, backgroundColor, backgroundColor); - GuiUtils.drawGradientRect(model, z, x - 3, y + h + 3, x + w + 3, y + h + 4, backgroundColor, backgroundColor); - GuiUtils.drawGradientRect(model, z, x - 3, y - 3, x + w + 3, y + h + 3, backgroundColor, backgroundColor); - GuiUtils.drawGradientRect(model, z, x - 4, y - 3, x - 3, y + h + 3, backgroundColor, backgroundColor); - GuiUtils.drawGradientRect(model, z, x + w + 3, y - 3, x + w + 4, y + h + 3, backgroundColor, backgroundColor); - GuiUtils.drawGradientRect(model, z, x - 3, y - 3 + 1, x - 3 + 1, y + h + 3 - 1, borderColorStart, - borderColorEnd); - GuiUtils.drawGradientRect(model, z, x + w + 2, y - 3 + 1, x + w + 3, y + h + 3 - 1, borderColorStart, - borderColorEnd); - GuiUtils.drawGradientRect(model, z, x - 3, y - 3, x + w + 3, y - 3 + 1, borderColorStart, borderColorStart); - GuiUtils.drawGradientRect(model, z, x - 3, y + h + 2, x + w + 3, y + h + 3, borderColorEnd, borderColorEnd); - } - public ItemStack getHoveredTooltipItem() { return hoveredTooltipItem; } @@ -1011,4 +974,4 @@ public class PonderUI extends NavigatableSimiScreen { AllConfigs.CLIENT.comfyReading.set(slowTextMode); } -} \ No newline at end of file +} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndexScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndexScreen.java index 8166eabf6..e9a0a8097 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndexScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndexScreen.java @@ -10,6 +10,7 @@ import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.components.crank.ValveHandleBlock; import com.simibubi.create.foundation.gui.ScreenOpener; +import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.ponder.NavigatableSimiScreen; import com.simibubi.create.foundation.ponder.PonderRegistry; @@ -106,17 +107,17 @@ public class PonderIndexScreen extends NavigatableSimiScreen { int itemCenterY = (int) (height * itemYmult); for (Item item : items) { - PonderButton button = - new PonderButton(itemCenterX + layout.getX() + 4, itemCenterY + layout.getY() + 4, (x, y) -> { - if (!PonderRegistry.all.containsKey(item.getRegistryName())) - return; + PonderButton b = new PonderButton(itemCenterX + layout.getX() + 4, itemCenterY + layout.getY() + 4) + .showing(new ItemStack(item)) + .withCallback((x, y) -> { + if (!PonderRegistry.all.containsKey(item.getRegistryName())) + return; - centerScalingOn(x, y); - ScreenOpener.transitionTo(PonderUI.of(new ItemStack(item))); - }).showing(new ItemStack(item)); + centerScalingOn(x, y); + ScreenOpener.transitionTo(PonderUI.of(new ItemStack(item))); + }); - button.fade(1); - widgets.add(button); + widgets.add(b); layout.next(); } @@ -158,8 +159,8 @@ public class PonderIndexScreen extends NavigatableSimiScreen { ms.push(); ms.translate(x, y, 0); - UIRenderHelper.streak(ms, 0, chapterArea.getX() - 10, chapterArea.getY() - 20, 20, 220, 0x101010); - textRenderer.draw(ms, "Topics to Ponder about", chapterArea.getX() - 5, chapterArea.getY() - 25, 0xffddeeff); + UIRenderHelper.streak(ms, 0, chapterArea.getX() - 10, chapterArea.getY() - 20, 20, 220); + textRenderer.draw(ms, "Topics to Ponder about", chapterArea.getX() - 5, chapterArea.getY() - 25, Theme.i(Theme.Key.TEXT)); ms.pop(); } @@ -170,8 +171,8 @@ public class PonderIndexScreen extends NavigatableSimiScreen { ms.push(); ms.translate(x, y, 0); - UIRenderHelper.streak(ms, 0, itemArea.getX() - 10, itemArea.getY() - 20, 20, 220, 0x101010); - textRenderer.draw(ms, "Items to inspect", itemArea.getX() - 5, itemArea.getY() - 25, 0xffddeeff); + UIRenderHelper.streak(ms, 0, itemArea.getX() - 10, itemArea.getY() - 20, 20, 220); + textRenderer.draw(ms, "Items to inspect", itemArea.getX() - 5, itemArea.getY() - 25, Theme.i(Theme.Key.TEXT)); ms.pop(); } @@ -189,7 +190,7 @@ public class PonderIndexScreen extends NavigatableSimiScreen { ms.pop(); } - @Override + /*@Override public boolean mouseClicked(double x, double y, int button) { MutableBoolean handled = new MutableBoolean(false); widgets.forEach(w -> { @@ -207,7 +208,7 @@ public class PonderIndexScreen extends NavigatableSimiScreen { if (handled.booleanValue()) return true; return super.mouseClicked(x, y, button); - } + }*/ @Override public boolean isEquivalentTo(NavigatableSimiScreen other) { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagScreen.java index 321b7c6d6..1e430d63f 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagScreen.java @@ -9,7 +9,9 @@ import org.apache.commons.lang3.mutable.MutableBoolean; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.systems.RenderSystem; import com.simibubi.create.Create; +import com.simibubi.create.foundation.gui.BoxElement; import com.simibubi.create.foundation.gui.ScreenOpener; +import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.ponder.NavigatableSimiScreen; import com.simibubi.create.foundation.ponder.PonderLocalization; @@ -84,24 +86,26 @@ public class PonderTagScreen extends NavigatableSimiScreen { int itemCenterY = getItemsY(); for (Item i : items) { - final boolean canClick = PonderRegistry.all.containsKey(i.getRegistryName()); - PonderButton button = - new PonderButton(itemCenterX + layout.getX() + 4, itemCenterY + layout.getY() + 4, (mouseX, mouseY) -> { - if (!canClick) - return; + PonderButton b = new PonderButton(itemCenterX + layout.getX() + 4, itemCenterY + layout.getY() + 4) + .showing(new ItemStack(i)); + + if (PonderRegistry.all.containsKey(i.getRegistryName())) { + b.withCallback((mouseX, mouseY) -> { centerScalingOn(mouseX, mouseY); ScreenOpener.transitionTo(PonderUI.of(new ItemStack(i), tag)); - }).showing(new ItemStack(i)); - if (!canClick) + }); + } else { if (i.getRegistryName() - .getNamespace() - .equals(Create.ID)) - button.customColors(0x70984500, 0x70692400); + .getNamespace() + .equals(Create.ID)) + b.withBorderColors(Theme.p(Theme.Key.PONDER_MISSING_CREATE)) + .animateColors(false); else - button.customColors(0x505000FF, 0x50300077); + b.withBorderColors(Theme.p(Theme.Key.PONDER_MISSING_VANILLA)) + .animateColors(false); + } - button.fade(1); - widgets.add(button); + widgets.add(b); layout.next(); } @@ -109,23 +113,26 @@ public class PonderTagScreen extends NavigatableSimiScreen { ResourceLocation registryName = tag.getMainItem() .getItem() .getRegistryName(); - final boolean canClick = PonderRegistry.all.containsKey(registryName); - PonderButton button = - new PonderButton(itemCenterX - layout.getTotalWidth() / 2 - 42, itemCenterY - 10, (mouseX, mouseY) -> { - if (!canClick) - return; - centerScalingOn(mouseX, mouseY); - ScreenOpener.transitionTo(PonderUI.of(tag.getMainItem(), tag)); - }).showing(tag.getMainItem()); - if (!canClick) + + PonderButton b = new PonderButton(itemCenterX - layout.getTotalWidth() / 2 - 42, itemCenterY - 10) + .showing(tag.getMainItem()); + + if (PonderRegistry.all.containsKey(registryName)) { + b.withCallback((mouseX, mouseY) -> { + centerScalingOn(mouseX, mouseY); + ScreenOpener.transitionTo(PonderUI.of(tag.getMainItem(), tag)); + }); + } else { if (registryName.getNamespace() .equals(Create.ID)) - button.customColors(0x70984500, 0x70692400); + b.withBorderColors(Theme.p(Theme.Key.PONDER_MISSING_CREATE)) + .animateColors(false); else - button.customColors(0x505000FF, 0x50300077); + b.withBorderColors(Theme.p(Theme.Key.PONDER_MISSING_VANILLA)) + .animateColors(false); + } - button.fade(1); - widgets.add(button); + widgets.add(b); } // chapters @@ -187,15 +194,21 @@ public class PonderTagScreen extends NavigatableSimiScreen { String title = tag.getTitle(); int streakHeight = 35; - UIRenderHelper.streak(ms, 0, x - 4, y - 12 + streakHeight / 2, streakHeight, 240, 0x101010); - PonderUI.renderBox(ms, 21, 21, 30, 30, false); + UIRenderHelper.streak(ms, 0, x - 4, y - 12 + streakHeight / 2, streakHeight, 240); + //PonderUI.renderBox(ms, 21, 21, 30, 30, false); + new BoxElement() + .withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_FLAT)) + .gradientBorder(Theme.p(Theme.Key.PONDER_IDLE)) + .at(21, 21, 100) + .withBounds(30, 30) + .render(ms); - textRenderer.draw(ms, Lang.translate(PonderUI.PONDERING), x, y - 6, 0xffa3a3a3); + textRenderer.draw(ms, Lang.translate(PonderUI.PONDERING), x, y - 6, Theme.i(Theme.Key.TEXT_DARKER)); y += 8; x += 0; ms.translate(x, y, 0); ms.translate(0, 0, 5); - textRenderer.draw(ms, title, 0, 0, 0xeeeeee); + textRenderer.draw(ms, title, 0, 0, Theme.i(Theme.Key.TEXT)); ms.pop(); ms.push(); @@ -214,9 +227,16 @@ public class PonderTagScreen extends NavigatableSimiScreen { int h = textRenderer.getWordWrappedHeight(desc, w); - PonderUI.renderBox(ms, x - 3, y - 3, w + 6, h + 6, false); + //PonderUI.renderBox(ms, x - 3, y - 3, w + 6, h + 6, false); + new BoxElement() + .withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_FLAT)) + .gradientBorder(Theme.p(Theme.Key.PONDER_IDLE)) + .at(x - 3, y - 3, 90) + .withBounds(w + 6, h + 6) + .render(ms); + ms.translate(0, 0, 100); - FontHelper.drawSplitString(ms, textRenderer, desc, x, y, w, 0xeeeeee); + FontHelper.drawSplitString(ms, textRenderer, desc, x, y, w, Theme.i(Theme.Key.TEXT)); ms.pop(); } @@ -232,16 +252,23 @@ public class PonderTagScreen extends NavigatableSimiScreen { ms.push(); ms.translate(x, y, 0); - PonderUI.renderBox(ms, (sWidth - stringWidth) / 2 - 5, itemArea.getY() - 21, stringWidth + 10, 10, false); + //PonderUI.renderBox(ms, (sWidth - stringWidth) / 2 - 5, itemArea.getY() - 21, stringWidth + 10, 10, false); + new BoxElement() + .withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_FLAT)) + .gradientBorder(Theme.p(Theme.Key.PONDER_IDLE)) + .at((sWidth - stringWidth) / 2f - 5, itemArea.getY() - 21, 100) + .withBounds(stringWidth + 10, 10) + .render(ms); + ms.translate(0, 0, 200); // UIRenderHelper.streak(0, itemArea.getX() - 10, itemArea.getY() - 20, 20, 180, 0x101010); - drawCenteredString(ms, textRenderer, relatedTitle, sWidth / 2, itemArea.getY() - 20, 0xeeeeee); + drawCenteredString(ms, textRenderer, relatedTitle, sWidth / 2, itemArea.getY() - 20, Theme.i(Theme.Key.TEXT)); ms.translate(0,0, -200); - UIRenderHelper.streak(ms, 0, 0, 0, itemArea.getHeight() + 10, itemArea.getWidth() / 2 + 75, 0x101010); - UIRenderHelper.streak(ms, 180, 0, 0, itemArea.getHeight() + 10, itemArea.getWidth() / 2 + 75, 0x101010); + UIRenderHelper.streak(ms, 0, 0, 0, itemArea.getHeight() + 10, itemArea.getWidth() / 2 + 75); + UIRenderHelper.streak(ms, 180, 0, 0, itemArea.getHeight() + 10, itemArea.getWidth() / 2 + 75); ms.pop(); @@ -261,8 +288,8 @@ public class PonderTagScreen extends NavigatableSimiScreen { ms.push(); ms.translate(chapterX, chapterY, 0); - UIRenderHelper.streak(ms, 0, chapterArea.getX() - 10, chapterArea.getY() - 20, 20, 220, 0x101010); - textRenderer.draw(ms, "More Topics to Ponder about", chapterArea.getX() - 5, chapterArea.getY() - 25, 0xffddeeff); + UIRenderHelper.streak(ms, 0, chapterArea.getX() - 10, chapterArea.getY() - 20, 20, 220); + textRenderer.draw(ms, "More Topics to Ponder about", chapterArea.getX() - 5, chapterArea.getY() - 25, Theme.i(Theme.Key.TEXT_ACCENT_SLIGHT)); ms.pop(); } @@ -291,7 +318,7 @@ public class PonderTagScreen extends NavigatableSimiScreen { return hoveredItem; } - @Override + /*@Override public boolean mouseClicked(double x, double y, int button) { MutableBoolean handled = new MutableBoolean(false); widgets.forEach(w -> { @@ -310,7 +337,7 @@ public class PonderTagScreen extends NavigatableSimiScreen { if (handled.booleanValue()) return true; return super.mouseClicked(x, y, button); - } + }*/ @Override public boolean isEquivalentTo(NavigatableSimiScreen other) { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/InputWindowElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/InputWindowElement.java index 7f8badfb3..f87c70c28 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/InputWindowElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/elements/InputWindowElement.java @@ -136,7 +136,7 @@ public class InputWindowElement extends AnimatedOverlayElement { if (hasItem) { GuiGameElement.of(item) - .at(keyWidth + (hasIcon ? 24 : 0), 0) + .at(keyWidth + (hasIcon ? 24 : 0), 0) .scale(1.5) .render(ms); RenderSystem.disableDepthTest(); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/TextWindowElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/TextWindowElement.java index 865a83100..31da2fb41 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/TextWindowElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/elements/TextWindowElement.java @@ -4,6 +4,8 @@ import java.util.List; import java.util.function.Supplier; import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.gui.BoxElement; +import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.ponder.PonderLocalization; import com.simibubi.create.foundation.ponder.PonderScene; import com.simibubi.create.foundation.ponder.PonderUI; @@ -110,7 +112,14 @@ public class TextWindowElement extends AnimatedOverlayElement { ms.push(); ms.translate(0, sceneToScreen.y, 400); - PonderUI.renderBox(ms, targetX - 10, 3, boxWidth, boxHeight - 1, 0xaa000000, 0x30eebb00, 0x10eebb00); + new BoxElement() + .withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_FLAT)) + .gradientBorder(Theme.p(Theme.Key.TEXT_WINDOW_BORDER)) + .at(targetX - 10, 3, 100) + .withBounds(boxWidth, boxHeight - 1) + .render(ms); + + //PonderUI.renderBox(ms, targetX - 10, 3, boxWidth, boxHeight - 1, 0xaa000000, 0x30eebb00, 0x10eebb00); int brighterColor = ColorHelper.mixAlphaColors(color, 0xFFffffdd, 1 / 2f); if (vec != null) { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/ChapterLabel.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/ChapterLabel.java index a50f1432f..c77273bab 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/ChapterLabel.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/ChapterLabel.java @@ -5,6 +5,7 @@ import java.util.function.BiConsumer; import javax.annotation.Nonnull; import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.gui.widgets.AbstractSimiWidget; import com.simibubi.create.foundation.ponder.content.PonderChapter; @@ -20,17 +21,18 @@ public class ChapterLabel extends AbstractSimiWidget { public ChapterLabel(PonderChapter chapter, int x, int y, BiConsumer onClick) { super(x, y, 175, 38); - this.button = new PonderButton(x + 4, y + 4, onClick, 30, 30).showing(chapter); - this.button.fade(1); + this.button = new PonderButton(x + 4, y + 4, 30, 30) + .showing(chapter) + .withCallback(onClick); this.chapter = chapter; } @Override public void render(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - UIRenderHelper.streak(ms, 0, x, y + height / 2, height - 2, width, 0x101010); + UIRenderHelper.streak(ms, 0, x, y + height / 2, height - 2, width); Minecraft.getInstance().fontRenderer.draw(ms, Lang.translate("ponder.chapter." + chapter.getId()), x + 50, - y + 20, 0xffddeeff); + y + 20, Theme.i(Theme.Key.TEXT_ACCENT_SLIGHT)); button.renderButton(ms, mouseX, mouseY, partialTicks); super.render(ms, mouseX, mouseY, partialTicks); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderButton.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderButton.java index fb40f8784..2533e3e9a 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderButton.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderButton.java @@ -1,175 +1,105 @@ package com.simibubi.create.foundation.ponder.ui; -import java.util.function.BiConsumer; +import java.awt.Color; + +import javax.annotation.Nonnull; import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.gui.IScreenRenderable; -import com.simibubi.create.foundation.gui.widgets.AbstractSimiWidget; -import com.simibubi.create.foundation.ponder.PonderUI; +import com.simibubi.create.foundation.gui.RenderElement; +import com.simibubi.create.foundation.gui.Theme; +import com.simibubi.create.foundation.gui.widgets.BoxWidget; +import com.simibubi.create.foundation.gui.widgets.ElementWidget; +import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.animation.LerpedFloat; import net.minecraft.client.Minecraft; import net.minecraft.client.settings.KeyBinding; import net.minecraft.item.ItemStack; +import net.minecraft.util.math.MathHelper; -public class PonderButton extends AbstractSimiWidget { +public class PonderButton extends BoxWidget { - private IScreenRenderable icon; - private ItemStack item; - protected boolean pressed; - private BiConsumer onClick; - private int xFadeModifier; - private int yFadeModifier; - private float fade; - private KeyBinding shortcut; - private LerpedFloat flash; - private Couple customPassiveBorder; + protected ItemStack item; + protected KeyBinding shortcut; + protected LerpedFloat flash = LerpedFloat.linear().startWithValue(0).chase(0, 0.1f, LerpedFloat.Chaser.EXP); - public static final int SIZE = 20; + public PonderButton(int x, int y) { + this(x, y, 20, 20); + } - public PonderButton(int x, int y, BiConsumer onClick, int width, int height) { + public PonderButton(int x, int y, int width, int height) { super(x, y, width, height); - this.onClick = onClick; - flash = LerpedFloat.linear() - .startWithValue(0); + z = 400; + paddingX = 2; + paddingY = 2; } - public PonderButton(int x, int y, BiConsumer onClick) { - this(x, y, onClick, SIZE, SIZE); - } - - public PonderButton(int x, int y, Runnable onClick) { - this(x, y, ($, $$) -> onClick.run()); - } - - public PonderButton showing(IScreenRenderable icon) { - this.icon = icon; - return this; - } - - public PonderButton showing(ItemStack item) { - this.item = item; - return this; - } - - public PonderButton customColors(int start, int end) { - this.customPassiveBorder = Couple.create(start, end); - return this; - } - - public PonderButton shortcut(KeyBinding key) { + public T withShortcut(KeyBinding key) { this.shortcut = key; - return this; + //noinspection unchecked + return (T) this; } - public PonderButton fade(int xModifier, int yModifier) { - this.xFadeModifier = xModifier; - this.yFadeModifier = yModifier; - return this; + public T showing(ItemStack item) { + this.item = item; + return super.showingElement(GuiGameElement.of(item) + .scale(1.5f) + .at(-4, -4)); } - public void fade(float fade) { - this.fade = fade; + @Override + public T showingElement(RenderElement element) { + return super.showingElement(element); } public void flash() { - float value = flash.getValue(); - flash.setValue(value + (1 - value) * .2f); + flash.updateChaseTarget(1); } public void dim() { - float value = flash.getValue(); - flash.setValue(value * .5f); + flash.updateChaseTarget(0); } @Override - public void renderButton(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - if (!visible) - return; - if (fade < .1f) - return; + public void tick() { + super.tick(); + flash.tickChaser(); + } - hovered = isMouseOver(mouseX, mouseY) && fade > .75f; - - ms.push(); - RenderSystem.disableDepthTest(); - if (fade < 1) - ms.translate((1 - fade) * -5 * xFadeModifier, (1 - fade) * -5 * yFadeModifier, 0); + @Override + protected void beforeRender(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + super.beforeRender(ms, mouseX, mouseY, partialTicks); float flashValue = flash.getValue(partialTicks); - if (flashValue > .1f) - fade *= 3 * flashValue + Math.sin((PonderUI.ponderTicks + partialTicks) / 6); - - int backgroundColor = ColorHelper.applyAlpha(0xdd000000, fade); - int borderColorStart = customPassiveBorder != null ? customPassiveBorder.getFirst() : hovered ? 0x70ffffff : 0x40aa9999; - int borderColorEnd = customPassiveBorder != null ? customPassiveBorder.getSecond() : hovered ? 0x30ffffff : 0x20aa9999; - borderColorStart = ColorHelper.applyAlpha(borderColorStart, fade); - borderColorEnd = ColorHelper.applyAlpha(borderColorEnd, fade); - - ms.translate(0, 0, 400); - PonderUI.renderBox(ms, x, y, width, height, backgroundColor, borderColorStart, borderColorEnd); - ms.translate(0, 0, 100); - - if (icon != null) { - RenderSystem.enableBlend(); - RenderSystem.color4f(1, 1, 1, fade); - ms.push(); - ms.translate(x + 2, y + 2, 0); - ms.scale((width - 4) / 16f, (height - 4) / 16f, 1); - icon.draw(ms, this, 0, 0); - ms.pop(); + if (flashValue > .1f) { + float sin = 0.5f + 0.5f * MathHelper.sin((AnimationTickHolder.getTicks(true) + partialTicks) / 6f); + sin *= flashValue; + Color c1 = gradientColor1; + Color c2 = gradientColor2; + Color nc1 = new Color(c1.getRed(), c1.getGreen(), c1.getBlue(), MathHelper.clamp(c1.getAlpha() + 50, 0, 255)); + Color nc2 = new Color(c2.getRed(), c2.getGreen(), c2.getBlue(), MathHelper.clamp(c2.getAlpha() + 50, 0, 255)); + gradientColor1 = ColorHelper.mixColors(c1, nc1, sin); + gradientColor2 = ColorHelper.mixColors(c2, nc2, sin); } - if (item != null) { - ms.push(); - ms.translate(0, 0, -100); - GuiGameElement.of(item) - .at(x - 2, y - 2) - .scale(1.5f) - .render(ms); - ms.pop(); - } - if (shortcut != null) - drawCenteredText(ms, Minecraft.getInstance().fontRenderer, shortcut.getBoundKeyLocalizedText(), x + width / 2 + 8, - y + height - 6, ColorHelper.applyAlpha(0xff606060, fade)); - - ms.pop(); - } - - public void runCallback(double mouseX, double mouseY) { - onClick.accept((int) mouseX, (int) mouseY); } @Override - public void onClick(double p_onClick_1_, double p_onClick_3_) { - super.onClick(p_onClick_1_, p_onClick_3_); - this.pressed = true; - } + public void renderButton(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + super.renderButton(ms, mouseX, mouseY, partialTicks); + float fadeValue = fade.getValue(); - @Override - public void onRelease(double p_onRelease_1_, double p_onRelease_3_) { - super.onRelease(p_onRelease_1_, p_onRelease_3_); - this.pressed = false; - } + if (fadeValue < .1f) + return; - /*public void setToolTip(String text) { - toolTip.clear(); - toolTip.add(text); - }*/ + if (shortcut != null) { + ms.translate(0, 0, z+50); + drawCenteredText(ms, Minecraft.getInstance().fontRenderer, shortcut.getBoundKeyLocalizedText(), x + width / 2 + 8, y + height - 6, ColorHelper.applyAlpha(Theme.i(Theme.Key.TEXT_DARKER), fadeValue)); + } + } public ItemStack getItem() { return item; } - - @Override - public boolean isMouseOver(double x, double y) { - double m = 4; - x = Math.floor(x); - y = Math.floor(y); - return active && visible - && !(x < this.x - m || x > this.x + width + m - 1 || y < this.y - m || y > this.y + height + m - 1); - } } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java b/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java index a589bc7ca..e036d7dab 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java @@ -8,6 +8,8 @@ import java.util.function.Consumer; import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; +import com.simibubi.create.foundation.utility.IPartialSafeNBT; + import net.minecraft.block.BlockState; import net.minecraft.nbt.CompoundNBT; import net.minecraft.tileentity.ITickableTileEntity; @@ -16,7 +18,7 @@ import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.items.CapabilityItemHandler; -public abstract class SmartTileEntity extends SyncedTileEntity implements ITickableTileEntity { +public abstract class SmartTileEntity extends SyncedTileEntity implements ITickableTileEntity, IPartialSafeNBT { private final Map, TileEntityBehaviour> behaviours; // Internally maintained to be identical to behaviorMap.values() in order to improve iteration performance. @@ -118,6 +120,14 @@ public abstract class SmartTileEntity extends SyncedTileEntity implements ITicka behaviourList.forEach(tb -> tb.write(compound, clientPacket)); } + public void writeSafe(CompoundNBT compound, boolean clientPacket) { + super.write(compound); + behaviourList.forEach(tb -> { + if (tb.isSafeNBT()) + tb.write(compound, clientPacket); + }); + } + @Override public void remove() { forEachBehaviour(TileEntityBehaviour::remove); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/TileEntityBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/TileEntityBehaviour.java index 925677123..931b5f4bd 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/TileEntityBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/TileEntityBehaviour.java @@ -42,6 +42,8 @@ public abstract class TileEntityBehaviour { } + public boolean isSafeNBT() { return false; } + public void onBlockChanged(BlockState oldState) { } @@ -94,5 +96,4 @@ public abstract class TileEntityBehaviour { SmartTileEntity ste = (SmartTileEntity) te; return ste.getBehaviour(type); } - } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java index 803476b13..c6b7acebe 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java @@ -57,6 +57,9 @@ public class FilteringBehaviour extends TileEntityBehaviour { fluidFilter = false; } + @Override + public boolean isSafeNBT() { return true; } + @Override public void write(CompoundNBT nbt, boolean clientPacket) { nbt.put("Filter", getFilter().serializeNBT()); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/SidedFilteringBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/SidedFilteringBehaviour.java index 88097a681..9a7f0a490 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/SidedFilteringBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/SidedFilteringBehaviour.java @@ -58,6 +58,9 @@ public class SidedFilteringBehaviour extends FilteringBehaviour { removeFilter(d); } + @Override + public boolean isSafeNBT() { return true; } + @Override public void write(CompoundNBT nbt, boolean clientPacket) { nbt.put("Filters", NBTHelper.writeCompoundList(sidedFilters.entrySet(), entry -> { diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/InvManipulationBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/InvManipulationBehaviour.java index 54336ccdc..eac304882 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/InvManipulationBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/InvManipulationBehaviour.java @@ -160,7 +160,7 @@ public class InvManipulationBehaviour extends TileEntityBehaviour { @Override public void tick() { super.tick(); - if (findNewNextTick) { + if (findNewNextTick || getWorld().getGameTime() % 64 == 0) { findNewNextTick = false; findNewCapability(); } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkBehaviour.java index 3d708e8f1..27d529ca7 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkBehaviour.java @@ -115,6 +115,9 @@ public class LinkBehaviour extends TileEntityBehaviour { getHandler().removeFromNetwork(this); } + @Override + public boolean isSafeNBT() { return true; } + @Override public void write(CompoundNBT nbt, boolean clientPacket) { super.write(nbt, clientPacket); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueBehaviour.java index c67fc80e0..d189a689d 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueBehaviour.java @@ -54,6 +54,9 @@ public class ScrollValueBehaviour extends TileEntityBehaviour { ticksUntilScrollPacket = -1; } + @Override + public boolean isSafeNBT() { return true; } + @Override public void write(CompoundNBT nbt, boolean clientPacket) { nbt.putInt("ScrollValue", value); @@ -95,7 +98,7 @@ public class ScrollValueBehaviour extends TileEntityBehaviour { clientCallback = valueCallback; return this; } - + public ScrollValueBehaviour withCallback(Consumer valueCallback) { callback = valueCallback; return this; @@ -126,7 +129,7 @@ public class ScrollValueBehaviour extends TileEntityBehaviour { this.unit = unit; return this; } - + public ScrollValueBehaviour onlyActiveWhen(Supplier condition) { isActive = condition; return this; @@ -168,7 +171,7 @@ public class ScrollValueBehaviour extends TileEntityBehaviour { public BehaviourType getType() { return TYPE; } - + public boolean isActive() { return isActive.get(); } @@ -182,7 +185,7 @@ public class ScrollValueBehaviour extends TileEntityBehaviour { public void setLabel(ITextComponent label) { this.label = label; } - + public static class StepContext { public int currentValue; public boolean forward; diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/simple/DeferralBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/simple/DeferralBehaviour.java index 59db72bcf..3f1bb7fd9 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/simple/DeferralBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/simple/DeferralBehaviour.java @@ -20,6 +20,9 @@ public class DeferralBehaviour extends TileEntityBehaviour { this.callback = callback; } + @Override + public boolean isSafeNBT() { return true; } + @Override public void write(CompoundNBT nbt, boolean clientPacket) { nbt.putBoolean("NeedsUpdate", needsUpdate); @@ -38,7 +41,7 @@ public class DeferralBehaviour extends TileEntityBehaviour { if (needsUpdate && callback.get()) needsUpdate = false; } - + public void scheduleUpdate() { needsUpdate = true; } diff --git a/src/main/java/com/simibubi/create/foundation/utility/AngleHelper.java b/src/main/java/com/simibubi/create/foundation/utility/AngleHelper.java index 9884e71c4..3f8723672 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/AngleHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/AngleHelper.java @@ -5,6 +5,9 @@ import net.minecraft.util.Direction.Axis; public class AngleHelper { + /** + * Legacy method. See {@link #horizontalAngleNew(Direction)} for new method. + */ public static float horizontalAngle(Direction facing) { float angle = facing.getHorizontalAngle(); if (facing.getAxis() == Axis.X) @@ -12,6 +15,19 @@ public class AngleHelper { return angle; } + /** + * Same as {@link #horizontalAngle(Direction)}, but returns 0 instead of -90 for vertical directions. + */ + public static float horizontalAngleNew(Direction facing) { + if (facing.getAxis().isVertical()) { + return 0; + } + float angle = facing.getHorizontalAngle(); + if (facing.getAxis() == Axis.X) + angle = -angle; + return angle; + } + public static float verticalAngle(Direction facing) { return facing == Direction.UP ? -90 : facing == Direction.DOWN ? 90 : 0; } diff --git a/src/main/java/com/simibubi/create/foundation/utility/AnimationTickHolder.java b/src/main/java/com/simibubi/create/foundation/utility/AnimationTickHolder.java index 762c873c2..efc5f90f8 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/AnimationTickHolder.java +++ b/src/main/java/com/simibubi/create/foundation/utility/AnimationTickHolder.java @@ -10,20 +10,28 @@ import net.minecraft.world.IWorld; public class AnimationTickHolder { private static int ticks; + private static int paused_ticks; public static void reset() { ticks = 0; + paused_ticks = 0; } public static void tick() { if (!Minecraft.getInstance() .isGamePaused()) { ticks = (ticks + 1) % 1_728_000; // wrap around every 24 hours so we maintain enough floating point precision + } else { + paused_ticks = (paused_ticks + 1) % 1_728_000; } } public static int getTicks() { - return ticks; + return getTicks(false); + } + + public static int getTicks(boolean includePaused) { + return includePaused ? ticks + paused_ticks : ticks; } public static float getRenderTime() { diff --git a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java index a70af7ca1..cc76d5dbe 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java @@ -1,9 +1,18 @@ package com.simibubi.create.foundation.utility; +import java.util.ArrayList; +import java.util.List; import java.util.function.Consumer; import javax.annotation.Nullable; +import net.minecraft.block.AbstractRailBlock; +import net.minecraft.block.RailBlock; + +import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.chunk.ChunkSection; +import net.minecraftforge.common.util.BlockSnapshot; + import org.apache.commons.lang3.mutable.MutableInt; import com.simibubi.create.AllBlocks; @@ -234,6 +243,24 @@ public class BlockHelper { .isEmpty(); } + private static void placeRailWithoutUpdate(World world, BlockState state, BlockPos target) { + int i = target.getX() & 15; + int j = target.getY(); + int k = target.getZ() & 15; + Chunk chunk = world.getChunkAt(target); + ChunkSection chunksection = chunk.getSections()[j >> 4]; + if (chunksection == Chunk.EMPTY_SECTION) { + chunksection = new ChunkSection(j >> 4 << 4); + chunk.getSections()[j >> 4] = chunksection; + } + BlockState old = chunksection.setBlockState(i, j & 15, k, state); + chunk.markDirty(); + world.markAndNotifyBlock(target, chunk, old, state, 82, 512); + + world.setBlockState(target, state, 82); + world.neighborChanged(target, world.getBlockState(target.down()).getBlock(), target.down()); + } + public static void placeSchematicBlock(World world, BlockState state, BlockPos target, ItemStack stack, @Nullable CompoundNBT data) { // Piston @@ -268,7 +295,13 @@ public class BlockHelper { Block.spawnDrops(state, world, target); return; } - world.setBlockState(target, state, 18); + + if (state.getBlock() instanceof AbstractRailBlock) { + placeRailWithoutUpdate(world, state, target); + } else { + world.setBlockState(target, state, 18); + } + if (data != null) { TileEntity tile = world.getTileEntity(target); if (tile != null) { diff --git a/src/main/java/com/simibubi/create/foundation/utility/ColorHelper.java b/src/main/java/com/simibubi/create/foundation/utility/ColorHelper.java index 51996fb3a..d02fb3156 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/ColorHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/ColorHelper.java @@ -1,7 +1,10 @@ package com.simibubi.create.foundation.utility; +import java.awt.Color; import java.util.UUID; +import javax.annotation.Nonnull; + import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.util.math.MathHelper; @@ -39,6 +42,10 @@ public class ColorHelper { return (color & 0xFFFFFF) | alphaChannel << 24; } + public static Color applyAlpha(Color c, float alpha) { + return new Color(applyAlpha(c.getRGB(), alpha), true); + } + public static int mixColors(int color1, int color2, float w) { int r1 = (color1 >> 16); int g1 = (color1 >> 8) & 0xFF; @@ -52,6 +59,23 @@ public class ColorHelper { return color; } + @Nonnull + public static Color mixColors(@Nonnull Color c1, @Nonnull Color c2, float w) { + float[] cmp1 = c1.getRGBComponents(null); + float[] cmp2 = c2.getRGBComponents(null); + return new Color( + cmp1[0] + (cmp2[0] - cmp1[0]) * w, + cmp1[1] + (cmp2[1] - cmp1[1]) * w, + cmp1[2] + (cmp2[2] - cmp1[2]) * w, + cmp1[3] + (cmp2[3] - cmp1[3]) * w + ); + } + + @Nonnull + public static Color mixColors(@Nonnull Couple colors, float w) { + return mixColors(colors.getFirst(), colors.getSecond(), w); + } + public static int mixAlphaColors(int color1, int color2, float w) { int a1 = (color1 >> 24); int r1 = (color1 >> 16) & 0xFF; diff --git a/src/main/java/com/simibubi/create/foundation/utility/IPartialSafeNBT.java b/src/main/java/com/simibubi/create/foundation/utility/IPartialSafeNBT.java new file mode 100644 index 000000000..ae1ca8a9d --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/IPartialSafeNBT.java @@ -0,0 +1,7 @@ +package com.simibubi.create.foundation.utility; + +import net.minecraft.nbt.CompoundNBT; + +public interface IPartialSafeNBT { + public void writeSafe(CompoundNBT compound, boolean clientPacket); +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/VecHelper.java b/src/main/java/com/simibubi/create/foundation/utility/VecHelper.java index 665ed1796..2809bf0b6 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/VecHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/VecHelper.java @@ -21,6 +21,7 @@ import net.minecraft.util.math.vector.Vector3i; public class VecHelper { + public static final Vector3f ZERO_3F = new Vector3f(0, 0, 0); public static final Vector3d CENTER_OF_ORIGIN = new Vector3d(.5, .5, .5); public static Vector3d rotate(Vector3d vec, Vector3d rotationVec) { diff --git a/src/main/java/com/simibubi/create/foundation/utility/animation/Force.java b/src/main/java/com/simibubi/create/foundation/utility/animation/Force.java index 23e7d0080..d15b3e627 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/animation/Force.java +++ b/src/main/java/com/simibubi/create/foundation/utility/animation/Force.java @@ -81,4 +81,22 @@ public interface Force { return timeRemaining <= 0; } } + + class Static implements Force { + float force; + + public Static(float force) { + this.force = force; + } + + @Override + public float get(float mass, float value, float speed) { + return force; + } + + @Override + public boolean finished() { + return false; + } + } } diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index b99640057..c47d220df 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -55,6 +55,9 @@ public net.minecraft.client.renderer.GameRenderer func_215311_a(Lnet/minecraft/c public net.minecraft.client.renderer.FirstPersonRenderer field_187467_d # itemStackMainHand public net.minecraft.client.renderer.FirstPersonRenderer field_187468_e # itemStackOffHand +# EntityRendererManager +public net.minecraft.client.renderer.entity.EntityRendererManager field_178637_m # playerRenderer + # IResizeCallback public net.minecraft.util.palette.IResizeCallback diff --git a/src/main/resources/assets/create/lang/default/messages.json b/src/main/resources/assets/create/lang/default/messages.json index 58649f046..22a691d46 100644 --- a/src/main/resources/assets/create/lang/default/messages.json +++ b/src/main/resources/assets/create/lang/default/messages.json @@ -22,6 +22,7 @@ "create.recipe.fan_blasting.fan": "Fan behind Lava", "create.recipe.pressing": "Pressing", "create.recipe.mixing": "Mixing", + "create.recipe.deploying": "Deploying", "create.recipe.automatic_shapeless": "Automated Shapeless Crafting", "create.recipe.automatic_brewing": "Automated Brewing", "create.recipe.packing": "Compacting", diff --git a/src/main/resources/assets/create/models/block/copper_backtank/block.json b/src/main/resources/assets/create/models/block/copper_backtank/block.json new file mode 100644 index 000000000..00e3af846 --- /dev/null +++ b/src/main/resources/assets/create/models/block/copper_backtank/block.json @@ -0,0 +1,74 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "create:block/copper_backtank", + "particle": "create:block/copper_backtank" + }, + "elements": [ + { + "from": [5, 0, 5], + "to": [11, 4, 11], + "faces": { + "north": {"uv": [8.5, 4, 11.5, 6], "texture": "#0"}, + "east": {"uv": [4.5, 4, 7.5, 6], "texture": "#0"}, + "south": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, + "west": {"uv": [4.5, 4, 7.5, 6], "texture": "#0"}, + "down": {"uv": [4.5, 6.5, 7.5, 9.5], "texture": "#0"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 12, 11], + "faces": { + "north": {"uv": [8.5, 0, 11.5, 1], "texture": "#0"}, + "east": {"uv": [4.5, 0, 7.5, 1], "texture": "#0"}, + "south": {"uv": [0.5, 0, 3.5, 1], "texture": "#0"}, + "west": {"uv": [4.5, 0, 7.5, 1], "texture": "#0"}, + "up": {"uv": [0.5, 6.5, 3.5, 9.5], "texture": "#0"} + } + }, + { + "from": [4, 4, 4], + "to": [12, 10, 12], + "faces": { + "north": {"uv": [8, 1, 12, 4], "texture": "#0"}, + "east": {"uv": [4, 1, 8, 4], "texture": "#0"}, + "south": {"uv": [0, 1, 4, 4], "texture": "#0"}, + "west": {"uv": [4, 1, 8, 4], "texture": "#0"}, + "up": {"uv": [0, 6, 4, 10], "texture": "#0"}, + "down": {"uv": [4, 6, 8, 10], "texture": "#0"} + } + }, + { + "from": [4, 4, 9], + "to": [12, 10, 11], + "faces": { + "south": {"uv": [0, 12.5, 1, 13], "texture": "#0"} + } + }, + { + "from": [5, 2, 3], + "to": [11, 11, 5], + "faces": { + "north": {"uv": [1, 11.5, 4, 16], "texture": "#0"}, + "east": {"uv": [5, 11.5, 4, 16], "texture": "#0"}, + "south": {"uv": [0, 0, 6, 9], "texture": "#0"}, + "west": {"uv": [4, 11.5, 5, 16], "texture": "#0"}, + "up": {"uv": [1, 10.5, 4, 11.5], "texture": "#0"}, + "down": {"uv": [0, 11.5, 1, 14.5], "rotation": 90, "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "Tank", + "origin": [0, 0, 0], + "children": [0, 1, 2, 3, 4] + }, + { + "name": "Axle", + "origin": [8, 8, 8], + "children": [] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/copper_backtank/block_cogs.json b/src/main/resources/assets/create/models/block/copper_backtank/block_cogs.json new file mode 100644 index 000000000..e69634e11 --- /dev/null +++ b/src/main/resources/assets/create/models/block/copper_backtank/block_cogs.json @@ -0,0 +1,125 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "create:block/copper_backtank", + "particle": "create:block/copper_backtank" + }, + "elements": [ + { + "from": [5, 4, 10.5], + "to": [7, 9, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "south": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"} + } + }, + { + "from": [5, 4, 10.5], + "to": [7, 9, 11.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "south": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"} + } + }, + { + "from": [5, 6, 8.5], + "to": [7, 7, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [6.5, 11.5, 5.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"} + } + }, + { + "from": [5, 6, 8.5], + "to": [7, 7, 13.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [6.5, 11.5, 5.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"} + } + }, + { + "from": [9, 4, 10.5], + "to": [11, 9, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "south": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [9, 4, 10.5], + "to": [11, 9, 11.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "south": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [9, 6, 8.5], + "to": [11, 7, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [5.5, 11.5, 6.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"} + } + }, + { + "from": [9, 6, 8.5], + "to": [11, 7, 13.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [5.5, 11.5, 6.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "Gears", + "origin": [1, 2.5, 0.5], + "children": [0, 1, 2, 3, 4, 5, 6, 7] + }, + { + "name": "Axle", + "origin": [8, 8, 8], + "children": [] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/copper_backtank/block_shaft_input.json b/src/main/resources/assets/create/models/block/copper_backtank/block_shaft_input.json new file mode 100644 index 000000000..53bfa1a20 --- /dev/null +++ b/src/main/resources/assets/create/models/block/copper_backtank/block_shaft_input.json @@ -0,0 +1,37 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "create:block/copper_backtank", + "particle": "create:block/copper_backtank" + }, + "elements": [ + { + "from": [6.5, 12, 6.5], + "to": [9.5, 13, 9.5], + "faces": { + "north": {"uv": [14.5, 4, 16, 4.5], "texture": "#0"}, + "east": {"uv": [14.5, 3.5, 16, 4], "texture": "#0"}, + "south": {"uv": [14.5, 3.5, 16, 4], "texture": "#0"}, + "west": {"uv": [14.5, 3, 16, 3.5], "texture": "#0"} + } + }, + { + "from": [6, 13, 6], + "to": [10, 16, 10], + "faces": { + "north": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "east": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "south": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "west": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "up": {"uv": [14, 0, 16, 2], "texture": "#0"}, + "down": {"uv": [15.5, 5, 16, 5.5], "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "Axle", + "origin": [8, 8, 8], + "children": [] + }, 0, 1] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/copper_backtank/item.json b/src/main/resources/assets/create/models/block/copper_backtank/item.json new file mode 100644 index 000000000..ce9a790e2 --- /dev/null +++ b/src/main/resources/assets/create/models/block/copper_backtank/item.json @@ -0,0 +1,205 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "create:block/copper_backtank", + "particle": "create:block/copper_backtank" + }, + "elements": [ + { + "from": [5, 4, 10.5], + "to": [7, 9, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "south": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"} + } + }, + { + "from": [5, 4, 10.5], + "to": [7, 9, 11.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "south": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"} + } + }, + { + "from": [5, 6, 8.5], + "to": [7, 7, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [6.5, 11.5, 5.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"} + } + }, + { + "from": [5, 6, 8.5], + "to": [7, 7, 13.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [6.5, 11.5, 5.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"} + } + }, + { + "from": [9, 4, 10.5], + "to": [11, 9, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "south": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [9, 4, 10.5], + "to": [11, 9, 11.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "south": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [9, 6, 8.5], + "to": [11, 7, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [5.5, 11.5, 6.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"} + } + }, + { + "from": [9, 6, 8.5], + "to": [11, 7, 13.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [5.5, 11.5, 6.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 4, 11], + "faces": { + "north": {"uv": [8.5, 4, 11.5, 6], "texture": "#0"}, + "east": {"uv": [4.5, 4, 7.5, 6], "texture": "#0"}, + "south": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, + "west": {"uv": [4.5, 4, 7.5, 6], "texture": "#0"}, + "down": {"uv": [4.5, 6.5, 7.5, 9.5], "texture": "#0"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 12, 11], + "faces": { + "north": {"uv": [8.5, 0, 11.5, 1], "texture": "#0"}, + "east": {"uv": [4.5, 0, 7.5, 1], "texture": "#0"}, + "south": {"uv": [0.5, 0, 3.5, 1], "texture": "#0"}, + "west": {"uv": [4.5, 0, 7.5, 1], "texture": "#0"}, + "up": {"uv": [0.5, 6.5, 3.5, 9.5], "texture": "#0"} + } + }, + { + "from": [4, 4, 4], + "to": [12, 10, 12], + "faces": { + "north": {"uv": [8, 1, 12, 4], "texture": "#0"}, + "east": {"uv": [4, 1, 8, 4], "texture": "#0"}, + "south": {"uv": [0, 1, 4, 4], "texture": "#0"}, + "west": {"uv": [4, 1, 8, 4], "texture": "#0"}, + "up": {"uv": [0, 6, 4, 10], "texture": "#0"}, + "down": {"uv": [4, 6, 8, 10], "texture": "#0"} + } + }, + { + "from": [4, 4, 9], + "to": [12, 10, 11], + "faces": { + "south": {"uv": [0, 12.5, 1, 13], "texture": "#0"} + } + }, + { + "from": [5, 2, 3], + "to": [11, 11, 5], + "faces": { + "north": {"uv": [1, 11.5, 4, 16], "texture": "#0"}, + "east": {"uv": [5, 11.5, 4, 16], "texture": "#0"}, + "south": {"uv": [0, 0, 6, 9], "texture": "#0"}, + "west": {"uv": [4, 11.5, 5, 16], "texture": "#0"}, + "up": {"uv": [1, 10.5, 4, 11.5], "texture": "#0"}, + "down": {"uv": [0, 11.5, 1, 14.5], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [6.5, 12, 6.5], + "to": [9.5, 13, 9.5], + "faces": { + "north": {"uv": [14.5, 4, 16, 4.5], "texture": "#0"}, + "east": {"uv": [14.5, 3.5, 16, 4], "texture": "#0"}, + "south": {"uv": [14.5, 3.5, 16, 4], "texture": "#0"}, + "west": {"uv": [14.5, 3, 16, 3.5], "texture": "#0"} + } + }, + { + "from": [6, 13, 6], + "to": [10, 16, 10], + "faces": { + "north": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "east": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "south": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "west": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "up": {"uv": [14, 0, 16, 2], "texture": "#0"}, + "down": {"uv": [15.5, 5, 16, 5.5], "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "Gears", + "origin": [1, 2.5, 0.5], + "children": [0, 1, 2, 3, 4, 5, 6, 7] + }, + { + "name": "Tank", + "origin": [0, 0, 0], + "children": [8, 9, 10, 11, 12] + }, + { + "name": "Axle", + "origin": [8, 8, 8], + "children": [] + }, 13, 14] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/adjustable_chain_gearshift.png b/src/main/resources/assets/create/textures/block/adjustable_chain_gearshift.png index fc29ec81a..de60b5450 100644 Binary files a/src/main/resources/assets/create/textures/block/adjustable_chain_gearshift.png and b/src/main/resources/assets/create/textures/block/adjustable_chain_gearshift.png differ diff --git a/src/main/resources/assets/create/textures/block/adjustable_chain_gearshift_powered.png b/src/main/resources/assets/create/textures/block/adjustable_chain_gearshift_powered.png index 9a05222a8..42fabe909 100644 Binary files a/src/main/resources/assets/create/textures/block/adjustable_chain_gearshift_powered.png and b/src/main/resources/assets/create/textures/block/adjustable_chain_gearshift_powered.png differ diff --git a/src/main/resources/assets/create/textures/block/analog_lever.png b/src/main/resources/assets/create/textures/block/analog_lever.png index 7e5a9f70e..793bbecfe 100644 Binary files a/src/main/resources/assets/create/textures/block/analog_lever.png and b/src/main/resources/assets/create/textures/block/analog_lever.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_alloy_mesh.png b/src/main/resources/assets/create/textures/block/andesite_alloy_mesh.png index c57558cee..7ca592b23 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_alloy_mesh.png and b/src/main/resources/assets/create/textures/block/andesite_alloy_mesh.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_bricks.png b/src/main/resources/assets/create/textures/block/andesite_bricks.png index f774f92c3..2ba1c5401 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_bricks.png and b/src/main/resources/assets/create/textures/block/andesite_bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_casing.png b/src/main/resources/assets/create/textures/block/andesite_casing.png index 472e90e4a..42081012a 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_casing.png and b/src/main/resources/assets/create/textures/block/andesite_casing.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_casing_belt.png b/src/main/resources/assets/create/textures/block/andesite_casing_belt.png index f8b25b8c7..40511c995 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_casing_belt.png and b/src/main/resources/assets/create/textures/block/andesite_casing_belt.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_casing_connected.png b/src/main/resources/assets/create/textures/block/andesite_casing_connected.png index ca0e7c1ef..91b3a92d7 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_casing_connected.png and b/src/main/resources/assets/create/textures/block/andesite_casing_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_casing_short.png b/src/main/resources/assets/create/textures/block/andesite_casing_short.png index 3bed29ac3..3c68417e1 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_casing_short.png and b/src/main/resources/assets/create/textures/block/andesite_casing_short.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_casing_very_short.png b/src/main/resources/assets/create/textures/block/andesite_casing_very_short.png index 05c00d12b..bf239be4f 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_casing_very_short.png and b/src/main/resources/assets/create/textures/block/andesite_casing_very_short.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_frame.png b/src/main/resources/assets/create/textures/block/andesite_frame.png index 3531f4a63..88b0c5ac5 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_frame.png and b/src/main/resources/assets/create/textures/block/andesite_frame.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel.png b/src/main/resources/assets/create/textures/block/andesite_funnel.png index 9f795dc7b..10f72e7dd 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel.png and b/src/main/resources/assets/create/textures/block/andesite_funnel.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_back.png b/src/main/resources/assets/create/textures/block/andesite_funnel_back.png index 3936bfd3b..63523dee7 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_back.png and b/src/main/resources/assets/create/textures/block/andesite_funnel_back.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_neutral.png b/src/main/resources/assets/create/textures/block/andesite_funnel_neutral.png index dde514836..af4ed21dd 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_neutral.png and b/src/main/resources/assets/create/textures/block/andesite_funnel_neutral.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png b/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png index e7b7b046d..e4a661a2b 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png and b/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_powered.png b/src/main/resources/assets/create/textures/block/andesite_funnel_powered.png index d10762084..9044f6a19 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_powered.png and b/src/main/resources/assets/create/textures/block/andesite_funnel_powered.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_pull.png b/src/main/resources/assets/create/textures/block/andesite_funnel_pull.png index 8fa778d40..70c41165c 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_pull.png and b/src/main/resources/assets/create/textures/block/andesite_funnel_pull.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_push.png b/src/main/resources/assets/create/textures/block/andesite_funnel_push.png index 980f0bda9..dc1d5886e 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_push.png and b/src/main/resources/assets/create/textures/block/andesite_funnel_push.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_slope.png b/src/main/resources/assets/create/textures/block/andesite_funnel_slope.png index cf4441c47..c3e3bc614 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_slope.png and b/src/main/resources/assets/create/textures/block/andesite_funnel_slope.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_tall.png b/src/main/resources/assets/create/textures/block/andesite_funnel_tall.png index f6adf3328..e658eba80 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_tall.png and b/src/main/resources/assets/create/textures/block/andesite_funnel_tall.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_tall_powered.png b/src/main/resources/assets/create/textures/block/andesite_funnel_tall_powered.png index 38e04735c..1619eece2 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_tall_powered.png and b/src/main/resources/assets/create/textures/block/andesite_funnel_tall_powered.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_tunnel.png b/src/main/resources/assets/create/textures/block/andesite_tunnel.png index a9991dfa1..d9bb320f1 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_tunnel.png and b/src/main/resources/assets/create/textures/block/andesite_tunnel.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_tunnel_top.png b/src/main/resources/assets/create/textures/block/andesite_tunnel_top.png index 606dabda8..ff0e67138 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_tunnel_top.png and b/src/main/resources/assets/create/textures/block/andesite_tunnel_top.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_tunnel_top_window.png b/src/main/resources/assets/create/textures/block/andesite_tunnel_top_window.png index 7392a227f..65c0726ae 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_tunnel_top_window.png and b/src/main/resources/assets/create/textures/block/andesite_tunnel_top_window.png differ diff --git a/src/main/resources/assets/create/textures/block/axis.png b/src/main/resources/assets/create/textures/block/axis.png index 2d5de0d96..3a90166d5 100644 Binary files a/src/main/resources/assets/create/textures/block/axis.png and b/src/main/resources/assets/create/textures/block/axis.png differ diff --git a/src/main/resources/assets/create/textures/block/axis_top.png b/src/main/resources/assets/create/textures/block/axis_top.png index ad458051e..c77c30c20 100644 Binary files a/src/main/resources/assets/create/textures/block/axis_top.png and b/src/main/resources/assets/create/textures/block/axis_top.png differ diff --git a/src/main/resources/assets/create/textures/block/basin.png b/src/main/resources/assets/create/textures/block/basin.png index 73cf03ed4..da412cf55 100644 Binary files a/src/main/resources/assets/create/textures/block/basin.png and b/src/main/resources/assets/create/textures/block/basin.png differ diff --git a/src/main/resources/assets/create/textures/block/basin_canal.png b/src/main/resources/assets/create/textures/block/basin_canal.png index c300a2a1b..0e5bb55b6 100644 Binary files a/src/main/resources/assets/create/textures/block/basin_canal.png and b/src/main/resources/assets/create/textures/block/basin_canal.png differ diff --git a/src/main/resources/assets/create/textures/block/basin_side.png b/src/main/resources/assets/create/textures/block/basin_side.png index 5cd57bd03..5a8cfe2f1 100644 Binary files a/src/main/resources/assets/create/textures/block/basin_side.png and b/src/main/resources/assets/create/textures/block/basin_side.png differ diff --git a/src/main/resources/assets/create/textures/block/bearing_top.png b/src/main/resources/assets/create/textures/block/bearing_top.png index 3579810bd..3fc200fee 100644 Binary files a/src/main/resources/assets/create/textures/block/bearing_top.png and b/src/main/resources/assets/create/textures/block/bearing_top.png differ diff --git a/src/main/resources/assets/create/textures/block/bearing_top_wooden.png b/src/main/resources/assets/create/textures/block/bearing_top_wooden.png index 05fb05a4d..455a6fbb5 100644 Binary files a/src/main/resources/assets/create/textures/block/bearing_top_wooden.png and b/src/main/resources/assets/create/textures/block/bearing_top_wooden.png differ diff --git a/src/main/resources/assets/create/textures/block/belt.png b/src/main/resources/assets/create/textures/block/belt.png index 80df740f2..63a419c13 100644 Binary files a/src/main/resources/assets/create/textures/block/belt.png and b/src/main/resources/assets/create/textures/block/belt.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/black_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/black_diagonal_scroll.png index 7f09c1f29..8be0bb5b9 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/black_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt/black_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/black_scroll.png b/src/main/resources/assets/create/textures/block/belt/black_scroll.png index 8cc4f7df5..f646081e3 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/black_scroll.png and b/src/main/resources/assets/create/textures/block/belt/black_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/blue_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/blue_diagonal_scroll.png index 5da06f8d1..000b23298 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/blue_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt/blue_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/blue_scroll.png b/src/main/resources/assets/create/textures/block/belt/blue_scroll.png index abaa0bb26..aee4e9812 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/blue_scroll.png and b/src/main/resources/assets/create/textures/block/belt/blue_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/brown_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/brown_diagonal_scroll.png index b1f493279..4191bcbd2 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/brown_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt/brown_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/brown_scroll.png b/src/main/resources/assets/create/textures/block/belt/brown_scroll.png index 3b9ae0cb4..b7f30588b 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/brown_scroll.png and b/src/main/resources/assets/create/textures/block/belt/brown_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/cyan_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/cyan_diagonal_scroll.png index 5b313c3cc..a32e403e1 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/cyan_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt/cyan_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/cyan_scroll.png b/src/main/resources/assets/create/textures/block/belt/cyan_scroll.png index 87951f7f2..61471f9da 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/cyan_scroll.png and b/src/main/resources/assets/create/textures/block/belt/cyan_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/gray_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/gray_diagonal_scroll.png index 17be8d10e..7b0e9b97c 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/gray_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt/gray_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/gray_scroll.png b/src/main/resources/assets/create/textures/block/belt/gray_scroll.png index 5e5e3f17c..a8a1e21fb 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/gray_scroll.png and b/src/main/resources/assets/create/textures/block/belt/gray_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/green_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/green_diagonal_scroll.png index 55f29f0de..2ab1c58af 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/green_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt/green_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/green_scroll.png b/src/main/resources/assets/create/textures/block/belt/green_scroll.png index eac299196..53fbf1194 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/green_scroll.png and b/src/main/resources/assets/create/textures/block/belt/green_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/light_blue_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/light_blue_diagonal_scroll.png index 162128bac..099d48fae 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/light_blue_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt/light_blue_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/light_blue_scroll.png b/src/main/resources/assets/create/textures/block/belt/light_blue_scroll.png index 946398440..241d46654 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/light_blue_scroll.png and b/src/main/resources/assets/create/textures/block/belt/light_blue_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/light_gray_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/light_gray_diagonal_scroll.png index 0f0ef3be7..52e9d83c1 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/light_gray_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt/light_gray_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/light_gray_scroll.png b/src/main/resources/assets/create/textures/block/belt/light_gray_scroll.png index 0bc6bca7a..3a38297b7 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/light_gray_scroll.png and b/src/main/resources/assets/create/textures/block/belt/light_gray_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/lime_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/lime_diagonal_scroll.png index 8a964537b..e29aa9ae1 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/lime_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt/lime_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/lime_scroll.png b/src/main/resources/assets/create/textures/block/belt/lime_scroll.png index 12f08decb..0048c9c99 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/lime_scroll.png and b/src/main/resources/assets/create/textures/block/belt/lime_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/magenta_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/magenta_diagonal_scroll.png index 391573768..15a5f032d 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/magenta_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt/magenta_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/magenta_scroll.png b/src/main/resources/assets/create/textures/block/belt/magenta_scroll.png index 97730b8a0..071b8c9e7 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/magenta_scroll.png and b/src/main/resources/assets/create/textures/block/belt/magenta_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/orange_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/orange_diagonal_scroll.png index 9b05628bf..7dea63fc0 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/orange_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt/orange_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/orange_scroll.png b/src/main/resources/assets/create/textures/block/belt/orange_scroll.png index b17c3706e..3e34871e2 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/orange_scroll.png and b/src/main/resources/assets/create/textures/block/belt/orange_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/pink_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/pink_diagonal_scroll.png index cb45cfb80..14aa65709 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/pink_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt/pink_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/pink_scroll.png b/src/main/resources/assets/create/textures/block/belt/pink_scroll.png index f60386562..b0176ab6b 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/pink_scroll.png and b/src/main/resources/assets/create/textures/block/belt/pink_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/purple_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/purple_diagonal_scroll.png index e88f5ee04..128ea0ea4 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/purple_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt/purple_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/purple_scroll.png b/src/main/resources/assets/create/textures/block/belt/purple_scroll.png index 2a7dd16d5..627f7e04d 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/purple_scroll.png and b/src/main/resources/assets/create/textures/block/belt/purple_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/red_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/red_diagonal_scroll.png index 611567dde..841297edd 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/red_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt/red_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/red_scroll.png b/src/main/resources/assets/create/textures/block/belt/red_scroll.png index c09915c68..a1850443a 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/red_scroll.png and b/src/main/resources/assets/create/textures/block/belt/red_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/white_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/white_diagonal_scroll.png index 527a647af..796b9c257 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/white_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt/white_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/white_scroll.png b/src/main/resources/assets/create/textures/block/belt/white_scroll.png index 8251b3b1f..84d6cca0c 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/white_scroll.png and b/src/main/resources/assets/create/textures/block/belt/white_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/yellow_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/yellow_diagonal_scroll.png index d8622414f..76f76aac4 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/yellow_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt/yellow_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt/yellow_scroll.png b/src/main/resources/assets/create/textures/block/belt/yellow_scroll.png index 256e1e45b..8d8e7ecb0 100644 Binary files a/src/main/resources/assets/create/textures/block/belt/yellow_scroll.png and b/src/main/resources/assets/create/textures/block/belt/yellow_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt_diagonal.png b/src/main/resources/assets/create/textures/block/belt_diagonal.png index e311d5553..4cde6d50a 100644 Binary files a/src/main/resources/assets/create/textures/block/belt_diagonal.png and b/src/main/resources/assets/create/textures/block/belt_diagonal.png differ diff --git a/src/main/resources/assets/create/textures/block/belt_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt_diagonal_scroll.png index e8cdb900e..43aac94b4 100644 Binary files a/src/main/resources/assets/create/textures/block/belt_diagonal_scroll.png and b/src/main/resources/assets/create/textures/block/belt_diagonal_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/belt_offset.png b/src/main/resources/assets/create/textures/block/belt_offset.png index 84d1001dd..02e09fdf4 100644 Binary files a/src/main/resources/assets/create/textures/block/belt_offset.png and b/src/main/resources/assets/create/textures/block/belt_offset.png differ diff --git a/src/main/resources/assets/create/textures/block/belt_scroll.png b/src/main/resources/assets/create/textures/block/belt_scroll.png index b5081c7d7..d6e8e0277 100644 Binary files a/src/main/resources/assets/create/textures/block/belt_scroll.png and b/src/main/resources/assets/create/textures/block/belt_scroll.png differ diff --git a/src/main/resources/assets/create/textures/block/blaze_burner_inner.png b/src/main/resources/assets/create/textures/block/blaze_burner_inner.png index ff33417f2..dba57db1b 100644 Binary files a/src/main/resources/assets/create/textures/block/blaze_burner_inner.png and b/src/main/resources/assets/create/textures/block/blaze_burner_inner.png differ diff --git a/src/main/resources/assets/create/textures/block/blaze_burner_side.png b/src/main/resources/assets/create/textures/block/blaze_burner_side.png index a0c5664bb..f1fcf05bb 100644 Binary files a/src/main/resources/assets/create/textures/block/blaze_burner_side.png and b/src/main/resources/assets/create/textures/block/blaze_burner_side.png differ diff --git a/src/main/resources/assets/create/textures/block/blaze_heater_brazier.png b/src/main/resources/assets/create/textures/block/blaze_heater_brazier.png index c74da74a3..ae1b6ddc5 100644 Binary files a/src/main/resources/assets/create/textures/block/blaze_heater_brazier.png and b/src/main/resources/assets/create/textures/block/blaze_heater_brazier.png differ diff --git a/src/main/resources/assets/create/textures/block/blaze_kindled.png b/src/main/resources/assets/create/textures/block/blaze_kindled.png index 1626fc339..39739e936 100644 Binary files a/src/main/resources/assets/create/textures/block/blaze_kindled.png and b/src/main/resources/assets/create/textures/block/blaze_kindled.png differ diff --git a/src/main/resources/assets/create/textures/block/blaze_seething.png b/src/main/resources/assets/create/textures/block/blaze_seething.png index 33ee915fd..c0eef1b07 100644 Binary files a/src/main/resources/assets/create/textures/block/blaze_seething.png and b/src/main/resources/assets/create/textures/block/blaze_seething.png differ diff --git a/src/main/resources/assets/create/textures/block/blaze_smouldering.png b/src/main/resources/assets/create/textures/block/blaze_smouldering.png index 9fe08e2a4..8f60cec15 100644 Binary files a/src/main/resources/assets/create/textures/block/blaze_smouldering.png and b/src/main/resources/assets/create/textures/block/blaze_smouldering.png differ diff --git a/src/main/resources/assets/create/textures/block/bracket_metal.png b/src/main/resources/assets/create/textures/block/bracket_metal.png index de7116d14..3defb1da4 100644 Binary files a/src/main/resources/assets/create/textures/block/bracket_metal.png and b/src/main/resources/assets/create/textures/block/bracket_metal.png differ diff --git a/src/main/resources/assets/create/textures/block/bracket_plate_metal.png b/src/main/resources/assets/create/textures/block/bracket_plate_metal.png index cdde8144c..2a1846653 100644 Binary files a/src/main/resources/assets/create/textures/block/bracket_plate_metal.png and b/src/main/resources/assets/create/textures/block/bracket_plate_metal.png differ diff --git a/src/main/resources/assets/create/textures/block/bracket_plate_wooden.png b/src/main/resources/assets/create/textures/block/bracket_plate_wooden.png index 70a705a95..246a70594 100644 Binary files a/src/main/resources/assets/create/textures/block/bracket_plate_wooden.png and b/src/main/resources/assets/create/textures/block/bracket_plate_wooden.png differ diff --git a/src/main/resources/assets/create/textures/block/bracket_wooden.png b/src/main/resources/assets/create/textures/block/bracket_wooden.png index 618a0b139..e44461182 100644 Binary files a/src/main/resources/assets/create/textures/block/bracket_wooden.png and b/src/main/resources/assets/create/textures/block/bracket_wooden.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_block.png b/src/main/resources/assets/create/textures/block/brass_block.png index 68b6bf1e6..7742a9221 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_block.png and b/src/main/resources/assets/create/textures/block/brass_block.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_casing.png b/src/main/resources/assets/create/textures/block/brass_casing.png index fb657ce47..304f7843f 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_casing.png and b/src/main/resources/assets/create/textures/block/brass_casing.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_casing_belt.png b/src/main/resources/assets/create/textures/block/brass_casing_belt.png index 5c0c6cfd3..891794902 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_casing_belt.png and b/src/main/resources/assets/create/textures/block/brass_casing_belt.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_casing_connected.png b/src/main/resources/assets/create/textures/block/brass_casing_connected.png index d972ce31d..00bb738e5 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_casing_connected.png and b/src/main/resources/assets/create/textures/block/brass_casing_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_casing_inner.png b/src/main/resources/assets/create/textures/block/brass_casing_inner.png index 9d5649710..feb3a98c5 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_casing_inner.png and b/src/main/resources/assets/create/textures/block/brass_casing_inner.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_casing_side.png b/src/main/resources/assets/create/textures/block/brass_casing_side.png index 8574a3421..192026e14 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_casing_side.png and b/src/main/resources/assets/create/textures/block/brass_casing_side.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel.png b/src/main/resources/assets/create/textures/block/brass_funnel.png index 473c3219b..6a7940a73 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel.png and b/src/main/resources/assets/create/textures/block/brass_funnel.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_back.png b/src/main/resources/assets/create/textures/block/brass_funnel_back.png index 66bccd230..e40761bb6 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_back.png and b/src/main/resources/assets/create/textures/block/brass_funnel_back.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_neutral.png b/src/main/resources/assets/create/textures/block/brass_funnel_neutral.png index 11adc7eb0..4b873d8ad 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_neutral.png and b/src/main/resources/assets/create/textures/block/brass_funnel_neutral.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_plating.png b/src/main/resources/assets/create/textures/block/brass_funnel_plating.png index 014d9ba8d..428b2a794 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_plating.png and b/src/main/resources/assets/create/textures/block/brass_funnel_plating.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_powered.png b/src/main/resources/assets/create/textures/block/brass_funnel_powered.png index da9e0c48d..4df8fb70a 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_powered.png and b/src/main/resources/assets/create/textures/block/brass_funnel_powered.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_pull.png b/src/main/resources/assets/create/textures/block/brass_funnel_pull.png index df455d78e..52177a634 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_pull.png and b/src/main/resources/assets/create/textures/block/brass_funnel_pull.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_push.png b/src/main/resources/assets/create/textures/block/brass_funnel_push.png index 6b1c6d0e7..00d7b09e2 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_push.png and b/src/main/resources/assets/create/textures/block/brass_funnel_push.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_slope.png b/src/main/resources/assets/create/textures/block/brass_funnel_slope.png index 2c79bb0dc..9f46246be 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_slope.png and b/src/main/resources/assets/create/textures/block/brass_funnel_slope.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_tall.png b/src/main/resources/assets/create/textures/block/brass_funnel_tall.png index 8e5c56b33..91b22ff1f 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_tall.png and b/src/main/resources/assets/create/textures/block/brass_funnel_tall.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_tall_powered.png b/src/main/resources/assets/create/textures/block/brass_funnel_tall_powered.png index 97543ea4d..6b2c45c15 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_tall_powered.png and b/src/main/resources/assets/create/textures/block/brass_funnel_tall_powered.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_gearbox.png b/src/main/resources/assets/create/textures/block/brass_gearbox.png index e7c0d57a6..a595fb81d 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_gearbox.png and b/src/main/resources/assets/create/textures/block/brass_gearbox.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_storage_block.png b/src/main/resources/assets/create/textures/block/brass_storage_block.png index 502c69f66..6c70e6e84 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_storage_block.png and b/src/main/resources/assets/create/textures/block/brass_storage_block.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_tiles.png b/src/main/resources/assets/create/textures/block/brass_tiles.png index 86e4bb3a6..9d4010e30 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_tiles.png and b/src/main/resources/assets/create/textures/block/brass_tiles.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_tunnel.png b/src/main/resources/assets/create/textures/block/brass_tunnel.png index 127e492d0..8370787bc 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_tunnel.png and b/src/main/resources/assets/create/textures/block/brass_tunnel.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_tunnel_top.png b/src/main/resources/assets/create/textures/block/brass_tunnel_top.png index 0501e0c2b..4aee2f2d3 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_tunnel_top.png and b/src/main/resources/assets/create/textures/block/brass_tunnel_top.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_tunnel_top_connected.png b/src/main/resources/assets/create/textures/block/brass_tunnel_top_connected.png index 7897cdaac..6d9a2e174 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_tunnel_top_connected.png and b/src/main/resources/assets/create/textures/block/brass_tunnel_top_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_tunnel_top_window.png b/src/main/resources/assets/create/textures/block/brass_tunnel_top_window.png index bdfc76596..d7fd8da69 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_tunnel_top_window.png and b/src/main/resources/assets/create/textures/block/brass_tunnel_top_window.png differ diff --git a/src/main/resources/assets/create/textures/block/cart_assembler_side.png b/src/main/resources/assets/create/textures/block/cart_assembler_side.png index 5e031192d..1a92fadc1 100644 Binary files a/src/main/resources/assets/create/textures/block/cart_assembler_side.png and b/src/main/resources/assets/create/textures/block/cart_assembler_side.png differ diff --git a/src/main/resources/assets/create/textures/block/chute.png b/src/main/resources/assets/create/textures/block/chute.png index 03bedacdc..a38ecf614 100644 Binary files a/src/main/resources/assets/create/textures/block/chute.png and b/src/main/resources/assets/create/textures/block/chute.png differ diff --git a/src/main/resources/assets/create/textures/block/chute_diagonal.png b/src/main/resources/assets/create/textures/block/chute_diagonal.png index 91bacdde4..87d5d5790 100644 Binary files a/src/main/resources/assets/create/textures/block/chute_diagonal.png and b/src/main/resources/assets/create/textures/block/chute_diagonal.png differ diff --git a/src/main/resources/assets/create/textures/block/clockwork_bearing_side.png b/src/main/resources/assets/create/textures/block/clockwork_bearing_side.png index 453894657..5931a1506 100644 Binary files a/src/main/resources/assets/create/textures/block/clockwork_bearing_side.png and b/src/main/resources/assets/create/textures/block/clockwork_bearing_side.png differ diff --git a/src/main/resources/assets/create/textures/block/clutch_off.png b/src/main/resources/assets/create/textures/block/clutch_off.png index 802f5bbb7..bd5f6ef9f 100644 Binary files a/src/main/resources/assets/create/textures/block/clutch_off.png and b/src/main/resources/assets/create/textures/block/clutch_off.png differ diff --git a/src/main/resources/assets/create/textures/block/clutch_on.png b/src/main/resources/assets/create/textures/block/clutch_on.png index c080a88d7..d48eca706 100644 Binary files a/src/main/resources/assets/create/textures/block/clutch_on.png and b/src/main/resources/assets/create/textures/block/clutch_on.png differ diff --git a/src/main/resources/assets/create/textures/block/cogwheel.png b/src/main/resources/assets/create/textures/block/cogwheel.png index bf3cd5cf9..f996f7b96 100644 Binary files a/src/main/resources/assets/create/textures/block/cogwheel.png and b/src/main/resources/assets/create/textures/block/cogwheel.png differ diff --git a/src/main/resources/assets/create/textures/block/contact_back.png b/src/main/resources/assets/create/textures/block/contact_back.png index 7f872f17f..3431d19a6 100644 Binary files a/src/main/resources/assets/create/textures/block/contact_back.png and b/src/main/resources/assets/create/textures/block/contact_back.png differ diff --git a/src/main/resources/assets/create/textures/block/contact_front.png b/src/main/resources/assets/create/textures/block/contact_front.png index 5634e9a0f..c08c4411e 100644 Binary files a/src/main/resources/assets/create/textures/block/contact_front.png and b/src/main/resources/assets/create/textures/block/contact_front.png differ diff --git a/src/main/resources/assets/create/textures/block/contact_side.png b/src/main/resources/assets/create/textures/block/contact_side.png index d8bb701c2..68d8aa6e7 100644 Binary files a/src/main/resources/assets/create/textures/block/contact_side.png and b/src/main/resources/assets/create/textures/block/contact_side.png differ diff --git a/src/main/resources/assets/create/textures/block/contact_side_powered.png b/src/main/resources/assets/create/textures/block/contact_side_powered.png index 716fb98ca..92d7e1a7e 100644 Binary files a/src/main/resources/assets/create/textures/block/contact_side_powered.png and b/src/main/resources/assets/create/textures/block/contact_side_powered.png differ diff --git a/src/main/resources/assets/create/textures/block/content_observer.png b/src/main/resources/assets/create/textures/block/content_observer.png index fae25ed39..8c87ec827 100644 Binary files a/src/main/resources/assets/create/textures/block/content_observer.png and b/src/main/resources/assets/create/textures/block/content_observer.png differ diff --git a/src/main/resources/assets/create/textures/block/content_observer_inner.png b/src/main/resources/assets/create/textures/block/content_observer_inner.png index a0c6d29b5..a3460c3ce 100644 Binary files a/src/main/resources/assets/create/textures/block/content_observer_inner.png and b/src/main/resources/assets/create/textures/block/content_observer_inner.png differ diff --git a/src/main/resources/assets/create/textures/block/content_observer_inner_powered.png b/src/main/resources/assets/create/textures/block/content_observer_inner_powered.png index b99b2d009..f6a51f61d 100644 Binary files a/src/main/resources/assets/create/textures/block/content_observer_inner_powered.png and b/src/main/resources/assets/create/textures/block/content_observer_inner_powered.png differ diff --git a/src/main/resources/assets/create/textures/block/content_observer_powered.png b/src/main/resources/assets/create/textures/block/content_observer_powered.png index e0d087040..0171658eb 100644 Binary files a/src/main/resources/assets/create/textures/block/content_observer_powered.png and b/src/main/resources/assets/create/textures/block/content_observer_powered.png differ diff --git a/src/main/resources/assets/create/textures/block/controller_rail.png b/src/main/resources/assets/create/textures/block/controller_rail.png index 84603cb7a..289f1cc4f 100644 Binary files a/src/main/resources/assets/create/textures/block/controller_rail.png and b/src/main/resources/assets/create/textures/block/controller_rail.png differ diff --git a/src/main/resources/assets/create/textures/block/controller_rail_base.png b/src/main/resources/assets/create/textures/block/controller_rail_base.png index c8f72e61c..34b775a07 100644 Binary files a/src/main/resources/assets/create/textures/block/controller_rail_base.png and b/src/main/resources/assets/create/textures/block/controller_rail_base.png differ diff --git a/src/main/resources/assets/create/textures/block/controller_rail_powered.png b/src/main/resources/assets/create/textures/block/controller_rail_powered.png index 1c00376a1..e6d892c32 100644 Binary files a/src/main/resources/assets/create/textures/block/controller_rail_powered.png and b/src/main/resources/assets/create/textures/block/controller_rail_powered.png differ diff --git a/src/main/resources/assets/create/textures/block/controller_rail_tint.png b/src/main/resources/assets/create/textures/block/controller_rail_tint.png index ac6002c83..c58f3ec80 100644 Binary files a/src/main/resources/assets/create/textures/block/controller_rail_tint.png and b/src/main/resources/assets/create/textures/block/controller_rail_tint.png differ diff --git a/src/main/resources/assets/create/textures/block/copper_backtank.png b/src/main/resources/assets/create/textures/block/copper_backtank.png new file mode 100644 index 000000000..2838c0c2d Binary files /dev/null and b/src/main/resources/assets/create/textures/block/copper_backtank.png differ diff --git a/src/main/resources/assets/create/textures/block/copper_casing.png b/src/main/resources/assets/create/textures/block/copper_casing.png index c4c96d8ae..e9eaface2 100644 Binary files a/src/main/resources/assets/create/textures/block/copper_casing.png and b/src/main/resources/assets/create/textures/block/copper_casing.png differ diff --git a/src/main/resources/assets/create/textures/block/copper_casing_connected.png b/src/main/resources/assets/create/textures/block/copper_casing_connected.png index b972e9bc6..9cd000972 100644 Binary files a/src/main/resources/assets/create/textures/block/copper_casing_connected.png and b/src/main/resources/assets/create/textures/block/copper_casing_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/copper_gearbox.png b/src/main/resources/assets/create/textures/block/copper_gearbox.png index 458265dd3..6de531b8c 100644 Binary files a/src/main/resources/assets/create/textures/block/copper_gearbox.png and b/src/main/resources/assets/create/textures/block/copper_gearbox.png differ diff --git a/src/main/resources/assets/create/textures/block/copper_plating.png b/src/main/resources/assets/create/textures/block/copper_plating.png index 5c5fab81f..52453314c 100644 Binary files a/src/main/resources/assets/create/textures/block/copper_plating.png and b/src/main/resources/assets/create/textures/block/copper_plating.png differ diff --git a/src/main/resources/assets/create/textures/block/crafter_side.png b/src/main/resources/assets/create/textures/block/crafter_side.png index 990a7a721..b3b71e0f5 100644 Binary files a/src/main/resources/assets/create/textures/block/crafter_side.png and b/src/main/resources/assets/create/textures/block/crafter_side.png differ diff --git a/src/main/resources/assets/create/textures/block/crafter_side_connected.png b/src/main/resources/assets/create/textures/block/crafter_side_connected.png index fe3b059fc..20c70a9d3 100644 Binary files a/src/main/resources/assets/create/textures/block/crafter_side_connected.png and b/src/main/resources/assets/create/textures/block/crafter_side_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/crafter_thingies.png b/src/main/resources/assets/create/textures/block/crafter_thingies.png index dd227b267..7d8ebefef 100644 Binary files a/src/main/resources/assets/create/textures/block/crafter_thingies.png and b/src/main/resources/assets/create/textures/block/crafter_thingies.png differ diff --git a/src/main/resources/assets/create/textures/block/crafter_top.png b/src/main/resources/assets/create/textures/block/crafter_top.png index 7c28826ba..d8cf940fd 100644 Binary files a/src/main/resources/assets/create/textures/block/crafter_top.png and b/src/main/resources/assets/create/textures/block/crafter_top.png differ diff --git a/src/main/resources/assets/create/textures/block/crafter_topunderside.png b/src/main/resources/assets/create/textures/block/crafter_topunderside.png index 1a9e08188..857266694 100644 Binary files a/src/main/resources/assets/create/textures/block/crafter_topunderside.png and b/src/main/resources/assets/create/textures/block/crafter_topunderside.png differ diff --git a/src/main/resources/assets/create/textures/block/crate_andesite.png b/src/main/resources/assets/create/textures/block/crate_andesite.png index 666894277..0b9181d05 100644 Binary files a/src/main/resources/assets/create/textures/block/crate_andesite.png and b/src/main/resources/assets/create/textures/block/crate_andesite.png differ diff --git a/src/main/resources/assets/create/textures/block/crate_andesite_side.png b/src/main/resources/assets/create/textures/block/crate_andesite_side.png index b0b2a96bb..0c04b618d 100644 Binary files a/src/main/resources/assets/create/textures/block/crate_andesite_side.png and b/src/main/resources/assets/create/textures/block/crate_andesite_side.png differ diff --git a/src/main/resources/assets/create/textures/block/crate_brass.png b/src/main/resources/assets/create/textures/block/crate_brass.png index df5e9cf40..5e809adda 100644 Binary files a/src/main/resources/assets/create/textures/block/crate_brass.png and b/src/main/resources/assets/create/textures/block/crate_brass.png differ diff --git a/src/main/resources/assets/create/textures/block/crate_brass_side.png b/src/main/resources/assets/create/textures/block/crate_brass_side.png index c2c13254a..7b0550d78 100644 Binary files a/src/main/resources/assets/create/textures/block/crate_brass_side.png and b/src/main/resources/assets/create/textures/block/crate_brass_side.png differ diff --git a/src/main/resources/assets/create/textures/block/crate_copper.png b/src/main/resources/assets/create/textures/block/crate_copper.png index cfc1e351c..2eb0e1704 100644 Binary files a/src/main/resources/assets/create/textures/block/crate_copper.png and b/src/main/resources/assets/create/textures/block/crate_copper.png differ diff --git a/src/main/resources/assets/create/textures/block/crate_copper_side.png b/src/main/resources/assets/create/textures/block/crate_copper_side.png index 73fa47256..438d22132 100644 Binary files a/src/main/resources/assets/create/textures/block/crate_copper_side.png and b/src/main/resources/assets/create/textures/block/crate_copper_side.png differ diff --git a/src/main/resources/assets/create/textures/block/crate_creative.png b/src/main/resources/assets/create/textures/block/crate_creative.png index 45bf70fcb..19ab07cea 100644 Binary files a/src/main/resources/assets/create/textures/block/crate_creative.png and b/src/main/resources/assets/create/textures/block/crate_creative.png differ diff --git a/src/main/resources/assets/create/textures/block/crate_creative_side.png b/src/main/resources/assets/create/textures/block/crate_creative_side.png index 00018a60d..9cb6219c3 100644 Binary files a/src/main/resources/assets/create/textures/block/crate_creative_side.png and b/src/main/resources/assets/create/textures/block/crate_creative_side.png differ diff --git a/src/main/resources/assets/create/textures/block/creative_casing.png b/src/main/resources/assets/create/textures/block/creative_casing.png index 30257a61c..84313c8ad 100644 Binary files a/src/main/resources/assets/create/textures/block/creative_casing.png and b/src/main/resources/assets/create/textures/block/creative_casing.png differ diff --git a/src/main/resources/assets/create/textures/block/creative_casing_connected.png b/src/main/resources/assets/create/textures/block/creative_casing_connected.png index 6c9e526b5..f9ec8526f 100644 Binary files a/src/main/resources/assets/create/textures/block/creative_casing_connected.png and b/src/main/resources/assets/create/textures/block/creative_casing_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/creative_fluid_tank.png b/src/main/resources/assets/create/textures/block/creative_fluid_tank.png index 10e0a6f2e..4dee59863 100644 Binary files a/src/main/resources/assets/create/textures/block/creative_fluid_tank.png and b/src/main/resources/assets/create/textures/block/creative_fluid_tank.png differ diff --git a/src/main/resources/assets/create/textures/block/creative_fluid_tank_connected.png b/src/main/resources/assets/create/textures/block/creative_fluid_tank_connected.png index 1b6877624..591540572 100644 Binary files a/src/main/resources/assets/create/textures/block/creative_fluid_tank_connected.png and b/src/main/resources/assets/create/textures/block/creative_fluid_tank_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/creative_fluid_tank_window.png b/src/main/resources/assets/create/textures/block/creative_fluid_tank_window.png index 7b46b7237..e4bb4e1df 100644 Binary files a/src/main/resources/assets/create/textures/block/creative_fluid_tank_window.png and b/src/main/resources/assets/create/textures/block/creative_fluid_tank_window.png differ diff --git a/src/main/resources/assets/create/textures/block/creative_fluid_tank_window_single.png b/src/main/resources/assets/create/textures/block/creative_fluid_tank_window_single.png index 7aab4d7ad..2a9d6c074 100644 Binary files a/src/main/resources/assets/create/textures/block/creative_fluid_tank_window_single.png and b/src/main/resources/assets/create/textures/block/creative_fluid_tank_window_single.png differ diff --git a/src/main/resources/assets/create/textures/block/creative_motor.png b/src/main/resources/assets/create/textures/block/creative_motor.png index dcb6c401a..f621901d9 100644 Binary files a/src/main/resources/assets/create/textures/block/creative_motor.png and b/src/main/resources/assets/create/textures/block/creative_motor.png differ diff --git a/src/main/resources/assets/create/textures/block/crushing_wheel.png b/src/main/resources/assets/create/textures/block/crushing_wheel.png index d461bde3e..7d7255c07 100644 Binary files a/src/main/resources/assets/create/textures/block/crushing_wheel.png and b/src/main/resources/assets/create/textures/block/crushing_wheel.png differ diff --git a/src/main/resources/assets/create/textures/block/crushing_wheel_body.png b/src/main/resources/assets/create/textures/block/crushing_wheel_body.png index 4bb0b9cff..d67efa3ec 100644 Binary files a/src/main/resources/assets/create/textures/block/crushing_wheel_body.png and b/src/main/resources/assets/create/textures/block/crushing_wheel_body.png differ diff --git a/src/main/resources/assets/create/textures/block/cuckoo_clock.png b/src/main/resources/assets/create/textures/block/cuckoo_clock.png index 8c4c74dd5..6ff0620ee 100644 Binary files a/src/main/resources/assets/create/textures/block/cuckoo_clock.png and b/src/main/resources/assets/create/textures/block/cuckoo_clock.png differ diff --git a/src/main/resources/assets/create/textures/block/dark_metal_block.png b/src/main/resources/assets/create/textures/block/dark_metal_block.png index 148f58004..f0105ab95 100644 Binary files a/src/main/resources/assets/create/textures/block/dark_metal_block.png and b/src/main/resources/assets/create/textures/block/dark_metal_block.png differ diff --git a/src/main/resources/assets/create/textures/block/deployer.png b/src/main/resources/assets/create/textures/block/deployer.png index 54fc296a2..0bb0335c1 100644 Binary files a/src/main/resources/assets/create/textures/block/deployer.png and b/src/main/resources/assets/create/textures/block/deployer.png differ diff --git a/src/main/resources/assets/create/textures/block/depot_side.png b/src/main/resources/assets/create/textures/block/depot_side.png index 4527fc59e..0f38e17d5 100644 Binary files a/src/main/resources/assets/create/textures/block/depot_side.png and b/src/main/resources/assets/create/textures/block/depot_side.png differ diff --git a/src/main/resources/assets/create/textures/block/depot_top.png b/src/main/resources/assets/create/textures/block/depot_top.png index c8e7c40da..0d0989866 100644 Binary files a/src/main/resources/assets/create/textures/block/depot_top.png and b/src/main/resources/assets/create/textures/block/depot_top.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/idle.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/idle.png index a5bd9cd36..fada44e77 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/idle.png and b/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/idle.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/item.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/item.png index c7725b0d4..98f9609d8 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/item.png and b/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/item.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powered.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powered.png index 2d6d50c09..c461f91be 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powered.png and b/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powered.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powered_powering.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powered_powering.png index 2d6d50c09..c461f91be 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powered_powering.png and b/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powered_powering.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powering.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powering.png index a5bd9cd36..fada44e77 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powering.png and b/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powering.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/idle.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/idle.png index 659687825..252534d88 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/idle.png and b/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/idle.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/item.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/item.png index ccb7edcb4..44aca3a9e 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/item.png and b/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/item.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powered.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powered.png index 825eaf988..69db5b633 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powered.png and b/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powered.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powered_powering.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powered_powering.png index 672bf23e6..5e9895c0a 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powered_powering.png and b/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powered_powering.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powering.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powering.png index 82cb9e229..8bc244e5f 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powering.png and b/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powering.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/powered_latch/idle.png b/src/main/resources/assets/create/textures/block/diodes/powered_latch/idle.png index 0571c5fe2..737c4bd5a 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/powered_latch/idle.png and b/src/main/resources/assets/create/textures/block/diodes/powered_latch/idle.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/powered_latch/powering.png b/src/main/resources/assets/create/textures/block/diodes/powered_latch/powering.png index 650a695bf..f3e5f394d 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/powered_latch/powering.png and b/src/main/resources/assets/create/textures/block/diodes/powered_latch/powering.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/idle.png b/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/idle.png index b41dd151b..c0f2205a1 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/idle.png and b/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/idle.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powered.png b/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powered.png index 8dcb2f6c4..754701d24 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powered.png and b/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powered.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powered_powering.png b/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powered_powering.png index 3f22832db..b5a0ccdca 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powered_powering.png and b/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powered_powering.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powering.png b/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powering.png index 4a4d43396..bb1eb9015 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powering.png and b/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powering.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/pulse_repeater/idle.png b/src/main/resources/assets/create/textures/block/diodes/pulse_repeater/idle.png index 754817baa..bccbf5d04 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/pulse_repeater/idle.png and b/src/main/resources/assets/create/textures/block/diodes/pulse_repeater/idle.png differ diff --git a/src/main/resources/assets/create/textures/block/diodes/pulse_repeater/powered.png b/src/main/resources/assets/create/textures/block/diodes/pulse_repeater/powered.png index 62a5693f0..fe77e1238 100644 Binary files a/src/main/resources/assets/create/textures/block/diodes/pulse_repeater/powered.png and b/src/main/resources/assets/create/textures/block/diodes/pulse_repeater/powered.png differ diff --git a/src/main/resources/assets/create/textures/block/encased_chain_drive.png b/src/main/resources/assets/create/textures/block/encased_chain_drive.png index 0dfbd374b..7dc2cf300 100644 Binary files a/src/main/resources/assets/create/textures/block/encased_chain_drive.png and b/src/main/resources/assets/create/textures/block/encased_chain_drive.png differ diff --git a/src/main/resources/assets/create/textures/block/encased_chain_drive_end.png b/src/main/resources/assets/create/textures/block/encased_chain_drive_end.png index b7ace7ad4..b15ff967d 100644 Binary files a/src/main/resources/assets/create/textures/block/encased_chain_drive_end.png and b/src/main/resources/assets/create/textures/block/encased_chain_drive_end.png differ diff --git a/src/main/resources/assets/create/textures/block/encased_chain_drive_middle.png b/src/main/resources/assets/create/textures/block/encased_chain_drive_middle.png index 9e4584314..93e749616 100644 Binary files a/src/main/resources/assets/create/textures/block/encased_chain_drive_middle.png and b/src/main/resources/assets/create/textures/block/encased_chain_drive_middle.png differ diff --git a/src/main/resources/assets/create/textures/block/encased_pipe.png b/src/main/resources/assets/create/textures/block/encased_pipe.png index d9976cb79..320d1831e 100644 Binary files a/src/main/resources/assets/create/textures/block/encased_pipe.png and b/src/main/resources/assets/create/textures/block/encased_pipe.png differ diff --git a/src/main/resources/assets/create/textures/block/fan_blades.png b/src/main/resources/assets/create/textures/block/fan_blades.png index af0d81d81..299b134f2 100644 Binary files a/src/main/resources/assets/create/textures/block/fan_blades.png and b/src/main/resources/assets/create/textures/block/fan_blades.png differ diff --git a/src/main/resources/assets/create/textures/block/fan_casing.png b/src/main/resources/assets/create/textures/block/fan_casing.png index 290821540..4ce41f552 100644 Binary files a/src/main/resources/assets/create/textures/block/fan_casing.png and b/src/main/resources/assets/create/textures/block/fan_casing.png differ diff --git a/src/main/resources/assets/create/textures/block/fan_side.png b/src/main/resources/assets/create/textures/block/fan_side.png index d191c5f31..a7320888b 100644 Binary files a/src/main/resources/assets/create/textures/block/fan_side.png and b/src/main/resources/assets/create/textures/block/fan_side.png differ diff --git a/src/main/resources/assets/create/textures/block/filtered_detector_front.png b/src/main/resources/assets/create/textures/block/filtered_detector_front.png index 89751b111..6a0ac87ce 100644 Binary files a/src/main/resources/assets/create/textures/block/filtered_detector_front.png and b/src/main/resources/assets/create/textures/block/filtered_detector_front.png differ diff --git a/src/main/resources/assets/create/textures/block/filtered_detector_top.png b/src/main/resources/assets/create/textures/block/filtered_detector_top.png index 0a037bd0d..9d77dd137 100644 Binary files a/src/main/resources/assets/create/textures/block/filtered_detector_top.png and b/src/main/resources/assets/create/textures/block/filtered_detector_top.png differ diff --git a/src/main/resources/assets/create/textures/block/fluid_pipe.png b/src/main/resources/assets/create/textures/block/fluid_pipe.png index 1b0180e20..b98227db1 100644 Binary files a/src/main/resources/assets/create/textures/block/fluid_pipe.png and b/src/main/resources/assets/create/textures/block/fluid_pipe.png differ diff --git a/src/main/resources/assets/create/textures/block/fluid_tank.png b/src/main/resources/assets/create/textures/block/fluid_tank.png index fbcc5a2fa..64217ddfa 100644 Binary files a/src/main/resources/assets/create/textures/block/fluid_tank.png and b/src/main/resources/assets/create/textures/block/fluid_tank.png differ diff --git a/src/main/resources/assets/create/textures/block/fluid_tank_connected.png b/src/main/resources/assets/create/textures/block/fluid_tank_connected.png index 2ce847acb..ef34d1e99 100644 Binary files a/src/main/resources/assets/create/textures/block/fluid_tank_connected.png and b/src/main/resources/assets/create/textures/block/fluid_tank_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/fluid_tank_window.png b/src/main/resources/assets/create/textures/block/fluid_tank_window.png index 3c7bbdfab..73542e5af 100644 Binary files a/src/main/resources/assets/create/textures/block/fluid_tank_window.png and b/src/main/resources/assets/create/textures/block/fluid_tank_window.png differ diff --git a/src/main/resources/assets/create/textures/block/fluid_tank_window_single.png b/src/main/resources/assets/create/textures/block/fluid_tank_window_single.png index aa8a3bb58..f3b2a9e95 100644 Binary files a/src/main/resources/assets/create/textures/block/fluid_tank_window_single.png and b/src/main/resources/assets/create/textures/block/fluid_tank_window_single.png differ diff --git a/src/main/resources/assets/create/textures/block/fluid_valve.png b/src/main/resources/assets/create/textures/block/fluid_valve.png index a177120b7..21bb7083d 100644 Binary files a/src/main/resources/assets/create/textures/block/fluid_valve.png and b/src/main/resources/assets/create/textures/block/fluid_valve.png differ diff --git a/src/main/resources/assets/create/textures/block/funnel_closed.png b/src/main/resources/assets/create/textures/block/funnel_closed.png index 5815a4ae3..905206774 100644 Binary files a/src/main/resources/assets/create/textures/block/funnel_closed.png and b/src/main/resources/assets/create/textures/block/funnel_closed.png differ diff --git a/src/main/resources/assets/create/textures/block/funnel_open.png b/src/main/resources/assets/create/textures/block/funnel_open.png index 83b39cd70..d636aa552 100644 Binary files a/src/main/resources/assets/create/textures/block/funnel_open.png and b/src/main/resources/assets/create/textures/block/funnel_open.png differ diff --git a/src/main/resources/assets/create/textures/block/furnace_cylinder.png b/src/main/resources/assets/create/textures/block/furnace_cylinder.png index 3a894c105..4d01037f2 100644 Binary files a/src/main/resources/assets/create/textures/block/furnace_cylinder.png and b/src/main/resources/assets/create/textures/block/furnace_cylinder.png differ diff --git a/src/main/resources/assets/create/textures/block/gantry_shaft.png b/src/main/resources/assets/create/textures/block/gantry_shaft.png index 0aaab6b3f..7ddcf4a0c 100644 Binary files a/src/main/resources/assets/create/textures/block/gantry_shaft.png and b/src/main/resources/assets/create/textures/block/gantry_shaft.png differ diff --git a/src/main/resources/assets/create/textures/block/gantry_shaft_flipped.png b/src/main/resources/assets/create/textures/block/gantry_shaft_flipped.png index b44b71663..aac77d69c 100644 Binary files a/src/main/resources/assets/create/textures/block/gantry_shaft_flipped.png and b/src/main/resources/assets/create/textures/block/gantry_shaft_flipped.png differ diff --git a/src/main/resources/assets/create/textures/block/gantry_shaft_powered.png b/src/main/resources/assets/create/textures/block/gantry_shaft_powered.png index 8b1418b79..992cbf8cf 100644 Binary files a/src/main/resources/assets/create/textures/block/gantry_shaft_powered.png and b/src/main/resources/assets/create/textures/block/gantry_shaft_powered.png differ diff --git a/src/main/resources/assets/create/textures/block/gantry_shaft_powered_flipped.png b/src/main/resources/assets/create/textures/block/gantry_shaft_powered_flipped.png index bff72154b..2e8e2ed91 100644 Binary files a/src/main/resources/assets/create/textures/block/gantry_shaft_powered_flipped.png and b/src/main/resources/assets/create/textures/block/gantry_shaft_powered_flipped.png differ diff --git a/src/main/resources/assets/create/textures/block/gauge.png b/src/main/resources/assets/create/textures/block/gauge.png index 1fb77e247..4a5ec0fb4 100644 Binary files a/src/main/resources/assets/create/textures/block/gauge.png and b/src/main/resources/assets/create/textures/block/gauge.png differ diff --git a/src/main/resources/assets/create/textures/block/gearbox.png b/src/main/resources/assets/create/textures/block/gearbox.png index 1d2cb6b81..9aabbae8a 100644 Binary files a/src/main/resources/assets/create/textures/block/gearbox.png and b/src/main/resources/assets/create/textures/block/gearbox.png differ diff --git a/src/main/resources/assets/create/textures/block/gearbox_top.png b/src/main/resources/assets/create/textures/block/gearbox_top.png index 7b9cb4251..0b8c8e06b 100644 Binary files a/src/main/resources/assets/create/textures/block/gearbox_top.png and b/src/main/resources/assets/create/textures/block/gearbox_top.png differ diff --git a/src/main/resources/assets/create/textures/block/gearshift_off.png b/src/main/resources/assets/create/textures/block/gearshift_off.png index e3e5d4a4c..42f88964e 100644 Binary files a/src/main/resources/assets/create/textures/block/gearshift_off.png and b/src/main/resources/assets/create/textures/block/gearshift_off.png differ diff --git a/src/main/resources/assets/create/textures/block/gearshift_on.png b/src/main/resources/assets/create/textures/block/gearshift_on.png index 65f83e83e..81d53f0fe 100644 Binary files a/src/main/resources/assets/create/textures/block/gearshift_on.png and b/src/main/resources/assets/create/textures/block/gearshift_on.png differ diff --git a/src/main/resources/assets/create/textures/block/glass_fluid_pipe.png b/src/main/resources/assets/create/textures/block/glass_fluid_pipe.png index af297ab74..13457c4c0 100644 Binary files a/src/main/resources/assets/create/textures/block/glass_fluid_pipe.png and b/src/main/resources/assets/create/textures/block/glass_fluid_pipe.png differ diff --git a/src/main/resources/assets/create/textures/block/harvester.png b/src/main/resources/assets/create/textures/block/harvester.png index 4eb98005a..2c7640f46 100644 Binary files a/src/main/resources/assets/create/textures/block/harvester.png and b/src/main/resources/assets/create/textures/block/harvester.png differ diff --git a/src/main/resources/assets/create/textures/block/hose_pulley_magnet.png b/src/main/resources/assets/create/textures/block/hose_pulley_magnet.png index acd3653de..357678581 100644 Binary files a/src/main/resources/assets/create/textures/block/hose_pulley_magnet.png and b/src/main/resources/assets/create/textures/block/hose_pulley_magnet.png differ diff --git a/src/main/resources/assets/create/textures/block/hose_pulley_rope.png b/src/main/resources/assets/create/textures/block/hose_pulley_rope.png index de48b69a9..1c8ccb93c 100644 Binary files a/src/main/resources/assets/create/textures/block/hose_pulley_rope.png and b/src/main/resources/assets/create/textures/block/hose_pulley_rope.png differ diff --git a/src/main/resources/assets/create/textures/block/indicator/0.png b/src/main/resources/assets/create/textures/block/indicator/0.png index 48796b897..07fb77676 100644 Binary files a/src/main/resources/assets/create/textures/block/indicator/0.png and b/src/main/resources/assets/create/textures/block/indicator/0.png differ diff --git a/src/main/resources/assets/create/textures/block/indicator/1.png b/src/main/resources/assets/create/textures/block/indicator/1.png index 06d58a33c..8becea76c 100644 Binary files a/src/main/resources/assets/create/textures/block/indicator/1.png and b/src/main/resources/assets/create/textures/block/indicator/1.png differ diff --git a/src/main/resources/assets/create/textures/block/indicator/2.png b/src/main/resources/assets/create/textures/block/indicator/2.png index 074f83e94..4021937dc 100644 Binary files a/src/main/resources/assets/create/textures/block/indicator/2.png and b/src/main/resources/assets/create/textures/block/indicator/2.png differ diff --git a/src/main/resources/assets/create/textures/block/indicator/3.png b/src/main/resources/assets/create/textures/block/indicator/3.png index 04f07e234..67f1a2fe3 100644 Binary files a/src/main/resources/assets/create/textures/block/indicator/3.png and b/src/main/resources/assets/create/textures/block/indicator/3.png differ diff --git a/src/main/resources/assets/create/textures/block/indicator/4.png b/src/main/resources/assets/create/textures/block/indicator/4.png index 01bdf1442..914307496 100644 Binary files a/src/main/resources/assets/create/textures/block/indicator/4.png and b/src/main/resources/assets/create/textures/block/indicator/4.png differ diff --git a/src/main/resources/assets/create/textures/block/indicator/5.png b/src/main/resources/assets/create/textures/block/indicator/5.png index 340859fc2..51b804fc5 100644 Binary files a/src/main/resources/assets/create/textures/block/indicator/5.png and b/src/main/resources/assets/create/textures/block/indicator/5.png differ diff --git a/src/main/resources/assets/create/textures/block/indicator/6.png b/src/main/resources/assets/create/textures/block/indicator/6.png index 9254eb340..f3a4edd92 100644 Binary files a/src/main/resources/assets/create/textures/block/indicator/6.png and b/src/main/resources/assets/create/textures/block/indicator/6.png differ diff --git a/src/main/resources/assets/create/textures/block/item_drain_side.png b/src/main/resources/assets/create/textures/block/item_drain_side.png index bd768538d..6c72d1fc9 100644 Binary files a/src/main/resources/assets/create/textures/block/item_drain_side.png and b/src/main/resources/assets/create/textures/block/item_drain_side.png differ diff --git a/src/main/resources/assets/create/textures/block/item_drain_top.png b/src/main/resources/assets/create/textures/block/item_drain_top.png index d40ba75dd..d7b8ee084 100644 Binary files a/src/main/resources/assets/create/textures/block/item_drain_top.png and b/src/main/resources/assets/create/textures/block/item_drain_top.png differ diff --git a/src/main/resources/assets/create/textures/block/large_cogwheel.png b/src/main/resources/assets/create/textures/block/large_cogwheel.png index dc2262824..6cbb952d4 100644 Binary files a/src/main/resources/assets/create/textures/block/large_cogwheel.png and b/src/main/resources/assets/create/textures/block/large_cogwheel.png differ diff --git a/src/main/resources/assets/create/textures/block/linear_chassis_end.png b/src/main/resources/assets/create/textures/block/linear_chassis_end.png index f905becaf..fd30c3cda 100644 Binary files a/src/main/resources/assets/create/textures/block/linear_chassis_end.png and b/src/main/resources/assets/create/textures/block/linear_chassis_end.png differ diff --git a/src/main/resources/assets/create/textures/block/linear_chassis_end_connected.png b/src/main/resources/assets/create/textures/block/linear_chassis_end_connected.png index 27375ce46..e580b0198 100644 Binary files a/src/main/resources/assets/create/textures/block/linear_chassis_end_connected.png and b/src/main/resources/assets/create/textures/block/linear_chassis_end_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/linear_chassis_end_sticky.png b/src/main/resources/assets/create/textures/block/linear_chassis_end_sticky.png index 32a69c6a0..872b1a04d 100644 Binary files a/src/main/resources/assets/create/textures/block/linear_chassis_end_sticky.png and b/src/main/resources/assets/create/textures/block/linear_chassis_end_sticky.png differ diff --git a/src/main/resources/assets/create/textures/block/linear_chassis_end_sticky_connected.png b/src/main/resources/assets/create/textures/block/linear_chassis_end_sticky_connected.png index 4055870c4..4484376b0 100644 Binary files a/src/main/resources/assets/create/textures/block/linear_chassis_end_sticky_connected.png and b/src/main/resources/assets/create/textures/block/linear_chassis_end_sticky_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/linear_chassis_side.png b/src/main/resources/assets/create/textures/block/linear_chassis_side.png index 02f8a1a9f..3b0982d92 100644 Binary files a/src/main/resources/assets/create/textures/block/linear_chassis_side.png and b/src/main/resources/assets/create/textures/block/linear_chassis_side.png differ diff --git a/src/main/resources/assets/create/textures/block/linear_chassis_side_connected.png b/src/main/resources/assets/create/textures/block/linear_chassis_side_connected.png index b1398a957..41d267adf 100644 Binary files a/src/main/resources/assets/create/textures/block/linear_chassis_side_connected.png and b/src/main/resources/assets/create/textures/block/linear_chassis_side_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/machine_base_top.png b/src/main/resources/assets/create/textures/block/machine_base_top.png index ef711120f..8d6fe169c 100644 Binary files a/src/main/resources/assets/create/textures/block/machine_base_top.png and b/src/main/resources/assets/create/textures/block/machine_base_top.png differ diff --git a/src/main/resources/assets/create/textures/block/marker_flag.png b/src/main/resources/assets/create/textures/block/marker_flag.png index 0970405a3..c3a12462d 100644 Binary files a/src/main/resources/assets/create/textures/block/marker_flag.png and b/src/main/resources/assets/create/textures/block/marker_flag.png differ diff --git a/src/main/resources/assets/create/textures/block/mechanical_arm.png b/src/main/resources/assets/create/textures/block/mechanical_arm.png index bc8def665..b4f728ea7 100644 Binary files a/src/main/resources/assets/create/textures/block/mechanical_arm.png and b/src/main/resources/assets/create/textures/block/mechanical_arm.png differ diff --git a/src/main/resources/assets/create/textures/block/mechanical_bearing_side.png b/src/main/resources/assets/create/textures/block/mechanical_bearing_side.png index d582fd288..7ecadf5f6 100644 Binary files a/src/main/resources/assets/create/textures/block/mechanical_bearing_side.png and b/src/main/resources/assets/create/textures/block/mechanical_bearing_side.png differ diff --git a/src/main/resources/assets/create/textures/block/mechanical_press_bottom.png b/src/main/resources/assets/create/textures/block/mechanical_press_bottom.png index 662f783ea..e3548a883 100644 Binary files a/src/main/resources/assets/create/textures/block/mechanical_press_bottom.png and b/src/main/resources/assets/create/textures/block/mechanical_press_bottom.png differ diff --git a/src/main/resources/assets/create/textures/block/mechanical_press_head.png b/src/main/resources/assets/create/textures/block/mechanical_press_head.png index 79c3f488b..ee8bbd04a 100644 Binary files a/src/main/resources/assets/create/textures/block/mechanical_press_head.png and b/src/main/resources/assets/create/textures/block/mechanical_press_head.png differ diff --git a/src/main/resources/assets/create/textures/block/mechanical_press_pole.png b/src/main/resources/assets/create/textures/block/mechanical_press_pole.png index 5aba01568..0c68a7439 100644 Binary files a/src/main/resources/assets/create/textures/block/mechanical_press_pole.png and b/src/main/resources/assets/create/textures/block/mechanical_press_pole.png differ diff --git a/src/main/resources/assets/create/textures/block/mechanical_press_side.png b/src/main/resources/assets/create/textures/block/mechanical_press_side.png index bdcdead8a..32ddc197f 100644 Binary files a/src/main/resources/assets/create/textures/block/mechanical_press_side.png and b/src/main/resources/assets/create/textures/block/mechanical_press_side.png differ diff --git a/src/main/resources/assets/create/textures/block/mechanical_press_top.png b/src/main/resources/assets/create/textures/block/mechanical_press_top.png index 0fe60a215..d7be87b5d 100644 Binary files a/src/main/resources/assets/create/textures/block/mechanical_press_top.png and b/src/main/resources/assets/create/textures/block/mechanical_press_top.png differ diff --git a/src/main/resources/assets/create/textures/block/mechanical_saw_top.png b/src/main/resources/assets/create/textures/block/mechanical_saw_top.png index 263ad1357..fa3347f98 100644 Binary files a/src/main/resources/assets/create/textures/block/mechanical_saw_top.png and b/src/main/resources/assets/create/textures/block/mechanical_saw_top.png differ diff --git a/src/main/resources/assets/create/textures/block/millstone.png b/src/main/resources/assets/create/textures/block/millstone.png index 43e1ab01c..e2318cb2f 100644 Binary files a/src/main/resources/assets/create/textures/block/millstone.png and b/src/main/resources/assets/create/textures/block/millstone.png differ diff --git a/src/main/resources/assets/create/textures/block/mixer_base_side.png b/src/main/resources/assets/create/textures/block/mixer_base_side.png index cb4948b02..bdda62d68 100644 Binary files a/src/main/resources/assets/create/textures/block/mixer_base_side.png and b/src/main/resources/assets/create/textures/block/mixer_base_side.png differ diff --git a/src/main/resources/assets/create/textures/block/mixer_head.png b/src/main/resources/assets/create/textures/block/mixer_head.png index 13b8ed830..de6b8074a 100644 Binary files a/src/main/resources/assets/create/textures/block/mixer_head.png and b/src/main/resources/assets/create/textures/block/mixer_head.png differ diff --git a/src/main/resources/assets/create/textures/block/net.png b/src/main/resources/assets/create/textures/block/net.png index 061332e14..c270ffd39 100644 Binary files a/src/main/resources/assets/create/textures/block/net.png and b/src/main/resources/assets/create/textures/block/net.png differ diff --git a/src/main/resources/assets/create/textures/block/nixie_tube.png b/src/main/resources/assets/create/textures/block/nixie_tube.png index 63202b6a6..f609d789c 100644 Binary files a/src/main/resources/assets/create/textures/block/nixie_tube.png and b/src/main/resources/assets/create/textures/block/nixie_tube.png differ diff --git a/src/main/resources/assets/create/textures/block/noisy_iron_block.png b/src/main/resources/assets/create/textures/block/noisy_iron_block.png index 653891f40..e3da35586 100644 Binary files a/src/main/resources/assets/create/textures/block/noisy_iron_block.png and b/src/main/resources/assets/create/textures/block/noisy_iron_block.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_block_0.png b/src/main/resources/assets/create/textures/block/oxidized/copper_block_0.png index a0af685f2..be680ba18 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_block_0.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_block_0.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_block_1.png b/src/main/resources/assets/create/textures/block/oxidized/copper_block_1.png index 6923fc1ef..b6a468cd7 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_block_1.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_block_1.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_block_2.png b/src/main/resources/assets/create/textures/block/oxidized/copper_block_2.png index d90851020..e6eb4ad48 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_block_2.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_block_2.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_block_3.png b/src/main/resources/assets/create/textures/block/oxidized/copper_block_3.png index 16ea124da..46813e98b 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_block_3.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_block_3.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_block_4.png b/src/main/resources/assets/create/textures/block/oxidized/copper_block_4.png index 54a554486..98b71ddd9 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_block_4.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_block_4.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_block_5.png b/src/main/resources/assets/create/textures/block/oxidized/copper_block_5.png index 801d7eece..f3954d9e9 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_block_5.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_block_5.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_block_6.png b/src/main/resources/assets/create/textures/block/oxidized/copper_block_6.png index 82dca41dc..dc6aa3d38 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_block_6.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_block_6.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_block_7.png b/src/main/resources/assets/create/textures/block/oxidized/copper_block_7.png index b4c9bdcf9..fa5da7c84 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_block_7.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_block_7.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_0.png b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_0.png index a6e3e07de..ac0ff9201 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_0.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_0.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_1.png b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_1.png index 0f24f4c65..4a8fe255a 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_1.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_1.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_2.png b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_2.png index e185bffdb..ad7ce31e3 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_2.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_2.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_3.png b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_3.png index 555773515..6e4ed896a 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_3.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_3.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_4.png b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_4.png index 72cd44455..a50816b70 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_4.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_4.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_5.png b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_5.png index bd1d9be2a..7be64a557 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_5.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_5.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_6.png b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_6.png index 3463f96ff..546696980 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_6.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_6.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_7.png b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_7.png index aa65ceb2b..847c75034 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_7.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_7.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_0.png b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_0.png index 3bc6b2452..fbfa21190 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_0.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_0.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_1.png b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_1.png index a192f1199..c44ae38b7 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_1.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_1.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_2.png b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_2.png index e39b8a96d..d05ad0822 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_2.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_2.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_3.png b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_3.png index 6abe50f94..21c69d822 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_3.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_3.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_4.png b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_4.png index 2e59a7b2f..e8b43d852 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_4.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_4.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_5.png b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_5.png index f0fbc2870..6f0c39404 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_5.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_5.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_6.png b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_6.png index bfb4a4295..23ea627d3 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_6.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_6.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_7.png b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_7.png index 6222672d9..33bfbe019 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_7.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_7.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_0.png b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_0.png index ce106280e..24e88d4be 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_0.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_0.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_1.png b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_1.png index dd3af5ed4..a21afacb3 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_1.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_1.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_2.png b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_2.png index 5c8942bab..b4e9b952e 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_2.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_2.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_3.png b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_3.png index 02c66b416..60ff2d425 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_3.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_3.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_4.png b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_4.png index d7e4a3f9a..61efc59a2 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_4.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_4.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_5.png b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_5.png index 268037d04..7a0521a57 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_5.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_5.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_6.png b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_6.png index 47118a51e..374e730f4 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_6.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_6.png differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_7.png b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_7.png index c4d89cd29..265b5c914 100644 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_7.png and b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_7.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/acacia_window.png b/src/main/resources/assets/create/textures/block/palettes/acacia_window.png index d4789b289..d7cffea18 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/acacia_window.png and b/src/main/resources/assets/create/textures/block/palettes/acacia_window.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/acacia_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/acacia_window_connected.png index 12cb594b2..800ebaf94 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/acacia_window_connected.png and b/src/main/resources/assets/create/textures/block/palettes/acacia_window_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/andesite1.png b/src/main/resources/assets/create/textures/block/palettes/andesite/andesite1.png index f0ebb09d1..29d461129 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/andesite1.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/andesite1.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/bricks.png b/src/main/resources/assets/create/textures/block/palettes/andesite/bricks.png index e63258e32..e09bcfb21 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/bricks.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/andesite/chiseled.png index c7d11772a..9698cb38d 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/chiseled.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/chiseled.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/andesite/chiseled_top.png index 420f690d0..9f41a3274 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/chiseled_top.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/chiseled_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/andesite/cobblestone.png index e14549fbd..fbec380cf 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/cobblestone.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/cobblestone.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/andesite/fancy_bricks.png index 8df57c027..a400e1b9e 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/fancy_bricks.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/fancy_bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/layered.png b/src/main/resources/assets/create/textures/block/palettes/andesite/layered.png index 002907982..07ffe3165 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/layered.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/layered.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/andesite/layered_connected.png index b78586756..ab05d15e3 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/layered_connected.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/layered_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/paved.png b/src/main/resources/assets/create/textures/block/palettes/andesite/paved.png index 952be4efc..18b5d3d2b 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/paved.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/paved.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/andesite/paved_borderless.png index cd9934235..b98a70f52 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/paved_borderless.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/paved_borderless.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/andesite/paved_top.png index 52b9d2853..eca2a30f6 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/paved_top.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/paved_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/pillar.png b/src/main/resources/assets/create/textures/block/palettes/andesite/pillar.png index 6eca925c8..8f85d0d2b 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/pillar.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/pillar.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/andesite/pillar_end.png index f019b9860..dab39dc9f 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/pillar_end.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/pillar_end.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/polished.png b/src/main/resources/assets/create/textures/block/palettes/andesite/polished.png index 52b9d2853..eca2a30f6 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/polished.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/polished.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/andesite/polished_connected.png index 9177a8ab4..0552b823c 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/polished_connected.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/polished_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/andesite/polished_slab.png index d34ad5a21..41f72d754 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/polished_slab.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/polished_slab.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused1.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused1.png index 87e5b90b2..22f15a80b 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused1.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/unused1.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused10.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused10.png index 034fe8118..cc3905b92 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused10.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/unused10.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused11.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused11.png index 87e5b90b2..22f15a80b 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused11.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/unused11.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused12.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused12.png index 87e5b90b2..22f15a80b 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused12.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/unused12.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused13.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused13.png index 87e5b90b2..22f15a80b 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused13.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/unused13.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused2.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused2.png index 12f189cb1..90dda672e 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused2.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/unused2.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused4.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused4.png index e63258e32..e09bcfb21 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused4.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/unused4.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused6.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused6.png index e3212a33e..9209ca5da 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused6.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/unused6.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused7.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused7.png index 293fe3259..3ee689e2b 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused7.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/unused7.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused8.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused8.png index afb5697f1..863e2d723 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused8.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/unused8.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused9.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused9.png index 73f06d2c9..2bb5c8afc 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused9.png and b/src/main/resources/assets/create/textures/block/palettes/andesite/unused9.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/birch_window.png b/src/main/resources/assets/create/textures/block/palettes/birch_window.png index 4020f4578..60cbfbd74 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/birch_window.png and b/src/main/resources/assets/create/textures/block/palettes/birch_window.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/birch_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/birch_window_connected.png index a57dbdce9..f02937885 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/birch_window_connected.png and b/src/main/resources/assets/create/textures/block/palettes/birch_window_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/crimson_window.png b/src/main/resources/assets/create/textures/block/palettes/crimson_window.png index 394c87a64..5107cdfae 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/crimson_window.png and b/src/main/resources/assets/create/textures/block/palettes/crimson_window.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/crimson_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/crimson_window_connected.png index db5a9b1b6..2372db214 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/crimson_window_connected.png and b/src/main/resources/assets/create/textures/block/palettes/crimson_window_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_oak_window.png b/src/main/resources/assets/create/textures/block/palettes/dark_oak_window.png index 432e338b4..7d6ca9f12 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_oak_window.png and b/src/main/resources/assets/create/textures/block/palettes/dark_oak_window.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_oak_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/dark_oak_window_connected.png index c9a76c119..1a524be92 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_oak_window_connected.png and b/src/main/resources/assets/create/textures/block/palettes/dark_oak_window_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/bricks.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/bricks.png index 37eb2c096..431d19d0b 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/bricks.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/chiseled.png index 7777a1432..ac4d9ccd0 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/chiseled.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/chiseled.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/chiseled_top.png index 437ce0d2b..042c15bbc 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/chiseled_top.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/chiseled_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/cobblestone.png index 026a18511..e1b7f65b1 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/cobblestone.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/cobblestone.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/dark_scoria1.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/dark_scoria1.png index 461212124..212b0855c 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/dark_scoria1.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/dark_scoria1.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/fancy_bricks.png index 9b03e3be7..b52b286a0 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/fancy_bricks.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/fancy_bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/layered.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/layered.png index 65bf6a6e4..b0bfc368c 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/layered.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/layered.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/layered_connected.png index 6e58c2a50..1d901f777 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/layered_connected.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/layered_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved.png index d14786ab3..f1e11450f 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved_borderless.png index 03caa99f1..3e9c6ab07 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved_borderless.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved_borderless.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved_top.png index 7756f15f1..805630d6d 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved_top.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/pillar.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/pillar.png index ce1d5b97e..271e93507 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/pillar.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/pillar.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/pillar_end.png index e97ac33a9..7cecb47ac 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/pillar_end.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/pillar_end.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/plain.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/plain.png index 2e46e37ff..dfc8cf5ff 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/plain.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/plain.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished.png index 7756f15f1..805630d6d 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished_connected.png index 140ee4fbe..c08edf6d9 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished_connected.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished_slab.png index 4bde81fa0..7baee3ed8 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished_slab.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished_slab.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused10.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused10.png index bd46aac2b..7cfb2ca31 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused10.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused10.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused11.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused11.png index 13c041f7d..114d2f12f 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused11.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused11.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused12.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused12.png index 13c041f7d..114d2f12f 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused12.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused12.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused13.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused13.png index 13c041f7d..114d2f12f 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused13.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused13.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused2.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused2.png index 4d0242e2b..22c534f92 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused2.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused2.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused4.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused4.png index 104c8d8d7..1ecc8bde0 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused4.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused4.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused5.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused5.png index 445cd0448..f39aa7bc1 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused5.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused5.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused6.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused6.png index ccfcce5c0..f2c83bfb0 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused6.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused6.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused7.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused7.png index 29f85f029..b91575312 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused7.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused7.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused8.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused8.png index 90666b3ed..f9586b2a3 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused8.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused8.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused9.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused9.png index 3169ecff6..18eea25d5 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused9.png and b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused9.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/bricks.png b/src/main/resources/assets/create/textures/block/palettes/diorite/bricks.png index ca52b77d8..dff7993de 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/bricks.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/diorite/chiseled.png index 600bae79b..ddd5c080c 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/chiseled.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/chiseled.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/diorite/chiseled_top.png index bc1d0a912..e82c08108 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/chiseled_top.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/chiseled_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/diorite/cobblestone.png index f2451f8cb..3af393624 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/cobblestone.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/cobblestone.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/diorite1.png b/src/main/resources/assets/create/textures/block/palettes/diorite/diorite1.png index 9d74ad51d..e5abfbf48 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/diorite1.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/diorite1.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/diorite/fancy_bricks.png index daf7831a1..f81db1de0 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/fancy_bricks.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/fancy_bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/layered.png b/src/main/resources/assets/create/textures/block/palettes/diorite/layered.png index 38a483b29..9c5e972eb 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/layered.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/layered.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/diorite/layered_connected.png index 8b6ad3555..0bcfd0208 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/layered_connected.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/layered_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/paved.png b/src/main/resources/assets/create/textures/block/palettes/diorite/paved.png index 6df016394..3410c37ad 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/paved.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/paved.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/diorite/paved_borderless.png index fd0262bb8..83f4c8917 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/paved_borderless.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/paved_borderless.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/diorite/paved_top.png index 1733c7c81..08a7184c1 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/paved_top.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/paved_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/pillar.png b/src/main/resources/assets/create/textures/block/palettes/diorite/pillar.png index 20b590c92..d57fc7ddc 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/pillar.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/pillar.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/diorite/pillar_end.png index 6cec7892b..b92eb7574 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/pillar_end.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/pillar_end.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/polished.png b/src/main/resources/assets/create/textures/block/palettes/diorite/polished.png index 1733c7c81..08a7184c1 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/polished.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/polished.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/diorite/polished_connected.png index 785a36284..de1c65be7 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/polished_connected.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/polished_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/diorite/polished_slab.png index 714c78982..729c73974 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/polished_slab.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/polished_slab.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused10.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused10.png index 2f65729cc..8827177fb 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused10.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/unused10.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused11.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused11.png index 64e9d1347..382d0b1e2 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused11.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/unused11.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused12.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused12.png index 64e9d1347..382d0b1e2 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused12.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/unused12.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused13.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused13.png index 64e9d1347..382d0b1e2 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused13.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/unused13.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused2.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused2.png index a60aba08c..c44e33c62 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused2.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/unused2.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused4.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused4.png index 55a6a1795..b229aa87c 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused4.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/unused4.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused6.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused6.png index 693f87f6a..327cbf063 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused6.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/unused6.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused7.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused7.png index b20bb0b7b..03d11da55 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused7.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/unused7.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused8.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused8.png index 89c0441a8..2b7fbb741 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused8.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/unused8.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused9.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused9.png index c700eb056..eedfeabc9 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused9.png and b/src/main/resources/assets/create/textures/block/palettes/diorite/unused9.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/bricks.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/bricks.png index c4f54a994..7e7e03fa9 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/bricks.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/chiseled.png index 0b7b7718b..492807422 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/chiseled.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/chiseled.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/chiseled_top.png index 5fc527b10..2eabb72d4 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/chiseled_top.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/chiseled_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/cobblestone.png index 77201a79b..f0b325fc7 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/cobblestone.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/cobblestone.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/dolomite1.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/dolomite1.png index a835ea0bb..e9c1195a4 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/dolomite1.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/dolomite1.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/fancy_bricks.png index b7540bd99..a2e2cb6a0 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/fancy_bricks.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/fancy_bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/layered.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/layered.png index 4aed5306d..ac95ee82e 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/layered.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/layered.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/layered_connected.png index 70196b339..6dd6c43a9 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/layered_connected.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/layered_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/paved.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/paved.png index 0beff6bc9..21d15ebb2 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/paved.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/paved.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/paved_borderless.png index b8124c3d1..61d108a60 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/paved_borderless.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/paved_borderless.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/paved_top.png index 53ca2499c..22ef5a796 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/paved_top.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/paved_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/pillar.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/pillar.png index 460ab1eb7..6c4015d50 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/pillar.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/pillar.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/pillar_end.png index 9e46c4bd3..bd8099fcf 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/pillar_end.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/pillar_end.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/plain.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/plain.png index e78bd9d89..c02d43f13 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/plain.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/plain.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/polished.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/polished.png index 53ca2499c..22ef5a796 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/polished.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/polished.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/polished_connected.png index 5ef11a5bf..b47ee3f69 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/polished_connected.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/polished_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/polished_slab.png index 1658598e5..d77d30e1d 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/polished_slab.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/polished_slab.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused10.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused10.png index 0348ab065..408e12b57 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused10.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused10.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused11.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused11.png index e78bd9d89..c02d43f13 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused11.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused11.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused12.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused12.png index e78bd9d89..c02d43f13 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused12.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused12.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused2.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused2.png index 670238cde..af1bb15f9 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused2.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused2.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused4.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused4.png index 7d9bbb534..a239370ee 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused4.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused4.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused6.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused6.png index cf2653bb8..71ca138c5 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused6.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused6.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused7.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused7.png index dd0b0a1aa..75455c04a 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused7.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused7.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused8.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused8.png index 018ff6367..b2e35948e 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused8.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused8.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused9.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused9.png index add5e0da6..990e18c07 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused9.png and b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused9.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/framed_glass.png b/src/main/resources/assets/create/textures/block/palettes/framed_glass.png index ebe1235d9..68941612d 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/framed_glass.png and b/src/main/resources/assets/create/textures/block/palettes/framed_glass.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/framed_glass_connected.png b/src/main/resources/assets/create/textures/block/palettes/framed_glass_connected.png index 18ed111a6..59eb9d442 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/framed_glass_connected.png and b/src/main/resources/assets/create/textures/block/palettes/framed_glass_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/framed_glass_pane_top.png b/src/main/resources/assets/create/textures/block/palettes/framed_glass_pane_top.png index 1b42f026c..6051902b9 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/framed_glass_pane_top.png and b/src/main/resources/assets/create/textures/block/palettes/framed_glass_pane_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/bricks.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/bricks.png index 53090a4e5..03c9873d5 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/bricks.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/chiseled.png index d00035007..b299d2682 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/chiseled.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/chiseled.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/chiseled_top.png index c53267526..fd11adf9c 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/chiseled_top.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/chiseled_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/cobblestone.png index 1df199c6e..c988f4b99 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/cobblestone.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/cobblestone.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/fancy_bricks.png index 25bbc35c5..0b43ffd2b 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/fancy_bricks.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/fancy_bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/gabbro1.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/gabbro1.png index 87fb52aa3..d1a6e27ec 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/gabbro1.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/gabbro1.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/layered.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/layered.png index 2c443ab27..9850ffb66 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/layered.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/layered.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/layered_connected.png index 42056b68d..4a2945731 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/layered_connected.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/layered_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/paved.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/paved.png index 6111a08c5..4777f4ba1 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/paved.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/paved.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/paved_borderless.png index a87b73622..3421681ec 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/paved_borderless.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/paved_borderless.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/paved_top.png index c6d1842cc..73004c1a2 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/paved_top.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/paved_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/pillar.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/pillar.png index 1b1685eb4..62dc15c1d 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/pillar.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/pillar.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/pillar_end.png index 318d1dea1..72f2b0d02 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/pillar_end.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/pillar_end.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/plain.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/plain.png index 2aea1052e..983cb50cd 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/plain.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/plain.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/polished.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/polished.png index c6d1842cc..73004c1a2 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/polished.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/polished.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/polished_connected.png index a632fcf0c..c3f4090ae 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/polished_connected.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/polished_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/polished_slab.png index 1ad486873..13663b586 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/polished_slab.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/polished_slab.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused10.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused10.png index 27c9bb5f9..2f7bac7be 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused10.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused10.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused11.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused11.png index 2aea1052e..983cb50cd 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused11.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused11.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused13.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused13.png index 2aea1052e..983cb50cd 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused13.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused13.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused2.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused2.png index b82e41891..2868caed8 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused2.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused2.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused4.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused4.png index 46cd72a83..bbbf06da8 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused4.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused4.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused5.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused5.png index 40614bf40..a001eb84b 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused5.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused5.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused6.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused6.png index a7671d296..34f22dc59 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused6.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused6.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused7.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused7.png index 37c4441ec..208f3dd95 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused7.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused7.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused8.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused8.png index af529ade8..50e48403d 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused8.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused8.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused9.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused9.png index 23ce98be4..faf8fb198 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused9.png and b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused9.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/bricks.png b/src/main/resources/assets/create/textures/block/palettes/granite/bricks.png index 0529688b7..3075c8977 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/bricks.png and b/src/main/resources/assets/create/textures/block/palettes/granite/bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/granite/chiseled.png index 5d9ecdcab..4d5a633c3 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/chiseled.png and b/src/main/resources/assets/create/textures/block/palettes/granite/chiseled.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/granite/chiseled_top.png index 069dacec1..2b0de2ff5 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/chiseled_top.png and b/src/main/resources/assets/create/textures/block/palettes/granite/chiseled_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/granite/cobblestone.png index c88e4042d..324e156a0 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/cobblestone.png and b/src/main/resources/assets/create/textures/block/palettes/granite/cobblestone.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/granite/fancy_bricks.png index 67b1c9f44..6e844dada 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/fancy_bricks.png and b/src/main/resources/assets/create/textures/block/palettes/granite/fancy_bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/granite1.png b/src/main/resources/assets/create/textures/block/palettes/granite/granite1.png index ac4080bae..74450b167 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/granite1.png and b/src/main/resources/assets/create/textures/block/palettes/granite/granite1.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/layered.png b/src/main/resources/assets/create/textures/block/palettes/granite/layered.png index 0b1bda508..dc333932c 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/layered.png and b/src/main/resources/assets/create/textures/block/palettes/granite/layered.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/granite/layered_connected.png index 37ec31bcc..2ca726476 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/layered_connected.png and b/src/main/resources/assets/create/textures/block/palettes/granite/layered_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/paved.png b/src/main/resources/assets/create/textures/block/palettes/granite/paved.png index ab2c23518..30140f89e 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/paved.png and b/src/main/resources/assets/create/textures/block/palettes/granite/paved.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/granite/paved_borderless.png index 0529688b7..3075c8977 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/paved_borderless.png and b/src/main/resources/assets/create/textures/block/palettes/granite/paved_borderless.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/granite/paved_top.png index 9aa51963a..207ab88e4 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/paved_top.png and b/src/main/resources/assets/create/textures/block/palettes/granite/paved_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/pillar.png b/src/main/resources/assets/create/textures/block/palettes/granite/pillar.png index 19f240a70..c084d9270 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/pillar.png and b/src/main/resources/assets/create/textures/block/palettes/granite/pillar.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/granite/pillar_end.png index fd4f0b76d..cb104b0bb 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/pillar_end.png and b/src/main/resources/assets/create/textures/block/palettes/granite/pillar_end.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/polished.png b/src/main/resources/assets/create/textures/block/palettes/granite/polished.png index 9aa51963a..207ab88e4 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/polished.png and b/src/main/resources/assets/create/textures/block/palettes/granite/polished.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/granite/polished_connected.png index 33fdb6be2..cbd67b3bf 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/polished_connected.png and b/src/main/resources/assets/create/textures/block/palettes/granite/polished_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/granite/polished_slab.png index 6182c971c..c25912142 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/polished_slab.png and b/src/main/resources/assets/create/textures/block/palettes/granite/polished_slab.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused10.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused10.png index 3c39526ea..7caa28a5c 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused10.png and b/src/main/resources/assets/create/textures/block/palettes/granite/unused10.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused11.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused11.png index 7c2a50a45..ec944c2cd 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused11.png and b/src/main/resources/assets/create/textures/block/palettes/granite/unused11.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused12.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused12.png index 7c2a50a45..ec944c2cd 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused12.png and b/src/main/resources/assets/create/textures/block/palettes/granite/unused12.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused13.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused13.png index 7c2a50a45..ec944c2cd 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused13.png and b/src/main/resources/assets/create/textures/block/palettes/granite/unused13.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused2.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused2.png index e8713ac39..da143dbf0 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused2.png and b/src/main/resources/assets/create/textures/block/palettes/granite/unused2.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused4.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused4.png index a74828db8..8b8beab89 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused4.png and b/src/main/resources/assets/create/textures/block/palettes/granite/unused4.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused5.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused5.png index cde5daa25..018a5355e 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused5.png and b/src/main/resources/assets/create/textures/block/palettes/granite/unused5.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused6.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused6.png index 7b72d3a73..d6c1a5965 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused6.png and b/src/main/resources/assets/create/textures/block/palettes/granite/unused6.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused7.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused7.png index 52f1105ca..ea72d04e8 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused7.png and b/src/main/resources/assets/create/textures/block/palettes/granite/unused7.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused8.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused8.png index 2d34d015f..bc17d868d 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused8.png and b/src/main/resources/assets/create/textures/block/palettes/granite/unused8.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused9.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused9.png index 7f133a2bf..0a3c9e8d6 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused9.png and b/src/main/resources/assets/create/textures/block/palettes/granite/unused9.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/horizontal_framed_glass.png b/src/main/resources/assets/create/textures/block/palettes/horizontal_framed_glass.png index 4098c80ec..0c90e46c6 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/horizontal_framed_glass.png and b/src/main/resources/assets/create/textures/block/palettes/horizontal_framed_glass.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/horizontal_framed_glass_connected.png b/src/main/resources/assets/create/textures/block/palettes/horizontal_framed_glass_connected.png index 4125642b9..d69203fae 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/horizontal_framed_glass_connected.png and b/src/main/resources/assets/create/textures/block/palettes/horizontal_framed_glass_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/jungle_window.png b/src/main/resources/assets/create/textures/block/palettes/jungle_window.png index 61d33a326..ef52bbb9a 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/jungle_window.png and b/src/main/resources/assets/create/textures/block/palettes/jungle_window.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/jungle_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/jungle_window_connected.png index 5ed48cd23..dece0e827 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/jungle_window_connected.png and b/src/main/resources/assets/create/textures/block/palettes/jungle_window_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limesand.png b/src/main/resources/assets/create/textures/block/palettes/limesand.png index bfb5f60db..aa02aebc8 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limesand.png and b/src/main/resources/assets/create/textures/block/palettes/limesand.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/bricks.png b/src/main/resources/assets/create/textures/block/palettes/limestone/bricks.png index 04c792d34..70229f5e4 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/bricks.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/limestone/chiseled.png index efde39d63..105aab23c 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/chiseled.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/chiseled.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/limestone/chiseled_top.png index 6230384c6..ec8da0cdf 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/chiseled_top.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/chiseled_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/limestone/cobblestone.png index c850577b6..e363610b9 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/cobblestone.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/cobblestone.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/limestone/fancy_bricks.png index f48871af0..e38a152d5 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/fancy_bricks.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/fancy_bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/layered.png b/src/main/resources/assets/create/textures/block/palettes/limestone/layered.png index 0cb31581e..c81391fac 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/layered.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/layered.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/limestone/layered_connected.png index c29884bb9..7d452fcc2 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/layered_connected.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/layered_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/limestone1.png b/src/main/resources/assets/create/textures/block/palettes/limestone/limestone1.png index 1d7845d55..55f5c66cd 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/limestone1.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/limestone1.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/paved.png b/src/main/resources/assets/create/textures/block/palettes/limestone/paved.png index 3d42478d0..264be5b28 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/paved.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/paved.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/limestone/paved_borderless.png index 7c9b13034..b40300f0c 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/paved_borderless.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/paved_borderless.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/limestone/paved_top.png index f90a3b768..174299138 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/paved_top.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/paved_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/pillar.png b/src/main/resources/assets/create/textures/block/palettes/limestone/pillar.png index 64c4447c9..8385369b1 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/pillar.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/pillar.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/limestone/pillar_end.png index e30832d62..4e27b5374 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/pillar_end.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/pillar_end.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/plain.png b/src/main/resources/assets/create/textures/block/palettes/limestone/plain.png index b818cb13a..1b8e10b22 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/plain.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/plain.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/polished.png b/src/main/resources/assets/create/textures/block/palettes/limestone/polished.png index f90a3b768..174299138 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/polished.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/polished.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/limestone/polished_connected.png index 09fa62ee8..bc74ef76f 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/polished_connected.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/polished_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/limestone/polished_slab.png index d8ba94653..0378686df 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/polished_slab.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/polished_slab.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused10.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused10.png index 8c73956d8..d668897b5 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused10.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/unused10.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused11.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused11.png index 04e560062..bc59d42b7 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused11.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/unused11.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused12.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused12.png index 04e560062..bc59d42b7 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused12.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/unused12.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused13.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused13.png index 04e560062..bc59d42b7 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused13.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/unused13.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused2.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused2.png index b459f8ada..9f26c2e4b 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused2.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/unused2.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused4.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused4.png index 715666f6f..61fa66015 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused4.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/unused4.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused6.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused6.png index 5ad1d81d4..3763f5324 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused6.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/unused6.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused7.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused7.png index 8889ebde6..f87ad93a0 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused7.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/unused7.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused8.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused8.png index e97204151..ac76c1019 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused8.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/unused8.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused9.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused9.png index 5d1519fef..d4d19a97a 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused9.png and b/src/main/resources/assets/create/textures/block/palettes/limestone/unused9.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/mossy.png b/src/main/resources/assets/create/textures/block/palettes/mossy.png index de824d1f9..42e39b83f 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/mossy.png and b/src/main/resources/assets/create/textures/block/palettes/mossy.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/natural_scoria.png b/src/main/resources/assets/create/textures/block/palettes/natural_scoria.png index 970d8e7ea..bee390915 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/natural_scoria.png and b/src/main/resources/assets/create/textures/block/palettes/natural_scoria.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/oak_window.png b/src/main/resources/assets/create/textures/block/palettes/oak_window.png index eea236f75..4b503f77a 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/oak_window.png and b/src/main/resources/assets/create/textures/block/palettes/oak_window.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/oak_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/oak_window_connected.png index 68f87f93e..edddf3f45 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/oak_window_connected.png and b/src/main/resources/assets/create/textures/block/palettes/oak_window_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window.png b/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window.png index cf196999f..ca5340d6a 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window.png and b/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_connected.png index 593bcecf8..5c26973f7 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_connected.png and b/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_end.png b/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_end.png index 258c4a558..64195cdf4 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_end.png and b/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_end.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_pane_top.png b/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_pane_top.png index a41ef9ead..9a016365f 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_pane_top.png and b/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_pane_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/overgrown.png b/src/main/resources/assets/create/textures/block/palettes/overgrown.png index 211c3f5ea..5520b511d 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/overgrown.png and b/src/main/resources/assets/create/textures/block/palettes/overgrown.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/bricks.png b/src/main/resources/assets/create/textures/block/palettes/scoria/bricks.png index 47ce435d0..e7f03600e 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/bricks.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/scoria/chiseled.png index e44f4d80a..adc661c20 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/chiseled.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/chiseled.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/scoria/chiseled_top.png index b23e1e266..c6b36ffc7 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/chiseled_top.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/chiseled_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/scoria/cobblestone.png index 02e85ac17..3d2493f97 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/cobblestone.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/cobblestone.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/scoria/fancy_bricks.png index 7106480f8..31b54d9f6 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/fancy_bricks.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/fancy_bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/layered.png b/src/main/resources/assets/create/textures/block/palettes/scoria/layered.png index fef0c5225..f159e7abd 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/layered.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/layered.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/scoria/layered_connected.png index a9b72db30..3ca935d88 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/layered_connected.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/layered_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/paved.png b/src/main/resources/assets/create/textures/block/palettes/scoria/paved.png index e076170ab..a6157183b 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/paved.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/paved.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/scoria/paved_borderless.png index 4077467d5..13bf21cb3 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/paved_borderless.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/paved_borderless.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/scoria/paved_top.png index 6cc447be5..40647e64d 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/paved_top.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/paved_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/pillar.png b/src/main/resources/assets/create/textures/block/palettes/scoria/pillar.png index 3347d0aa1..2aba43bf9 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/pillar.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/pillar.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/scoria/pillar_end.png index e3027cfbf..521abc34e 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/pillar_end.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/pillar_end.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/plain.png b/src/main/resources/assets/create/textures/block/palettes/scoria/plain.png index 970d8e7ea..bee390915 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/plain.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/plain.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/polished.png b/src/main/resources/assets/create/textures/block/palettes/scoria/polished.png index 6cc447be5..40647e64d 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/polished.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/polished.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/scoria/polished_connected.png index 684b7de7a..2df1a3bc9 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/polished_connected.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/polished_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/scoria/polished_slab.png index fac81d006..c2700dd28 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/polished_slab.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/polished_slab.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/scoria1.png b/src/main/resources/assets/create/textures/block/palettes/scoria/scoria1.png index 6b21d4de8..1179cac06 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/scoria1.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/scoria1.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused10.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused10.png index b36f2dc98..8b173a7b5 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused10.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/unused10.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused11.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused11.png index 08b60c3bd..d83fa37fd 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused11.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/unused11.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused12.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused12.png index 08b60c3bd..d83fa37fd 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused12.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/unused12.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused13.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused13.png index 08b60c3bd..d83fa37fd 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused13.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/unused13.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused2.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused2.png index 078559149..de52b38dd 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused2.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/unused2.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused4.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused4.png index 980fba6e3..a0f6acf52 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused4.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/unused4.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused5.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused5.png index 5e01e3fde..08a75e637 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused5.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/unused5.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused6.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused6.png index d5eba541f..332286169 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused6.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/unused6.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused7.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused7.png index 59db525ed..86d855c70 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused7.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/unused7.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused8.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused8.png index d715eeb3d..0fc402e5a 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused8.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/unused8.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused9.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused9.png index b7d86a3c7..82ccd0a09 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused9.png and b/src/main/resources/assets/create/textures/block/palettes/scoria/unused9.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/spruce_window.png b/src/main/resources/assets/create/textures/block/palettes/spruce_window.png index e19bf9756..d762ab003 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/spruce_window.png and b/src/main/resources/assets/create/textures/block/palettes/spruce_window.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/spruce_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/spruce_window_connected.png index 7c2fad33a..cadda64a5 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/spruce_window_connected.png and b/src/main/resources/assets/create/textures/block/palettes/spruce_window_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/tiled_glass.png b/src/main/resources/assets/create/textures/block/palettes/tiled_glass.png index 1588535c9..6eb96c555 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/tiled_glass.png and b/src/main/resources/assets/create/textures/block/palettes/tiled_glass.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/vertical_framed_glass.png b/src/main/resources/assets/create/textures/block/palettes/vertical_framed_glass.png index 774099270..cc7123a31 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/vertical_framed_glass.png and b/src/main/resources/assets/create/textures/block/palettes/vertical_framed_glass.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/vertical_framed_glass_connected.png b/src/main/resources/assets/create/textures/block/palettes/vertical_framed_glass_connected.png index 9815c7da1..a9152991a 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/vertical_framed_glass_connected.png and b/src/main/resources/assets/create/textures/block/palettes/vertical_framed_glass_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/warped_window.png b/src/main/resources/assets/create/textures/block/palettes/warped_window.png index fcfb63ef6..01623ea7b 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/warped_window.png and b/src/main/resources/assets/create/textures/block/palettes/warped_window.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/warped_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/warped_window_connected.png index 33711dccf..e4261476e 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/warped_window_connected.png and b/src/main/resources/assets/create/textures/block/palettes/warped_window_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/bricks.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/bricks.png index 66961e5fd..62a328e90 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/bricks.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/chiseled.png index bffcc3b91..f4477386a 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/chiseled.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/chiseled.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/chiseled_top.png index e549aaf17..16f6f2182 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/chiseled_top.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/chiseled_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/cobblestone.png index 01df7a770..83736862c 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/cobblestone.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/cobblestone.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/fancy_bricks.png index 41203cf18..fc4d6e92e 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/fancy_bricks.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/fancy_bricks.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/layered.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/layered.png index a78cab39e..d2cfabcdb 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/layered.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/layered.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/layered_connected.png index 0216a891b..ea9e3dfe2 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/layered_connected.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/layered_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved.png index b39467364..2833e2ff5 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved_borderless.png index c149ddc88..ecfb2e4b8 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved_borderless.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved_borderless.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved_top.png index 4873d856e..f7bd66327 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved_top.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved_top.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/pillar.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/pillar.png index a8d149873..eb3f76ebb 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/pillar.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/pillar.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/pillar_end.png index 6b032b1a8..b275c1920 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/pillar_end.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/pillar_end.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/plain.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/plain.png index 448f1c63b..41f62bb30 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/plain.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/plain.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished.png index 4873d856e..f7bd66327 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished_connected.png index 97a241cb0..306ed837f 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished_connected.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished_slab.png index 373d9d587..f696bfcee 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished_slab.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished_slab.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused10.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused10.png index 45d85ec63..2c2630983 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused10.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused10.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused11.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused11.png index 5d00a05f8..e3de6e0ea 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused11.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused11.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused12.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused12.png index 5d00a05f8..e3de6e0ea 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused12.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused12.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused13.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused13.png index 5d00a05f8..e3de6e0ea 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused13.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused13.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused2.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused2.png index f47fb42de..6bc4fb764 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused2.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused2.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused4.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused4.png index 98339dfbd..0da3cedec 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused4.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused4.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused5.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused5.png index 7b79ac03f..d2da8e833 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused5.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused5.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused6.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused6.png index cbea505eb..3cab9d71c 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused6.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused6.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused7.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused7.png index df563cef5..54eefeafa 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused7.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused7.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused8.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused8.png index 46e1acf19..51a89b020 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused8.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused8.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused9.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused9.png index 067d3d157..3d2c5e95e 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused9.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused9.png differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/weathered_limestone1.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/weathered_limestone1.png index 7d0bf36f1..07a4f9d2e 100644 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/weathered_limestone1.png and b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/weathered_limestone1.png differ diff --git a/src/main/resources/assets/create/textures/block/pinion.png b/src/main/resources/assets/create/textures/block/pinion.png index 68c43c3e6..a493457d1 100644 Binary files a/src/main/resources/assets/create/textures/block/pinion.png and b/src/main/resources/assets/create/textures/block/pinion.png differ diff --git a/src/main/resources/assets/create/textures/block/pipe_drain.png b/src/main/resources/assets/create/textures/block/pipe_drain.png index ce79757af..261ead298 100644 Binary files a/src/main/resources/assets/create/textures/block/pipe_drain.png and b/src/main/resources/assets/create/textures/block/pipe_drain.png differ diff --git a/src/main/resources/assets/create/textures/block/piston_bottom.png b/src/main/resources/assets/create/textures/block/piston_bottom.png index c2e6ef172..edf3ceb18 100644 Binary files a/src/main/resources/assets/create/textures/block/piston_bottom.png and b/src/main/resources/assets/create/textures/block/piston_bottom.png differ diff --git a/src/main/resources/assets/create/textures/block/piston_inner.png b/src/main/resources/assets/create/textures/block/piston_inner.png index 3679bf6f7..4b966272d 100644 Binary files a/src/main/resources/assets/create/textures/block/piston_inner.png and b/src/main/resources/assets/create/textures/block/piston_inner.png differ diff --git a/src/main/resources/assets/create/textures/block/pole_end.png b/src/main/resources/assets/create/textures/block/pole_end.png index 8c6d51989..c7599aece 100644 Binary files a/src/main/resources/assets/create/textures/block/pole_end.png and b/src/main/resources/assets/create/textures/block/pole_end.png differ diff --git a/src/main/resources/assets/create/textures/block/portable_fluid_interface.png b/src/main/resources/assets/create/textures/block/portable_fluid_interface.png index 7912fd828..ac44a2b03 100644 Binary files a/src/main/resources/assets/create/textures/block/portable_fluid_interface.png and b/src/main/resources/assets/create/textures/block/portable_fluid_interface.png differ diff --git a/src/main/resources/assets/create/textures/block/portable_storage_interface.png b/src/main/resources/assets/create/textures/block/portable_storage_interface.png index 0e9ade677..39dc76113 100644 Binary files a/src/main/resources/assets/create/textures/block/portable_storage_interface.png and b/src/main/resources/assets/create/textures/block/portable_storage_interface.png differ diff --git a/src/main/resources/assets/create/textures/block/pulley_casing.png b/src/main/resources/assets/create/textures/block/pulley_casing.png index 0503a6ec2..407ba2ae4 100644 Binary files a/src/main/resources/assets/create/textures/block/pulley_casing.png and b/src/main/resources/assets/create/textures/block/pulley_casing.png differ diff --git a/src/main/resources/assets/create/textures/block/pulley_magnet.png b/src/main/resources/assets/create/textures/block/pulley_magnet.png index 745d3e704..4836f1a5d 100644 Binary files a/src/main/resources/assets/create/textures/block/pulley_magnet.png and b/src/main/resources/assets/create/textures/block/pulley_magnet.png differ diff --git a/src/main/resources/assets/create/textures/block/pulley_rope.png b/src/main/resources/assets/create/textures/block/pulley_rope.png index 1202b97ff..980c666aa 100644 Binary files a/src/main/resources/assets/create/textures/block/pulley_rope.png and b/src/main/resources/assets/create/textures/block/pulley_rope.png differ diff --git a/src/main/resources/assets/create/textures/block/pump.png b/src/main/resources/assets/create/textures/block/pump.png index c76071121..31a19aee3 100644 Binary files a/src/main/resources/assets/create/textures/block/pump.png and b/src/main/resources/assets/create/textures/block/pump.png differ diff --git a/src/main/resources/assets/create/textures/block/radial_chassis_end.png b/src/main/resources/assets/create/textures/block/radial_chassis_end.png index 22d1c7bfa..ccadeaaa0 100644 Binary files a/src/main/resources/assets/create/textures/block/radial_chassis_end.png and b/src/main/resources/assets/create/textures/block/radial_chassis_end.png differ diff --git a/src/main/resources/assets/create/textures/block/radial_chassis_side.png b/src/main/resources/assets/create/textures/block/radial_chassis_side.png index 19d319769..2fd209aa3 100644 Binary files a/src/main/resources/assets/create/textures/block/radial_chassis_side.png and b/src/main/resources/assets/create/textures/block/radial_chassis_side.png differ diff --git a/src/main/resources/assets/create/textures/block/radial_chassis_side_sticky.png b/src/main/resources/assets/create/textures/block/radial_chassis_side_sticky.png index 62f163bb6..0567c3fa1 100644 Binary files a/src/main/resources/assets/create/textures/block/radial_chassis_side_sticky.png and b/src/main/resources/assets/create/textures/block/radial_chassis_side_sticky.png differ diff --git a/src/main/resources/assets/create/textures/block/redstone_antenna.png b/src/main/resources/assets/create/textures/block/redstone_antenna.png index 31bc50188..2219a308d 100644 Binary files a/src/main/resources/assets/create/textures/block/redstone_antenna.png and b/src/main/resources/assets/create/textures/block/redstone_antenna.png differ diff --git a/src/main/resources/assets/create/textures/block/redstone_antenna_powered.png b/src/main/resources/assets/create/textures/block/redstone_antenna_powered.png index 2e883a28d..89e6fce6d 100644 Binary files a/src/main/resources/assets/create/textures/block/redstone_antenna_powered.png and b/src/main/resources/assets/create/textures/block/redstone_antenna_powered.png differ diff --git a/src/main/resources/assets/create/textures/block/redstone_bridge.png b/src/main/resources/assets/create/textures/block/redstone_bridge.png index ab9258ad9..7ca26adec 100644 Binary files a/src/main/resources/assets/create/textures/block/redstone_bridge.png and b/src/main/resources/assets/create/textures/block/redstone_bridge.png differ diff --git a/src/main/resources/assets/create/textures/block/redstone_bridge_powered.png b/src/main/resources/assets/create/textures/block/redstone_bridge_powered.png index deba15cbb..0ba9e5668 100644 Binary files a/src/main/resources/assets/create/textures/block/redstone_bridge_powered.png and b/src/main/resources/assets/create/textures/block/redstone_bridge_powered.png differ diff --git a/src/main/resources/assets/create/textures/block/refined_radiance_block.png b/src/main/resources/assets/create/textures/block/refined_radiance_block.png index 0f1184481..75ee598f4 100644 Binary files a/src/main/resources/assets/create/textures/block/refined_radiance_block.png and b/src/main/resources/assets/create/textures/block/refined_radiance_block.png differ diff --git a/src/main/resources/assets/create/textures/block/refined_radiance_casing.png b/src/main/resources/assets/create/textures/block/refined_radiance_casing.png index 2b4ec02d5..071273796 100644 Binary files a/src/main/resources/assets/create/textures/block/refined_radiance_casing.png and b/src/main/resources/assets/create/textures/block/refined_radiance_casing.png differ diff --git a/src/main/resources/assets/create/textures/block/refined_radiance_casing_connected.png b/src/main/resources/assets/create/textures/block/refined_radiance_casing_connected.png index 4c44ca58c..5e039098e 100644 Binary files a/src/main/resources/assets/create/textures/block/refined_radiance_casing_connected.png and b/src/main/resources/assets/create/textures/block/refined_radiance_casing_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/reinforced_rail_top.png b/src/main/resources/assets/create/textures/block/reinforced_rail_top.png index 9b284ef30..daf426768 100644 Binary files a/src/main/resources/assets/create/textures/block/reinforced_rail_top.png and b/src/main/resources/assets/create/textures/block/reinforced_rail_top.png differ diff --git a/src/main/resources/assets/create/textures/block/rotation_speed_controller.png b/src/main/resources/assets/create/textures/block/rotation_speed_controller.png index 214cd3a91..93af31838 100644 Binary files a/src/main/resources/assets/create/textures/block/rotation_speed_controller.png and b/src/main/resources/assets/create/textures/block/rotation_speed_controller.png differ diff --git a/src/main/resources/assets/create/textures/block/rotation_speed_controller_bracket.png b/src/main/resources/assets/create/textures/block/rotation_speed_controller_bracket.png index fcc00d5db..38fa16e27 100644 Binary files a/src/main/resources/assets/create/textures/block/rotation_speed_controller_bracket.png and b/src/main/resources/assets/create/textures/block/rotation_speed_controller_bracket.png differ diff --git a/src/main/resources/assets/create/textures/block/rotation_speed_controller_top.png b/src/main/resources/assets/create/textures/block/rotation_speed_controller_top.png index 5d11cd315..e6095c1b7 100644 Binary files a/src/main/resources/assets/create/textures/block/rotation_speed_controller_top.png and b/src/main/resources/assets/create/textures/block/rotation_speed_controller_top.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_black.png b/src/main/resources/assets/create/textures/block/sail/canvas_black.png index ad17781fa..e55f922b9 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_black.png and b/src/main/resources/assets/create/textures/block/sail/canvas_black.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_blue.png b/src/main/resources/assets/create/textures/block/sail/canvas_blue.png index f58f97030..2bc78309c 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_blue.png and b/src/main/resources/assets/create/textures/block/sail/canvas_blue.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_brown.png b/src/main/resources/assets/create/textures/block/sail/canvas_brown.png index 9cd980f0e..04601ad85 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_brown.png and b/src/main/resources/assets/create/textures/block/sail/canvas_brown.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_cyan.png b/src/main/resources/assets/create/textures/block/sail/canvas_cyan.png index d4828a95e..0d3c8d37c 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_cyan.png and b/src/main/resources/assets/create/textures/block/sail/canvas_cyan.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_gray.png b/src/main/resources/assets/create/textures/block/sail/canvas_gray.png index 6a10e5bcc..9b38f8f40 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_gray.png and b/src/main/resources/assets/create/textures/block/sail/canvas_gray.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_green.png b/src/main/resources/assets/create/textures/block/sail/canvas_green.png index 5e6a29a93..fdbbf0355 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_green.png and b/src/main/resources/assets/create/textures/block/sail/canvas_green.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_light_blue.png b/src/main/resources/assets/create/textures/block/sail/canvas_light_blue.png index 4e751103c..c63cf3a13 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_light_blue.png and b/src/main/resources/assets/create/textures/block/sail/canvas_light_blue.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_light_gray.png b/src/main/resources/assets/create/textures/block/sail/canvas_light_gray.png index 56b8f8966..6b892ac3f 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_light_gray.png and b/src/main/resources/assets/create/textures/block/sail/canvas_light_gray.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_lime.png b/src/main/resources/assets/create/textures/block/sail/canvas_lime.png index 1585e226d..979835eab 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_lime.png and b/src/main/resources/assets/create/textures/block/sail/canvas_lime.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_magenta.png b/src/main/resources/assets/create/textures/block/sail/canvas_magenta.png index 519227c88..8de8010a9 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_magenta.png and b/src/main/resources/assets/create/textures/block/sail/canvas_magenta.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_orange.png b/src/main/resources/assets/create/textures/block/sail/canvas_orange.png index 31ca4324e..5986b6b24 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_orange.png and b/src/main/resources/assets/create/textures/block/sail/canvas_orange.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_pink.png b/src/main/resources/assets/create/textures/block/sail/canvas_pink.png index ae89cc05b..5cb04456c 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_pink.png and b/src/main/resources/assets/create/textures/block/sail/canvas_pink.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_purple.png b/src/main/resources/assets/create/textures/block/sail/canvas_purple.png index 220913bc7..e74ffcbe1 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_purple.png and b/src/main/resources/assets/create/textures/block/sail/canvas_purple.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_red.png b/src/main/resources/assets/create/textures/block/sail/canvas_red.png index 7fb8c43cd..31a669ea0 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_red.png and b/src/main/resources/assets/create/textures/block/sail/canvas_red.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_white.png b/src/main/resources/assets/create/textures/block/sail/canvas_white.png index 09a4218ff..e7f195637 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_white.png and b/src/main/resources/assets/create/textures/block/sail/canvas_white.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_yellow.png b/src/main/resources/assets/create/textures/block/sail/canvas_yellow.png index d7316d619..aac06569f 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_yellow.png and b/src/main/resources/assets/create/textures/block/sail/canvas_yellow.png differ diff --git a/src/main/resources/assets/create/textures/block/sail/frame.png b/src/main/resources/assets/create/textures/block/sail/frame.png index 89f2270ac..b99122729 100644 Binary files a/src/main/resources/assets/create/textures/block/sail/frame.png and b/src/main/resources/assets/create/textures/block/sail/frame.png differ diff --git a/src/main/resources/assets/create/textures/block/saw_reversed.png b/src/main/resources/assets/create/textures/block/saw_reversed.png index eef262f2a..727766388 100644 Binary files a/src/main/resources/assets/create/textures/block/saw_reversed.png and b/src/main/resources/assets/create/textures/block/saw_reversed.png differ diff --git a/src/main/resources/assets/create/textures/block/schematic_table_side.png b/src/main/resources/assets/create/textures/block/schematic_table_side.png index 739e96a14..df2838dc6 100644 Binary files a/src/main/resources/assets/create/textures/block/schematic_table_side.png and b/src/main/resources/assets/create/textures/block/schematic_table_side.png differ diff --git a/src/main/resources/assets/create/textures/block/schematic_table_top.png b/src/main/resources/assets/create/textures/block/schematic_table_top.png index 1b2fe1b8f..3385b720f 100644 Binary files a/src/main/resources/assets/create/textures/block/schematic_table_top.png and b/src/main/resources/assets/create/textures/block/schematic_table_top.png differ diff --git a/src/main/resources/assets/create/textures/block/schematicannon.png b/src/main/resources/assets/create/textures/block/schematicannon.png index ef3bf9d79..1fd592ce3 100644 Binary files a/src/main/resources/assets/create/textures/block/schematicannon.png and b/src/main/resources/assets/create/textures/block/schematicannon.png differ diff --git a/src/main/resources/assets/create/textures/block/sealer.png b/src/main/resources/assets/create/textures/block/sealer.png index 82289c490..cdc1ceae5 100644 Binary files a/src/main/resources/assets/create/textures/block/sealer.png and b/src/main/resources/assets/create/textures/block/sealer.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/bottom.png b/src/main/resources/assets/create/textures/block/seat/bottom.png index 97a2c28d0..da848535f 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/bottom.png and b/src/main/resources/assets/create/textures/block/seat/bottom.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_black.png b/src/main/resources/assets/create/textures/block/seat/side_black.png index 4f952499d..197d4d688 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/side_black.png and b/src/main/resources/assets/create/textures/block/seat/side_black.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_blue.png b/src/main/resources/assets/create/textures/block/seat/side_blue.png index 0a7ddd8ef..bdc1636ef 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/side_blue.png and b/src/main/resources/assets/create/textures/block/seat/side_blue.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_brown.png b/src/main/resources/assets/create/textures/block/seat/side_brown.png index b4a7eea16..b6af26a16 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/side_brown.png and b/src/main/resources/assets/create/textures/block/seat/side_brown.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_cyan.png b/src/main/resources/assets/create/textures/block/seat/side_cyan.png index 7a0c6f10d..8839bd5bd 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/side_cyan.png and b/src/main/resources/assets/create/textures/block/seat/side_cyan.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_gray.png b/src/main/resources/assets/create/textures/block/seat/side_gray.png index 39732edad..33a81f1b8 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/side_gray.png and b/src/main/resources/assets/create/textures/block/seat/side_gray.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_green.png b/src/main/resources/assets/create/textures/block/seat/side_green.png index c0f46ad9a..53bae97ce 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/side_green.png and b/src/main/resources/assets/create/textures/block/seat/side_green.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_light_blue.png b/src/main/resources/assets/create/textures/block/seat/side_light_blue.png index 0977e29be..e2304c714 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/side_light_blue.png and b/src/main/resources/assets/create/textures/block/seat/side_light_blue.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_light_gray.png b/src/main/resources/assets/create/textures/block/seat/side_light_gray.png index 376d9763c..55d24060e 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/side_light_gray.png and b/src/main/resources/assets/create/textures/block/seat/side_light_gray.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_lime.png b/src/main/resources/assets/create/textures/block/seat/side_lime.png index ae9c2575f..adafc1b25 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/side_lime.png and b/src/main/resources/assets/create/textures/block/seat/side_lime.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_magenta.png b/src/main/resources/assets/create/textures/block/seat/side_magenta.png index 01703d91d..899cf9d9c 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/side_magenta.png and b/src/main/resources/assets/create/textures/block/seat/side_magenta.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_orange.png b/src/main/resources/assets/create/textures/block/seat/side_orange.png index 9ada1ff3b..9e8cedec1 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/side_orange.png and b/src/main/resources/assets/create/textures/block/seat/side_orange.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_pink.png b/src/main/resources/assets/create/textures/block/seat/side_pink.png index b8ac24099..2c9e2f1c6 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/side_pink.png and b/src/main/resources/assets/create/textures/block/seat/side_pink.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_purple.png b/src/main/resources/assets/create/textures/block/seat/side_purple.png index e3f935d20..e3d11a89d 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/side_purple.png and b/src/main/resources/assets/create/textures/block/seat/side_purple.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_red.png b/src/main/resources/assets/create/textures/block/seat/side_red.png index c21eb5131..ed2abf62b 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/side_red.png and b/src/main/resources/assets/create/textures/block/seat/side_red.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_white.png b/src/main/resources/assets/create/textures/block/seat/side_white.png index a6e74860d..1aaa8bd17 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/side_white.png and b/src/main/resources/assets/create/textures/block/seat/side_white.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_yellow.png b/src/main/resources/assets/create/textures/block/seat/side_yellow.png index 6e992a4bf..b74b4d7d1 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/side_yellow.png and b/src/main/resources/assets/create/textures/block/seat/side_yellow.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_black.png b/src/main/resources/assets/create/textures/block/seat/top_black.png index 04650cc7c..f464fd97a 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/top_black.png and b/src/main/resources/assets/create/textures/block/seat/top_black.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_blue.png b/src/main/resources/assets/create/textures/block/seat/top_blue.png index 67e4d204b..7fa12e6b4 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/top_blue.png and b/src/main/resources/assets/create/textures/block/seat/top_blue.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_brown.png b/src/main/resources/assets/create/textures/block/seat/top_brown.png index c05b5386f..e1e9658cc 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/top_brown.png and b/src/main/resources/assets/create/textures/block/seat/top_brown.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_cyan.png b/src/main/resources/assets/create/textures/block/seat/top_cyan.png index 0211f1f79..a2d47aa66 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/top_cyan.png and b/src/main/resources/assets/create/textures/block/seat/top_cyan.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_gray.png b/src/main/resources/assets/create/textures/block/seat/top_gray.png index 445600cad..c0df9fd5a 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/top_gray.png and b/src/main/resources/assets/create/textures/block/seat/top_gray.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_green.png b/src/main/resources/assets/create/textures/block/seat/top_green.png index 4f2597547..f16555e50 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/top_green.png and b/src/main/resources/assets/create/textures/block/seat/top_green.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_light_blue.png b/src/main/resources/assets/create/textures/block/seat/top_light_blue.png index 1b8798945..9439751ec 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/top_light_blue.png and b/src/main/resources/assets/create/textures/block/seat/top_light_blue.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_light_gray.png b/src/main/resources/assets/create/textures/block/seat/top_light_gray.png index c544af090..43a576173 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/top_light_gray.png and b/src/main/resources/assets/create/textures/block/seat/top_light_gray.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_lime.png b/src/main/resources/assets/create/textures/block/seat/top_lime.png index a6623db59..e6f148dac 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/top_lime.png and b/src/main/resources/assets/create/textures/block/seat/top_lime.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_magenta.png b/src/main/resources/assets/create/textures/block/seat/top_magenta.png index a3f3d5647..eb3885dca 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/top_magenta.png and b/src/main/resources/assets/create/textures/block/seat/top_magenta.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_orange.png b/src/main/resources/assets/create/textures/block/seat/top_orange.png index c8df63fe7..6aba6a85f 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/top_orange.png and b/src/main/resources/assets/create/textures/block/seat/top_orange.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_pink.png b/src/main/resources/assets/create/textures/block/seat/top_pink.png index a66c30ebf..c4d798265 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/top_pink.png and b/src/main/resources/assets/create/textures/block/seat/top_pink.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_purple.png b/src/main/resources/assets/create/textures/block/seat/top_purple.png index 6c1d0f737..71a94058d 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/top_purple.png and b/src/main/resources/assets/create/textures/block/seat/top_purple.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_red.png b/src/main/resources/assets/create/textures/block/seat/top_red.png index c9e7a63ff..30c083542 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/top_red.png and b/src/main/resources/assets/create/textures/block/seat/top_red.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_white.png b/src/main/resources/assets/create/textures/block/seat/top_white.png index aa3e1bde6..21ba6b7f1 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/top_white.png and b/src/main/resources/assets/create/textures/block/seat/top_white.png differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_yellow.png b/src/main/resources/assets/create/textures/block/seat/top_yellow.png index 28d163965..2478cf056 100644 Binary files a/src/main/resources/assets/create/textures/block/seat/top_yellow.png and b/src/main/resources/assets/create/textures/block/seat/top_yellow.png differ diff --git a/src/main/resources/assets/create/textures/block/secondary_linear_chassis_side.png b/src/main/resources/assets/create/textures/block/secondary_linear_chassis_side.png index 08c7c11da..071ac65ad 100644 Binary files a/src/main/resources/assets/create/textures/block/secondary_linear_chassis_side.png and b/src/main/resources/assets/create/textures/block/secondary_linear_chassis_side.png differ diff --git a/src/main/resources/assets/create/textures/block/secondary_linear_chassis_side_connected.png b/src/main/resources/assets/create/textures/block/secondary_linear_chassis_side_connected.png index 2b9ab5f1d..a5402a8ea 100644 Binary files a/src/main/resources/assets/create/textures/block/secondary_linear_chassis_side_connected.png and b/src/main/resources/assets/create/textures/block/secondary_linear_chassis_side_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/sequenced_gearshift.png b/src/main/resources/assets/create/textures/block/sequenced_gearshift.png index bcafe5f20..0e72665b3 100644 Binary files a/src/main/resources/assets/create/textures/block/sequenced_gearshift.png and b/src/main/resources/assets/create/textures/block/sequenced_gearshift.png differ diff --git a/src/main/resources/assets/create/textures/block/sequenced_gearshift_1.png b/src/main/resources/assets/create/textures/block/sequenced_gearshift_1.png index d5bc2ae41..7dead505b 100644 Binary files a/src/main/resources/assets/create/textures/block/sequenced_gearshift_1.png and b/src/main/resources/assets/create/textures/block/sequenced_gearshift_1.png differ diff --git a/src/main/resources/assets/create/textures/block/sequenced_gearshift_2.png b/src/main/resources/assets/create/textures/block/sequenced_gearshift_2.png index f6f3304f4..9461d89a2 100644 Binary files a/src/main/resources/assets/create/textures/block/sequenced_gearshift_2.png and b/src/main/resources/assets/create/textures/block/sequenced_gearshift_2.png differ diff --git a/src/main/resources/assets/create/textures/block/sequenced_gearshift_3.png b/src/main/resources/assets/create/textures/block/sequenced_gearshift_3.png index 95affcedb..b5732d195 100644 Binary files a/src/main/resources/assets/create/textures/block/sequenced_gearshift_3.png and b/src/main/resources/assets/create/textures/block/sequenced_gearshift_3.png differ diff --git a/src/main/resources/assets/create/textures/block/sequenced_gearshift_4.png b/src/main/resources/assets/create/textures/block/sequenced_gearshift_4.png index 4f984c196..5b34baf73 100644 Binary files a/src/main/resources/assets/create/textures/block/sequenced_gearshift_4.png and b/src/main/resources/assets/create/textures/block/sequenced_gearshift_4.png differ diff --git a/src/main/resources/assets/create/textures/block/sequenced_gearshift_5.png b/src/main/resources/assets/create/textures/block/sequenced_gearshift_5.png index 77f9f402d..a0de73ca9 100644 Binary files a/src/main/resources/assets/create/textures/block/sequenced_gearshift_5.png and b/src/main/resources/assets/create/textures/block/sequenced_gearshift_5.png differ diff --git a/src/main/resources/assets/create/textures/block/shadow_steel_casing.png b/src/main/resources/assets/create/textures/block/shadow_steel_casing.png index 165333d0f..7e3c52b81 100644 Binary files a/src/main/resources/assets/create/textures/block/shadow_steel_casing.png and b/src/main/resources/assets/create/textures/block/shadow_steel_casing.png differ diff --git a/src/main/resources/assets/create/textures/block/shadow_steel_casing_connected.png b/src/main/resources/assets/create/textures/block/shadow_steel_casing_connected.png index ee7b8eadd..c768385bc 100644 Binary files a/src/main/resources/assets/create/textures/block/shadow_steel_casing_connected.png and b/src/main/resources/assets/create/textures/block/shadow_steel_casing_connected.png differ diff --git a/src/main/resources/assets/create/textures/block/smart_pipe_1.png b/src/main/resources/assets/create/textures/block/smart_pipe_1.png index 339db4402..ee16bd88d 100644 Binary files a/src/main/resources/assets/create/textures/block/smart_pipe_1.png and b/src/main/resources/assets/create/textures/block/smart_pipe_1.png differ diff --git a/src/main/resources/assets/create/textures/block/smart_pipe_2.png b/src/main/resources/assets/create/textures/block/smart_pipe_2.png index 538a5fce4..4bef60552 100644 Binary files a/src/main/resources/assets/create/textures/block/smart_pipe_2.png and b/src/main/resources/assets/create/textures/block/smart_pipe_2.png differ diff --git a/src/main/resources/assets/create/textures/block/smooth_dark_log_top.png b/src/main/resources/assets/create/textures/block/smooth_dark_log_top.png index 88d809ae0..39becf8c2 100644 Binary files a/src/main/resources/assets/create/textures/block/smooth_dark_log_top.png and b/src/main/resources/assets/create/textures/block/smooth_dark_log_top.png differ diff --git a/src/main/resources/assets/create/textures/block/spout.png b/src/main/resources/assets/create/textures/block/spout.png index 440c3cdfc..5964003f0 100644 Binary files a/src/main/resources/assets/create/textures/block/spout.png and b/src/main/resources/assets/create/textures/block/spout.png differ diff --git a/src/main/resources/assets/create/textures/block/static_saw.png b/src/main/resources/assets/create/textures/block/static_saw.png index ad695108f..8321bb091 100644 Binary files a/src/main/resources/assets/create/textures/block/static_saw.png and b/src/main/resources/assets/create/textures/block/static_saw.png differ diff --git a/src/main/resources/assets/create/textures/block/steam_engine_wheel.png b/src/main/resources/assets/create/textures/block/steam_engine_wheel.png index 13f9ea368..7a50e02b0 100644 Binary files a/src/main/resources/assets/create/textures/block/steam_engine_wheel.png and b/src/main/resources/assets/create/textures/block/steam_engine_wheel.png differ diff --git a/src/main/resources/assets/create/textures/block/sticker.png b/src/main/resources/assets/create/textures/block/sticker.png index 75429c8af..4f7321d5c 100644 Binary files a/src/main/resources/assets/create/textures/block/sticker.png and b/src/main/resources/assets/create/textures/block/sticker.png differ diff --git a/src/main/resources/assets/create/textures/block/sticker_side.png b/src/main/resources/assets/create/textures/block/sticker_side.png index 4e82caf62..b56ce4c0c 100644 Binary files a/src/main/resources/assets/create/textures/block/sticker_side.png and b/src/main/resources/assets/create/textures/block/sticker_side.png differ diff --git a/src/main/resources/assets/create/textures/block/sticker_side_powered.png b/src/main/resources/assets/create/textures/block/sticker_side_powered.png index 04a2c1e23..2db933576 100644 Binary files a/src/main/resources/assets/create/textures/block/sticker_side_powered.png and b/src/main/resources/assets/create/textures/block/sticker_side_powered.png differ diff --git a/src/main/resources/assets/create/textures/block/symmetry_mirror.png b/src/main/resources/assets/create/textures/block/symmetry_mirror.png index b29da0866..fb69fd4cf 100644 Binary files a/src/main/resources/assets/create/textures/block/symmetry_mirror.png and b/src/main/resources/assets/create/textures/block/symmetry_mirror.png differ diff --git a/src/main/resources/assets/create/textures/block/terrain_zapper_mesh.png b/src/main/resources/assets/create/textures/block/terrain_zapper_mesh.png index b0fc09cb2..25e1c44f6 100644 Binary files a/src/main/resources/assets/create/textures/block/terrain_zapper_mesh.png and b/src/main/resources/assets/create/textures/block/terrain_zapper_mesh.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_black.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_black.png index 7a458d0a6..689d719e3 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_black.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_black.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_blue.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_blue.png index b1e0ac600..4590e364b 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_blue.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_blue.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_brown.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_brown.png index fe13bb2ef..7d4628663 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_brown.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_brown.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_copper.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_copper.png index 47f4f9f8f..a9d31a1c0 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_copper.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_copper.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_cyan.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_cyan.png index 6585ebf50..6dd59637d 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_cyan.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_cyan.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_gray.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_gray.png index fc540caab..573329b1f 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_gray.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_gray.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_green.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_green.png index 191770361..bb0527b25 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_green.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_green.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_light_blue.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_light_blue.png index ec7020d83..7576c28cc 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_light_blue.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_light_blue.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_light_gray.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_light_gray.png index 9b2bfcae0..eb54bcec9 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_light_gray.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_light_gray.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_lime.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_lime.png index dcb6992a1..5d5b2ccf7 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_lime.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_lime.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_magenta.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_magenta.png index ed98539b4..3e4df9935 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_magenta.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_magenta.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_orange.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_orange.png index 31fc651ac..d4187d15e 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_orange.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_orange.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_pink.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_pink.png index 7d43bcf14..f35d01667 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_pink.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_pink.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_purple.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_purple.png index b047c80fc..029045145 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_purple.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_purple.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_red.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_red.png index ec7c79f32..a6397742f 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_red.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_red.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_white.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_white.png index 35431ecdd..c393085e2 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_white.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_white.png differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_yellow.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_yellow.png index 38528ef64..92e38ccb6 100644 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_yellow.png and b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_yellow.png differ diff --git a/src/main/resources/assets/create/textures/block/weighted_ejector_casing.png b/src/main/resources/assets/create/textures/block/weighted_ejector_casing.png index 1dc944109..03bc93db3 100644 Binary files a/src/main/resources/assets/create/textures/block/weighted_ejector_casing.png and b/src/main/resources/assets/create/textures/block/weighted_ejector_casing.png differ diff --git a/src/main/resources/assets/create/textures/block/weighted_ejector_inner.png b/src/main/resources/assets/create/textures/block/weighted_ejector_inner.png index ec1554367..b1c0015f6 100644 Binary files a/src/main/resources/assets/create/textures/block/weighted_ejector_inner.png and b/src/main/resources/assets/create/textures/block/weighted_ejector_inner.png differ diff --git a/src/main/resources/assets/create/textures/block/weighted_ejector_top.png b/src/main/resources/assets/create/textures/block/weighted_ejector_top.png index e32d2acb5..56cbb8ef9 100644 Binary files a/src/main/resources/assets/create/textures/block/weighted_ejector_top.png and b/src/main/resources/assets/create/textures/block/weighted_ejector_top.png differ diff --git a/src/main/resources/assets/create/textures/block/wheel.png b/src/main/resources/assets/create/textures/block/wheel.png index 74d3e89b8..b9597b86d 100644 Binary files a/src/main/resources/assets/create/textures/block/wheel.png and b/src/main/resources/assets/create/textures/block/wheel.png differ diff --git a/src/main/resources/assets/create/textures/block/wheel_extras.png b/src/main/resources/assets/create/textures/block/wheel_extras.png index f6a027f20..b77f0a938 100644 Binary files a/src/main/resources/assets/create/textures/block/wheel_extras.png and b/src/main/resources/assets/create/textures/block/wheel_extras.png differ diff --git a/src/main/resources/assets/create/textures/block/windmill_bearing_side.png b/src/main/resources/assets/create/textures/block/windmill_bearing_side.png index 25299507d..468e5056d 100644 Binary files a/src/main/resources/assets/create/textures/block/windmill_bearing_side.png and b/src/main/resources/assets/create/textures/block/windmill_bearing_side.png differ diff --git a/src/main/resources/assets/create/textures/block/zinc_block.png b/src/main/resources/assets/create/textures/block/zinc_block.png index 6ef49c21b..2170642c3 100644 Binary files a/src/main/resources/assets/create/textures/block/zinc_block.png and b/src/main/resources/assets/create/textures/block/zinc_block.png differ diff --git a/src/main/resources/assets/create/textures/block/zinc_ore.png b/src/main/resources/assets/create/textures/block/zinc_ore.png index 026340327..4f16c4b55 100644 Binary files a/src/main/resources/assets/create/textures/block/zinc_ore.png and b/src/main/resources/assets/create/textures/block/zinc_ore.png differ diff --git a/src/main/resources/assets/create/textures/entity/coupling.png b/src/main/resources/assets/create/textures/entity/coupling.png index 650b16107..b669900c3 100644 Binary files a/src/main/resources/assets/create/textures/entity/coupling.png and b/src/main/resources/assets/create/textures/entity/coupling.png differ diff --git a/src/main/resources/assets/create/textures/entity/super_glue/slime.png b/src/main/resources/assets/create/textures/entity/super_glue/slime.png index affbf87bc..5f0186afa 100644 Binary files a/src/main/resources/assets/create/textures/entity/super_glue/slime.png and b/src/main/resources/assets/create/textures/entity/super_glue/slime.png differ diff --git a/src/main/resources/assets/create/textures/fluid/chocolate_flow.png b/src/main/resources/assets/create/textures/fluid/chocolate_flow.png index 2df0830b0..b1fadafa3 100644 Binary files a/src/main/resources/assets/create/textures/fluid/chocolate_flow.png and b/src/main/resources/assets/create/textures/fluid/chocolate_flow.png differ diff --git a/src/main/resources/assets/create/textures/fluid/chocolate_still.png b/src/main/resources/assets/create/textures/fluid/chocolate_still.png index ecaa79ed4..da087a8a4 100644 Binary files a/src/main/resources/assets/create/textures/fluid/chocolate_still.png and b/src/main/resources/assets/create/textures/fluid/chocolate_still.png differ diff --git a/src/main/resources/assets/create/textures/fluid/honey_flow.png b/src/main/resources/assets/create/textures/fluid/honey_flow.png index 496733dfb..79685cf5c 100644 Binary files a/src/main/resources/assets/create/textures/fluid/honey_flow.png and b/src/main/resources/assets/create/textures/fluid/honey_flow.png differ diff --git a/src/main/resources/assets/create/textures/fluid/honey_still.png b/src/main/resources/assets/create/textures/fluid/honey_still.png index bdc474d57..af826f592 100644 Binary files a/src/main/resources/assets/create/textures/fluid/honey_still.png and b/src/main/resources/assets/create/textures/fluid/honey_still.png differ diff --git a/src/main/resources/assets/create/textures/fluid/milk_flow.png b/src/main/resources/assets/create/textures/fluid/milk_flow.png index c837d07b0..7287f32a0 100644 Binary files a/src/main/resources/assets/create/textures/fluid/milk_flow.png and b/src/main/resources/assets/create/textures/fluid/milk_flow.png differ diff --git a/src/main/resources/assets/create/textures/fluid/milk_still.png b/src/main/resources/assets/create/textures/fluid/milk_still.png index c75de6097..15fcf66cb 100644 Binary files a/src/main/resources/assets/create/textures/fluid/milk_still.png and b/src/main/resources/assets/create/textures/fluid/milk_still.png differ diff --git a/src/main/resources/assets/create/textures/fluid/potion_flow.png b/src/main/resources/assets/create/textures/fluid/potion_flow.png index 09184febb..46424ae99 100644 Binary files a/src/main/resources/assets/create/textures/fluid/potion_flow.png and b/src/main/resources/assets/create/textures/fluid/potion_flow.png differ diff --git a/src/main/resources/assets/create/textures/fluid/potion_still.png b/src/main/resources/assets/create/textures/fluid/potion_still.png index d89e7d9a6..9be2ce69f 100644 Binary files a/src/main/resources/assets/create/textures/fluid/potion_still.png and b/src/main/resources/assets/create/textures/fluid/potion_still.png differ diff --git a/src/main/resources/assets/create/textures/fluid/tea_flow.png b/src/main/resources/assets/create/textures/fluid/tea_flow.png index b792b7eb3..fc7929726 100644 Binary files a/src/main/resources/assets/create/textures/fluid/tea_flow.png and b/src/main/resources/assets/create/textures/fluid/tea_flow.png differ diff --git a/src/main/resources/assets/create/textures/fluid/tea_still.png b/src/main/resources/assets/create/textures/fluid/tea_still.png index 84b3618d6..fd9c789aa 100644 Binary files a/src/main/resources/assets/create/textures/fluid/tea_still.png and b/src/main/resources/assets/create/textures/fluid/tea_still.png differ diff --git a/src/main/resources/assets/create/textures/gui/curiosities.png b/src/main/resources/assets/create/textures/gui/curiosities.png index d6a0c6524..80b98e212 100644 Binary files a/src/main/resources/assets/create/textures/gui/curiosities.png and b/src/main/resources/assets/create/textures/gui/curiosities.png differ diff --git a/src/main/resources/assets/create/textures/gui/filters.png b/src/main/resources/assets/create/textures/gui/filters.png index e1f39a915..a39812436 100644 Binary files a/src/main/resources/assets/create/textures/gui/filters.png and b/src/main/resources/assets/create/textures/gui/filters.png differ diff --git a/src/main/resources/assets/create/textures/gui/icons.png b/src/main/resources/assets/create/textures/gui/icons.png index 2fbdf43bb..ad4928d11 100644 Binary files a/src/main/resources/assets/create/textures/gui/icons.png and b/src/main/resources/assets/create/textures/gui/icons.png differ diff --git a/src/main/resources/assets/create/textures/gui/jei/widgets.png b/src/main/resources/assets/create/textures/gui/jei/widgets.png index f1b21d476..6ec9a99c5 100644 Binary files a/src/main/resources/assets/create/textures/gui/jei/widgets.png and b/src/main/resources/assets/create/textures/gui/jei/widgets.png differ diff --git a/src/main/resources/assets/create/textures/gui/logistics.png b/src/main/resources/assets/create/textures/gui/logistics.png index 9aeee18e9..e4d408b20 100644 Binary files a/src/main/resources/assets/create/textures/gui/logistics.png and b/src/main/resources/assets/create/textures/gui/logistics.png differ diff --git a/src/main/resources/assets/create/textures/gui/logistics_2.png b/src/main/resources/assets/create/textures/gui/logistics_2.png index f56b7c911..b52c35eee 100644 Binary files a/src/main/resources/assets/create/textures/gui/logistics_2.png and b/src/main/resources/assets/create/textures/gui/logistics_2.png differ diff --git a/src/main/resources/assets/create/textures/gui/overlay.png b/src/main/resources/assets/create/textures/gui/overlay.png index e51ac3189..51c375804 100644 Binary files a/src/main/resources/assets/create/textures/gui/overlay.png and b/src/main/resources/assets/create/textures/gui/overlay.png differ diff --git a/src/main/resources/assets/create/textures/gui/placement_indicator.png b/src/main/resources/assets/create/textures/gui/placement_indicator.png index d433d9b2d..ca111ee39 100644 Binary files a/src/main/resources/assets/create/textures/gui/placement_indicator.png and b/src/main/resources/assets/create/textures/gui/placement_indicator.png differ diff --git a/src/main/resources/assets/create/textures/gui/player_inventory.png b/src/main/resources/assets/create/textures/gui/player_inventory.png index 0ab18ce97..4621b1902 100644 Binary files a/src/main/resources/assets/create/textures/gui/player_inventory.png and b/src/main/resources/assets/create/textures/gui/player_inventory.png differ diff --git a/src/main/resources/assets/create/textures/gui/schematics.png b/src/main/resources/assets/create/textures/gui/schematics.png index a3cc2615a..310ead28c 100644 Binary files a/src/main/resources/assets/create/textures/gui/schematics.png and b/src/main/resources/assets/create/textures/gui/schematics.png differ diff --git a/src/main/resources/assets/create/textures/gui/schematics_2.png b/src/main/resources/assets/create/textures/gui/schematics_2.png index 3d2dffdef..128dfaed3 100644 Binary files a/src/main/resources/assets/create/textures/gui/schematics_2.png and b/src/main/resources/assets/create/textures/gui/schematics_2.png differ diff --git a/src/main/resources/assets/create/textures/gui/sequencer.png b/src/main/resources/assets/create/textures/gui/sequencer.png index c89de3c15..90b635872 100644 Binary files a/src/main/resources/assets/create/textures/gui/sequencer.png and b/src/main/resources/assets/create/textures/gui/sequencer.png differ diff --git a/src/main/resources/assets/create/textures/gui/widgets.png b/src/main/resources/assets/create/textures/gui/widgets.png index 22ec3d894..33cfed66c 100644 Binary files a/src/main/resources/assets/create/textures/gui/widgets.png and b/src/main/resources/assets/create/textures/gui/widgets.png differ diff --git a/src/main/resources/assets/create/textures/item/andesite_alloy.png b/src/main/resources/assets/create/textures/item/andesite_alloy.png index 7008a134e..e5b5e99d3 100644 Binary files a/src/main/resources/assets/create/textures/item/andesite_alloy.png and b/src/main/resources/assets/create/textures/item/andesite_alloy.png differ diff --git a/src/main/resources/assets/create/textures/item/antioxidant.png b/src/main/resources/assets/create/textures/item/antioxidant.png index 67ad63c34..4e4655887 100644 Binary files a/src/main/resources/assets/create/textures/item/antioxidant.png and b/src/main/resources/assets/create/textures/item/antioxidant.png differ diff --git a/src/main/resources/assets/create/textures/item/bar_of_chocolate.png b/src/main/resources/assets/create/textures/item/bar_of_chocolate.png index 2c44a1732..0319784d1 100644 Binary files a/src/main/resources/assets/create/textures/item/bar_of_chocolate.png and b/src/main/resources/assets/create/textures/item/bar_of_chocolate.png differ diff --git a/src/main/resources/assets/create/textures/item/belt_connector.png b/src/main/resources/assets/create/textures/item/belt_connector.png index ab22ae497..dee2c92f1 100644 Binary files a/src/main/resources/assets/create/textures/item/belt_connector.png and b/src/main/resources/assets/create/textures/item/belt_connector.png differ diff --git a/src/main/resources/assets/create/textures/item/blaze_cake.png b/src/main/resources/assets/create/textures/item/blaze_cake.png index f76cbe266..eb4e64fb8 100644 Binary files a/src/main/resources/assets/create/textures/item/blaze_cake.png and b/src/main/resources/assets/create/textures/item/blaze_cake.png differ diff --git a/src/main/resources/assets/create/textures/item/blaze_cake_base.png b/src/main/resources/assets/create/textures/item/blaze_cake_base.png index 236400f16..6c409d9f0 100644 Binary files a/src/main/resources/assets/create/textures/item/blaze_cake_base.png and b/src/main/resources/assets/create/textures/item/blaze_cake_base.png differ diff --git a/src/main/resources/assets/create/textures/item/brass_hand.png b/src/main/resources/assets/create/textures/item/brass_hand.png index a9bce9c40..f6b2033ab 100644 Binary files a/src/main/resources/assets/create/textures/item/brass_hand.png and b/src/main/resources/assets/create/textures/item/brass_hand.png differ diff --git a/src/main/resources/assets/create/textures/item/brass_ingot.png b/src/main/resources/assets/create/textures/item/brass_ingot.png index d6a6d1787..d4ab26132 100644 Binary files a/src/main/resources/assets/create/textures/item/brass_ingot.png and b/src/main/resources/assets/create/textures/item/brass_ingot.png differ diff --git a/src/main/resources/assets/create/textures/item/brass_nugget.png b/src/main/resources/assets/create/textures/item/brass_nugget.png index 8c5dde366..bd75c2e03 100644 Binary files a/src/main/resources/assets/create/textures/item/brass_nugget.png and b/src/main/resources/assets/create/textures/item/brass_nugget.png differ diff --git a/src/main/resources/assets/create/textures/item/brass_sheet.png b/src/main/resources/assets/create/textures/item/brass_sheet.png index 24544270b..2b638333a 100644 Binary files a/src/main/resources/assets/create/textures/item/brass_sheet.png and b/src/main/resources/assets/create/textures/item/brass_sheet.png differ diff --git a/src/main/resources/assets/create/textures/item/builders_tea.png b/src/main/resources/assets/create/textures/item/builders_tea.png index 55870a490..27cc72b5d 100644 Binary files a/src/main/resources/assets/create/textures/item/builders_tea.png and b/src/main/resources/assets/create/textures/item/builders_tea.png differ diff --git a/src/main/resources/assets/create/textures/item/chest_minecart_contraption.png b/src/main/resources/assets/create/textures/item/chest_minecart_contraption.png index 747ff9058..39f33cce6 100644 Binary files a/src/main/resources/assets/create/textures/item/chest_minecart_contraption.png and b/src/main/resources/assets/create/textures/item/chest_minecart_contraption.png differ diff --git a/src/main/resources/assets/create/textures/item/chocolate_bucket.png b/src/main/resources/assets/create/textures/item/chocolate_bucket.png index 3eaca262b..729c37515 100644 Binary files a/src/main/resources/assets/create/textures/item/chocolate_bucket.png and b/src/main/resources/assets/create/textures/item/chocolate_bucket.png differ diff --git a/src/main/resources/assets/create/textures/item/chocolate_glazed_berries.png b/src/main/resources/assets/create/textures/item/chocolate_glazed_berries.png index 29e0f3c16..a1dc5661f 100644 Binary files a/src/main/resources/assets/create/textures/item/chocolate_glazed_berries.png and b/src/main/resources/assets/create/textures/item/chocolate_glazed_berries.png differ diff --git a/src/main/resources/assets/create/textures/item/chromatic_compound_0.png b/src/main/resources/assets/create/textures/item/chromatic_compound_0.png index f0a449282..c2e33445d 100644 Binary files a/src/main/resources/assets/create/textures/item/chromatic_compound_0.png and b/src/main/resources/assets/create/textures/item/chromatic_compound_0.png differ diff --git a/src/main/resources/assets/create/textures/item/chromatic_compound_1.png b/src/main/resources/assets/create/textures/item/chromatic_compound_1.png index 79c013504..1892c3e65 100644 Binary files a/src/main/resources/assets/create/textures/item/chromatic_compound_1.png and b/src/main/resources/assets/create/textures/item/chromatic_compound_1.png differ diff --git a/src/main/resources/assets/create/textures/item/chromatic_compound_2.png b/src/main/resources/assets/create/textures/item/chromatic_compound_2.png index a01daea9c..a03c41c05 100644 Binary files a/src/main/resources/assets/create/textures/item/chromatic_compound_2.png and b/src/main/resources/assets/create/textures/item/chromatic_compound_2.png differ diff --git a/src/main/resources/assets/create/textures/item/cinder_flour.png b/src/main/resources/assets/create/textures/item/cinder_flour.png index d5b757e94..a4fa03527 100644 Binary files a/src/main/resources/assets/create/textures/item/cinder_flour.png and b/src/main/resources/assets/create/textures/item/cinder_flour.png differ diff --git a/src/main/resources/assets/create/textures/item/copper_ingot.png b/src/main/resources/assets/create/textures/item/copper_ingot.png index c143bb2b7..40c855c47 100644 Binary files a/src/main/resources/assets/create/textures/item/copper_ingot.png and b/src/main/resources/assets/create/textures/item/copper_ingot.png differ diff --git a/src/main/resources/assets/create/textures/item/copper_nugget.png b/src/main/resources/assets/create/textures/item/copper_nugget.png index 06e7f0cce..024bb4e5d 100644 Binary files a/src/main/resources/assets/create/textures/item/copper_nugget.png and b/src/main/resources/assets/create/textures/item/copper_nugget.png differ diff --git a/src/main/resources/assets/create/textures/item/copper_sheet.png b/src/main/resources/assets/create/textures/item/copper_sheet.png index 0b6a554b3..789c79e8a 100644 Binary files a/src/main/resources/assets/create/textures/item/copper_sheet.png and b/src/main/resources/assets/create/textures/item/copper_sheet.png differ diff --git a/src/main/resources/assets/create/textures/item/crafter_slot_cover.png b/src/main/resources/assets/create/textures/item/crafter_slot_cover.png index e7e4e0400..bb56b1175 100644 Binary files a/src/main/resources/assets/create/textures/item/crafter_slot_cover.png and b/src/main/resources/assets/create/textures/item/crafter_slot_cover.png differ diff --git a/src/main/resources/assets/create/textures/item/crushed_aluminum_ore.png b/src/main/resources/assets/create/textures/item/crushed_aluminum_ore.png index ad1542d00..ee88f3825 100644 Binary files a/src/main/resources/assets/create/textures/item/crushed_aluminum_ore.png and b/src/main/resources/assets/create/textures/item/crushed_aluminum_ore.png differ diff --git a/src/main/resources/assets/create/textures/item/crushed_brass.png b/src/main/resources/assets/create/textures/item/crushed_brass.png index af3f2ed8f..0aaa3b529 100644 Binary files a/src/main/resources/assets/create/textures/item/crushed_brass.png and b/src/main/resources/assets/create/textures/item/crushed_brass.png differ diff --git a/src/main/resources/assets/create/textures/item/crushed_copper_ore.png b/src/main/resources/assets/create/textures/item/crushed_copper_ore.png index 1ea9c05a9..f54652b64 100644 Binary files a/src/main/resources/assets/create/textures/item/crushed_copper_ore.png and b/src/main/resources/assets/create/textures/item/crushed_copper_ore.png differ diff --git a/src/main/resources/assets/create/textures/item/crushed_gold_ore.png b/src/main/resources/assets/create/textures/item/crushed_gold_ore.png index cc381b534..71f1e2dc2 100644 Binary files a/src/main/resources/assets/create/textures/item/crushed_gold_ore.png and b/src/main/resources/assets/create/textures/item/crushed_gold_ore.png differ diff --git a/src/main/resources/assets/create/textures/item/crushed_iron_ore.png b/src/main/resources/assets/create/textures/item/crushed_iron_ore.png index 19900aedc..647580721 100644 Binary files a/src/main/resources/assets/create/textures/item/crushed_iron_ore.png and b/src/main/resources/assets/create/textures/item/crushed_iron_ore.png differ diff --git a/src/main/resources/assets/create/textures/item/crushed_lead_ore.png b/src/main/resources/assets/create/textures/item/crushed_lead_ore.png index c105931d1..dcda45cb2 100644 Binary files a/src/main/resources/assets/create/textures/item/crushed_lead_ore.png and b/src/main/resources/assets/create/textures/item/crushed_lead_ore.png differ diff --git a/src/main/resources/assets/create/textures/item/crushed_nickel_ore.png b/src/main/resources/assets/create/textures/item/crushed_nickel_ore.png index 1ad1b0035..5de85901b 100644 Binary files a/src/main/resources/assets/create/textures/item/crushed_nickel_ore.png and b/src/main/resources/assets/create/textures/item/crushed_nickel_ore.png differ diff --git a/src/main/resources/assets/create/textures/item/crushed_osmium_ore.png b/src/main/resources/assets/create/textures/item/crushed_osmium_ore.png index 2a7964d95..1dedc49d0 100644 Binary files a/src/main/resources/assets/create/textures/item/crushed_osmium_ore.png and b/src/main/resources/assets/create/textures/item/crushed_osmium_ore.png differ diff --git a/src/main/resources/assets/create/textures/item/crushed_platinum_ore.png b/src/main/resources/assets/create/textures/item/crushed_platinum_ore.png index 4f4f45ae4..24edc97b7 100644 Binary files a/src/main/resources/assets/create/textures/item/crushed_platinum_ore.png and b/src/main/resources/assets/create/textures/item/crushed_platinum_ore.png differ diff --git a/src/main/resources/assets/create/textures/item/crushed_quicksilver_ore.png b/src/main/resources/assets/create/textures/item/crushed_quicksilver_ore.png index 902960cc6..25991f468 100644 Binary files a/src/main/resources/assets/create/textures/item/crushed_quicksilver_ore.png and b/src/main/resources/assets/create/textures/item/crushed_quicksilver_ore.png differ diff --git a/src/main/resources/assets/create/textures/item/crushed_silver_ore.png b/src/main/resources/assets/create/textures/item/crushed_silver_ore.png index 823c77960..b2c8f1cb9 100644 Binary files a/src/main/resources/assets/create/textures/item/crushed_silver_ore.png and b/src/main/resources/assets/create/textures/item/crushed_silver_ore.png differ diff --git a/src/main/resources/assets/create/textures/item/crushed_tin_ore.png b/src/main/resources/assets/create/textures/item/crushed_tin_ore.png index f4bee57d2..884a124f1 100644 Binary files a/src/main/resources/assets/create/textures/item/crushed_tin_ore.png and b/src/main/resources/assets/create/textures/item/crushed_tin_ore.png differ diff --git a/src/main/resources/assets/create/textures/item/crushed_uranium_ore.png b/src/main/resources/assets/create/textures/item/crushed_uranium_ore.png index 691cb2af4..8af9c7e91 100644 Binary files a/src/main/resources/assets/create/textures/item/crushed_uranium_ore.png and b/src/main/resources/assets/create/textures/item/crushed_uranium_ore.png differ diff --git a/src/main/resources/assets/create/textures/item/crushed_zinc_ore.png b/src/main/resources/assets/create/textures/item/crushed_zinc_ore.png index b57536391..2ffdcae38 100644 Binary files a/src/main/resources/assets/create/textures/item/crushed_zinc_ore.png and b/src/main/resources/assets/create/textures/item/crushed_zinc_ore.png differ diff --git a/src/main/resources/assets/create/textures/item/diving_boots.png b/src/main/resources/assets/create/textures/item/diving_boots.png new file mode 100644 index 000000000..176c710c7 Binary files /dev/null and b/src/main/resources/assets/create/textures/item/diving_boots.png differ diff --git a/src/main/resources/assets/create/textures/item/diving_helmet.png b/src/main/resources/assets/create/textures/item/diving_helmet.png new file mode 100644 index 000000000..27d3938d1 Binary files /dev/null and b/src/main/resources/assets/create/textures/item/diving_helmet.png differ diff --git a/src/main/resources/assets/create/textures/item/dough.png b/src/main/resources/assets/create/textures/item/dough.png index 8ebb49701..e0e98f769 100644 Binary files a/src/main/resources/assets/create/textures/item/dough.png and b/src/main/resources/assets/create/textures/item/dough.png differ diff --git a/src/main/resources/assets/create/textures/item/electron_tube.png b/src/main/resources/assets/create/textures/item/electron_tube.png index 3bf2cfbed..7eb58c925 100644 Binary files a/src/main/resources/assets/create/textures/item/electron_tube.png and b/src/main/resources/assets/create/textures/item/electron_tube.png differ diff --git a/src/main/resources/assets/create/textures/item/empty_schematic.png b/src/main/resources/assets/create/textures/item/empty_schematic.png index cfcaebacf..7277bc2eb 100644 Binary files a/src/main/resources/assets/create/textures/item/empty_schematic.png and b/src/main/resources/assets/create/textures/item/empty_schematic.png differ diff --git a/src/main/resources/assets/create/textures/item/extendo_grip.png b/src/main/resources/assets/create/textures/item/extendo_grip.png index 64984feed..3f8bb5f7f 100644 Binary files a/src/main/resources/assets/create/textures/item/extendo_grip.png and b/src/main/resources/assets/create/textures/item/extendo_grip.png differ diff --git a/src/main/resources/assets/create/textures/item/filter.png b/src/main/resources/assets/create/textures/item/filter.png index c7907c4f2..18ad0a8e6 100644 Binary files a/src/main/resources/assets/create/textures/item/filter.png and b/src/main/resources/assets/create/textures/item/filter.png differ diff --git a/src/main/resources/assets/create/textures/item/furnace_minecart_contraption.png b/src/main/resources/assets/create/textures/item/furnace_minecart_contraption.png index 747ff9058..39f33cce6 100644 Binary files a/src/main/resources/assets/create/textures/item/furnace_minecart_contraption.png and b/src/main/resources/assets/create/textures/item/furnace_minecart_contraption.png differ diff --git a/src/main/resources/assets/create/textures/item/goggles.png b/src/main/resources/assets/create/textures/item/goggles.png index 278ad9090..68da2d09b 100644 Binary files a/src/main/resources/assets/create/textures/item/goggles.png and b/src/main/resources/assets/create/textures/item/goggles.png differ diff --git a/src/main/resources/assets/create/textures/item/goggles_model.png b/src/main/resources/assets/create/textures/item/goggles_model.png index bf6467f88..05a413382 100644 Binary files a/src/main/resources/assets/create/textures/item/goggles_model.png and b/src/main/resources/assets/create/textures/item/goggles_model.png differ diff --git a/src/main/resources/assets/create/textures/item/golden_sheet.png b/src/main/resources/assets/create/textures/item/golden_sheet.png index 2d2261b26..31ca1992d 100644 Binary files a/src/main/resources/assets/create/textures/item/golden_sheet.png and b/src/main/resources/assets/create/textures/item/golden_sheet.png differ diff --git a/src/main/resources/assets/create/textures/item/honey_bucket.png b/src/main/resources/assets/create/textures/item/honey_bucket.png index 0cda8e7c8..80abdc8cb 100644 Binary files a/src/main/resources/assets/create/textures/item/honey_bucket.png and b/src/main/resources/assets/create/textures/item/honey_bucket.png differ diff --git a/src/main/resources/assets/create/textures/item/honeyed_apple.png b/src/main/resources/assets/create/textures/item/honeyed_apple.png index 39311123e..184e77fff 100644 Binary files a/src/main/resources/assets/create/textures/item/honeyed_apple.png and b/src/main/resources/assets/create/textures/item/honeyed_apple.png differ diff --git a/src/main/resources/assets/create/textures/item/integrated_circuit.png b/src/main/resources/assets/create/textures/item/integrated_circuit.png index 7080487ca..efc1430c2 100644 Binary files a/src/main/resources/assets/create/textures/item/integrated_circuit.png and b/src/main/resources/assets/create/textures/item/integrated_circuit.png differ diff --git a/src/main/resources/assets/create/textures/item/iron_sheet.png b/src/main/resources/assets/create/textures/item/iron_sheet.png index e7042ef09..23b3afc10 100644 Binary files a/src/main/resources/assets/create/textures/item/iron_sheet.png and b/src/main/resources/assets/create/textures/item/iron_sheet.png differ diff --git a/src/main/resources/assets/create/textures/item/lapis_sheet.png b/src/main/resources/assets/create/textures/item/lapis_sheet.png index ad9a988fd..b5705e30f 100644 Binary files a/src/main/resources/assets/create/textures/item/lapis_sheet.png and b/src/main/resources/assets/create/textures/item/lapis_sheet.png differ diff --git a/src/main/resources/assets/create/textures/item/logistical_dial.png b/src/main/resources/assets/create/textures/item/logistical_dial.png index f8074d857..3e8a4c756 100644 Binary files a/src/main/resources/assets/create/textures/item/logistical_dial.png and b/src/main/resources/assets/create/textures/item/logistical_dial.png differ diff --git a/src/main/resources/assets/create/textures/item/logistical_dial_overlay.png b/src/main/resources/assets/create/textures/item/logistical_dial_overlay.png index 28c08005b..833a78430 100644 Binary files a/src/main/resources/assets/create/textures/item/logistical_dial_overlay.png and b/src/main/resources/assets/create/textures/item/logistical_dial_overlay.png differ diff --git a/src/main/resources/assets/create/textures/item/minecart_contraption.png b/src/main/resources/assets/create/textures/item/minecart_contraption.png index 747ff9058..39f33cce6 100644 Binary files a/src/main/resources/assets/create/textures/item/minecart_contraption.png and b/src/main/resources/assets/create/textures/item/minecart_contraption.png differ diff --git a/src/main/resources/assets/create/textures/item/minecart_coupling.png b/src/main/resources/assets/create/textures/item/minecart_coupling.png index b9c5072be..a91eacc4f 100644 Binary files a/src/main/resources/assets/create/textures/item/minecart_coupling.png and b/src/main/resources/assets/create/textures/item/minecart_coupling.png differ diff --git a/src/main/resources/assets/create/textures/item/polished_rose_quartz.png b/src/main/resources/assets/create/textures/item/polished_rose_quartz.png index db75387db..494e8d694 100644 Binary files a/src/main/resources/assets/create/textures/item/polished_rose_quartz.png and b/src/main/resources/assets/create/textures/item/polished_rose_quartz.png differ diff --git a/src/main/resources/assets/create/textures/item/powdered_obsidian.png b/src/main/resources/assets/create/textures/item/powdered_obsidian.png index e20d678c9..bbe6ef960 100644 Binary files a/src/main/resources/assets/create/textures/item/powdered_obsidian.png and b/src/main/resources/assets/create/textures/item/powdered_obsidian.png differ diff --git a/src/main/resources/assets/create/textures/item/propeller.png b/src/main/resources/assets/create/textures/item/propeller.png index af0d81d81..299b134f2 100644 Binary files a/src/main/resources/assets/create/textures/item/propeller.png and b/src/main/resources/assets/create/textures/item/propeller.png differ diff --git a/src/main/resources/assets/create/textures/item/property_filter.png b/src/main/resources/assets/create/textures/item/property_filter.png index dd99191d0..664a6210f 100644 Binary files a/src/main/resources/assets/create/textures/item/property_filter.png and b/src/main/resources/assets/create/textures/item/property_filter.png differ diff --git a/src/main/resources/assets/create/textures/item/red_sand_paper.png b/src/main/resources/assets/create/textures/item/red_sand_paper.png index f3d3dfeb3..875987385 100644 Binary files a/src/main/resources/assets/create/textures/item/red_sand_paper.png and b/src/main/resources/assets/create/textures/item/red_sand_paper.png differ diff --git a/src/main/resources/assets/create/textures/item/refined_radiance.png b/src/main/resources/assets/create/textures/item/refined_radiance.png index 2dba5b0bf..8781918cb 100644 Binary files a/src/main/resources/assets/create/textures/item/refined_radiance.png and b/src/main/resources/assets/create/textures/item/refined_radiance.png differ diff --git a/src/main/resources/assets/create/textures/item/rose_quartz.png b/src/main/resources/assets/create/textures/item/rose_quartz.png index a4daf8102..91f0a879e 100644 Binary files a/src/main/resources/assets/create/textures/item/rose_quartz.png and b/src/main/resources/assets/create/textures/item/rose_quartz.png differ diff --git a/src/main/resources/assets/create/textures/item/sand_paper.png b/src/main/resources/assets/create/textures/item/sand_paper.png index 97e3f393d..b0ffa93ef 100644 Binary files a/src/main/resources/assets/create/textures/item/sand_paper.png and b/src/main/resources/assets/create/textures/item/sand_paper.png differ diff --git a/src/main/resources/assets/create/textures/item/schematic.png b/src/main/resources/assets/create/textures/item/schematic.png index 584a0e263..2268a5565 100644 Binary files a/src/main/resources/assets/create/textures/item/schematic.png and b/src/main/resources/assets/create/textures/item/schematic.png differ diff --git a/src/main/resources/assets/create/textures/item/schematic_and_quill.png b/src/main/resources/assets/create/textures/item/schematic_and_quill.png index dfa8d360e..c7031213a 100644 Binary files a/src/main/resources/assets/create/textures/item/schematic_and_quill.png and b/src/main/resources/assets/create/textures/item/schematic_and_quill.png differ diff --git a/src/main/resources/assets/create/textures/item/shadow_steel.png b/src/main/resources/assets/create/textures/item/shadow_steel.png index af2575c77..32de3d947 100644 Binary files a/src/main/resources/assets/create/textures/item/shadow_steel.png and b/src/main/resources/assets/create/textures/item/shadow_steel.png differ diff --git a/src/main/resources/assets/create/textures/item/super_glue.png b/src/main/resources/assets/create/textures/item/super_glue.png index b86066bd5..34b04b16f 100644 Binary files a/src/main/resources/assets/create/textures/item/super_glue.png and b/src/main/resources/assets/create/textures/item/super_glue.png differ diff --git a/src/main/resources/assets/create/textures/item/sweet_roll.png b/src/main/resources/assets/create/textures/item/sweet_roll.png index 7fdf41754..03b7c602d 100644 Binary files a/src/main/resources/assets/create/textures/item/sweet_roll.png and b/src/main/resources/assets/create/textures/item/sweet_roll.png differ diff --git a/src/main/resources/assets/create/textures/item/tree_fertilizer.png b/src/main/resources/assets/create/textures/item/tree_fertilizer.png index 98d2f982a..385bb63ec 100644 Binary files a/src/main/resources/assets/create/textures/item/tree_fertilizer.png and b/src/main/resources/assets/create/textures/item/tree_fertilizer.png differ diff --git a/src/main/resources/assets/create/textures/item/wheat_flour.png b/src/main/resources/assets/create/textures/item/wheat_flour.png index 4656b37e5..a07f5829e 100644 Binary files a/src/main/resources/assets/create/textures/item/wheat_flour.png and b/src/main/resources/assets/create/textures/item/wheat_flour.png differ diff --git a/src/main/resources/assets/create/textures/item/whisk.png b/src/main/resources/assets/create/textures/item/whisk.png index 21942753f..44c6450ef 100644 Binary files a/src/main/resources/assets/create/textures/item/whisk.png and b/src/main/resources/assets/create/textures/item/whisk.png differ diff --git a/src/main/resources/assets/create/textures/item/wrench.png b/src/main/resources/assets/create/textures/item/wrench.png index ea2724cb5..4cb508338 100644 Binary files a/src/main/resources/assets/create/textures/item/wrench.png and b/src/main/resources/assets/create/textures/item/wrench.png differ diff --git a/src/main/resources/assets/create/textures/item/zinc_ingot.png b/src/main/resources/assets/create/textures/item/zinc_ingot.png index a74549d58..eb4bbf545 100644 Binary files a/src/main/resources/assets/create/textures/item/zinc_ingot.png and b/src/main/resources/assets/create/textures/item/zinc_ingot.png differ diff --git a/src/main/resources/assets/create/textures/item/zinc_nugget.png b/src/main/resources/assets/create/textures/item/zinc_nugget.png index 1470f83fe..9ff45b245 100644 Binary files a/src/main/resources/assets/create/textures/item/zinc_nugget.png and b/src/main/resources/assets/create/textures/item/zinc_nugget.png differ diff --git a/src/main/resources/assets/create/textures/models/armor/copper.png b/src/main/resources/assets/create/textures/models/armor/copper.png new file mode 100644 index 000000000..9bf29bb38 Binary files /dev/null and b/src/main/resources/assets/create/textures/models/armor/copper.png differ diff --git a/src/main/resources/assets/create/textures/ponder/chapter/basic_kinetics.png b/src/main/resources/assets/create/textures/ponder/chapter/basic_kinetics.png index da70cc75a..baa64b466 100644 Binary files a/src/main/resources/assets/create/textures/ponder/chapter/basic_kinetics.png and b/src/main/resources/assets/create/textures/ponder/chapter/basic_kinetics.png differ diff --git a/src/main/resources/assets/create/textures/ponder/tag/item_transfer.png b/src/main/resources/assets/create/textures/ponder/tag/item_transfer.png index da70cc75a..baa64b466 100644 Binary files a/src/main/resources/assets/create/textures/ponder/tag/item_transfer.png and b/src/main/resources/assets/create/textures/ponder/tag/item_transfer.png differ diff --git a/src/main/resources/assets/create/textures/special/blank.png b/src/main/resources/assets/create/textures/special/blank.png index 58ef6694a..64386eb44 100644 Binary files a/src/main/resources/assets/create/textures/special/blank.png and b/src/main/resources/assets/create/textures/special/blank.png differ diff --git a/src/main/resources/assets/create/textures/special/checkerboard.png b/src/main/resources/assets/create/textures/special/checkerboard.png index b087558be..f3635467c 100644 Binary files a/src/main/resources/assets/create/textures/special/checkerboard.png and b/src/main/resources/assets/create/textures/special/checkerboard.png differ diff --git a/src/main/resources/assets/create/textures/special/cutout_checkerboard.png b/src/main/resources/assets/create/textures/special/cutout_checkerboard.png index a8e187662..ecddf7fbe 100644 Binary files a/src/main/resources/assets/create/textures/special/cutout_checkerboard.png and b/src/main/resources/assets/create/textures/special/cutout_checkerboard.png differ diff --git a/src/main/resources/assets/create/textures/special/highlighted_checkerboard.png b/src/main/resources/assets/create/textures/special/highlighted_checkerboard.png index f6d7f2376..5d82930c6 100644 Binary files a/src/main/resources/assets/create/textures/special/highlighted_checkerboard.png and b/src/main/resources/assets/create/textures/special/highlighted_checkerboard.png differ diff --git a/src/main/resources/assets/create/textures/special/selection.png b/src/main/resources/assets/create/textures/special/selection.png index 4bdb5567e..4e4fc1496 100644 Binary files a/src/main/resources/assets/create/textures/special/selection.png and b/src/main/resources/assets/create/textures/special/selection.png differ diff --git a/src/main/resources/assets/create/textures/special/thin_checkerboard.png b/src/main/resources/assets/create/textures/special/thin_checkerboard.png index bb8b1c81c..cdddb75f2 100644 Binary files a/src/main/resources/assets/create/textures/special/thin_checkerboard.png and b/src/main/resources/assets/create/textures/special/thin_checkerboard.png differ diff --git a/src/main/resources/create.mixins.json b/src/main/resources/create.mixins.json index c6a6b7881..11a1c034f 100644 --- a/src/main/resources/create.mixins.json +++ b/src/main/resources/create.mixins.json @@ -1,25 +1,32 @@ { - "required": true, - "priority": 1100, - "package": "com.simibubi.create.foundation.mixin", - "compatibilityLevel": "JAVA_8", - "refmap": "create.refmap.json", - "client": [ - "BreakProgressMixin", - "ChromaticProjectorHooksMixin", - "EntityContraptionInteractionMixin", - "flywheel.CancelTileEntityRenderMixin", - "flywheel.FogColorTrackerMixin", - "flywheel.RenderHooksMixin", - "flywheel.ShaderCloseMixin", - "flywheel.StoreProjectionMatrixMixin", - "flywheel.TileRemoveMixin", - "flywheel.TileWorldHookMixin", - "flywheel.light.LightUpdateMixin", - "flywheel.light.NetworkLightUpdateMixin" - ], - "injectors": { - "defaultRequire": 1 - }, - "minVersion": "0.8" + "required": true, + "priority": 1100, + "package": "com.simibubi.create.foundation.mixin", + "compatibilityLevel": "JAVA_8", + "refmap": "create.refmap.json", + "mixins": [ + ], + "client": [ + "EntityContraptionInteractionMixin", + "FixNormalScalingMixin", + "HeavyBootsOnPlayerMixin", + "WindowResizeMixin", + "ModelDataRefreshMixin", + "BreakProgressMixin", + "ChromaticProjectorHooksMixin", + "EntityContraptionInteractionMixin", + "flywheel.CancelTileEntityRenderMixin", + "flywheel.FogColorTrackerMixin", + "flywheel.RenderHooksMixin", + "flywheel.ShaderCloseMixin", + "flywheel.StoreProjectionMatrixMixin", + "flywheel.TileRemoveMixin", + "flywheel.TileWorldHookMixin", + "flywheel.light.LightUpdateMixin", + "flywheel.light.NetworkLightUpdateMixin" + ], + "injectors": { + "defaultRequire": 1 + }, + "minVersion": "0.8" }