From 801f5fa130b0b65491679efa3e50998e547d6b15 Mon Sep 17 00:00:00 2001 From: grimmauld Date: Thu, 8 Jul 2021 09:45:53 +0200 Subject: [PATCH] Filter for shulker fill level --- src/generated/resources/.cache/cache | 30 ++--- .../resources/assets/create/lang/en_us.json | 5 + .../assets/create/lang/unfinished/de_de.json | 7 +- .../assets/create/lang/unfinished/es_es.json | 7 +- .../assets/create/lang/unfinished/es_mx.json | 7 +- .../assets/create/lang/unfinished/fr_fr.json | 7 +- .../assets/create/lang/unfinished/it_it.json | 7 +- .../assets/create/lang/unfinished/ja_jp.json | 7 +- .../assets/create/lang/unfinished/ko_kr.json | 7 +- .../assets/create/lang/unfinished/nl_nl.json | 7 +- .../assets/create/lang/unfinished/pl_pl.json | 7 +- .../assets/create/lang/unfinished/pt_br.json | 7 +- .../assets/create/lang/unfinished/ru_ru.json | 7 +- .../assets/create/lang/unfinished/zh_cn.json | 7 +- .../assets/create/lang/unfinished/zh_tw.json | 7 +- .../data/create/advancements/aesthetics.json | 4 +- .../logistics/item/filter/ItemAttribute.java | 3 + .../attribute/ShulkerFillLevelAttribute.java | 109 ++++++++++++++++++ .../assets/create/lang/default/messages.json | 8 +- 19 files changed, 219 insertions(+), 31 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ShulkerFillLevelAttribute.java diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 487ff2435..2b427ad1d 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -426,20 +426,20 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json e1d3c02695cbd2ee7bbede97f72941835634a3a5 assets/create/lang/en_ud.json -3e74ffe81510f420f5f1821808291c0539a14c13 assets/create/lang/en_us.json -82571338ff8edf812ae01f0a5d45c58718374469 assets/create/lang/unfinished/de_de.json -6cf3dd48a1708deedbb7ed1029616d932094aa93 assets/create/lang/unfinished/es_es.json -a6a3d443ff8ef03952f3e1843a88c91349f52680 assets/create/lang/unfinished/es_mx.json -c5fff5dee93fcb5eb5576bdf0598139e11b91e5c assets/create/lang/unfinished/fr_fr.json -1647117134ac3fcda2110abe13504d3699135f9c assets/create/lang/unfinished/it_it.json -ed0fd66cfa74b2390f127262242c8385fb699d72 assets/create/lang/unfinished/ja_jp.json -f0b83a1f5377c07e6a3beaa40d13ffe34ae4a269 assets/create/lang/unfinished/ko_kr.json -8e2ba058fa004c86d48c869232b85a6a1cdfa7f9 assets/create/lang/unfinished/nl_nl.json -0d99e0a375d6d1cf5f00ab48e090f4472fff94ad assets/create/lang/unfinished/pl_pl.json -2d1882cf35f0e09d9e820bd408183d902ed64b50 assets/create/lang/unfinished/pt_br.json -295b171018e6f8c2c488f109f4b080d9019e2ae2 assets/create/lang/unfinished/ru_ru.json -5f238e588fc997b23cb332fb9a0c3594d6cbfaaf assets/create/lang/unfinished/zh_cn.json -274a919cbefb9e83213e579dbc8cc0c507f65df8 assets/create/lang/unfinished/zh_tw.json +ae6c1882c3049b20409f233d7984fdb6498e1cec assets/create/lang/en_us.json +4d1f84c2fe9d6ed58d9ce555f09b408c3a2d5349 assets/create/lang/unfinished/de_de.json +3fa0debc2eff551c3cbbdf917766e835f803d467 assets/create/lang/unfinished/es_es.json +6f0034ff2b0a4dc2ef1c390aa76a88e325e17159 assets/create/lang/unfinished/es_mx.json +a8bf7fa74b00f2ce89d3687e5cee17607f18fa5f assets/create/lang/unfinished/fr_fr.json +7633b95d4e27ca0edd77f2d88fcc90e279e09edf assets/create/lang/unfinished/it_it.json +423b5f8f07b0ca5825c038859f9b506a28982659 assets/create/lang/unfinished/ja_jp.json +20f19b6699ab131e64b73283f1a5dfd4e3d47bb8 assets/create/lang/unfinished/ko_kr.json +34435d8e73e3b06095b6dbb77f133e9695c9e39c assets/create/lang/unfinished/nl_nl.json +f8aafddf029b41c3ad46ed81ff2ccd5289ef2a65 assets/create/lang/unfinished/pl_pl.json +7f2cf06e9e33f14ca61fd4632df7adfa02b33311 assets/create/lang/unfinished/pt_br.json +9f44fe3b87225017fd7975ee8fd5e4ff309e6296 assets/create/lang/unfinished/ru_ru.json +a99c3e9642cc1748a30e011e0651f89e206175a0 assets/create/lang/unfinished/zh_cn.json +79d2ba1dee4c4d677dd9e99878a522bfb575c3f4 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 @@ -1699,7 +1699,7 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json bbe7fc4aef29420319f59d02d4cd376a78244e70 assets/create/sounds.json -5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json +0f1b4b980afba9bf2caf583b88e261bba8b10313 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 diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index a597e594b..ed2b1303c 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -1064,6 +1064,11 @@ "create.item_attributes.in_item_group.inverted": "is not in group '%1$s'", "create.item_attributes.added_by": "was added by %1$s", "create.item_attributes.added_by.inverted": "was not added by %1$s", + "create.item_attributes.shulker_level": "is shulker %1$s", + "create.item_attributes.shulker_level.inverted": "is shulker not %1$s", + "create.item_attributes.shulker_level.full": "full", + "create.item_attributes.shulker_level.empty": "empty", + "create.item_attributes.shulker_level.partial": "partially filled", "create.item_attributes.has_enchant": "is enchanted with %1$s", "create.item_attributes.has_enchant.inverted": "is not enchanted with %1$s", "create.item_attributes.color": "is dyed %1$s", 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 b143ebadf..7b24da461 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: 1119", + "_": "Missing Localizations: 1124", "_": "->------------------------] Game Elements [------------------------<-", @@ -1065,6 +1065,11 @@ "create.item_attributes.in_item_group.inverted": "UNLOCALIZED: is not in group '%1$s'", "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", "create.item_attributes.added_by.inverted": "UNLOCALIZED: was not added by %1$s", + "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", + "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", + "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", + "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", + "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", "create.item_attributes.has_enchant": "UNLOCALIZED: is enchanted with %1$s", "create.item_attributes.has_enchant.inverted": "UNLOCALIZED: is not enchanted with %1$s", "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", 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 21074e3b5..f6e95345b 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: 42", + "_": "Missing Localizations: 47", "_": "->------------------------] Game Elements [------------------------<-", @@ -1065,6 +1065,11 @@ "create.item_attributes.in_item_group.inverted": "no está en el grupo '%1$s'", "create.item_attributes.added_by": "fue añadido por %1$s", "create.item_attributes.added_by.inverted": "no fue añadida por %1$s", + "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", + "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", + "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", + "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", + "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", "create.item_attributes.has_enchant": "está encantado con %1$s", "create.item_attributes.has_enchant.inverted": "no está encantado con %1$s", "create.item_attributes.color": "Está teñido %1$s", 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 971203175..6204bb650 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: 1486", + "_": "Missing Localizations: 1491", "_": "->------------------------] Game Elements [------------------------<-", @@ -1065,6 +1065,11 @@ "create.item_attributes.in_item_group.inverted": "UNLOCALIZED: is not in group '%1$s'", "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", "create.item_attributes.added_by.inverted": "UNLOCALIZED: was not added by %1$s", + "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", + "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", + "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", + "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", + "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", "create.item_attributes.has_enchant": "UNLOCALIZED: is enchanted with %1$s", "create.item_attributes.has_enchant.inverted": "UNLOCALIZED: is not enchanted with %1$s", "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", 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 94e8e3196..607b17dea 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: 1371", + "_": "Missing Localizations: 1376", "_": "->------------------------] Game Elements [------------------------<-", @@ -1065,6 +1065,11 @@ "create.item_attributes.in_item_group.inverted": "n'appartient pas à %1$s'", "create.item_attributes.added_by": "a été ajouté par %1$s", "create.item_attributes.added_by.inverted": "n'a pas été ajouté par %1$s", + "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", + "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", + "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", + "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", + "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", "create.item_attributes.has_enchant": "est enchanté %1$s", "create.item_attributes.has_enchant.inverted": "n'est pas enchenté %1$s", "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", 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 b305be2b8..2cd984e28 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: 899", + "_": "Missing Localizations: 904", "_": "->------------------------] Game Elements [------------------------<-", @@ -1065,6 +1065,11 @@ "create.item_attributes.in_item_group.inverted": "non appartiene a '%1$s'", "create.item_attributes.added_by": "è stato aggiunto da %1$s", "create.item_attributes.added_by.inverted": "non è stato aggiunto da %1$s", + "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", + "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", + "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", + "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", + "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", "create.item_attributes.has_enchant": "è stato incantato con %1$s", "create.item_attributes.has_enchant.inverted": "non è stato incantato con %1$s", "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", 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 ff6ee296d..b088a2f33 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: 31", + "_": "Missing Localizations: 36", "_": "->------------------------] Game Elements [------------------------<-", @@ -1065,6 +1065,11 @@ "create.item_attributes.in_item_group.inverted": "%1$sに属していないか", "create.item_attributes.added_by": "%1$sによって追加されたか", "create.item_attributes.added_by.inverted": "%1$sによって追加されていないか", + "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", + "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", + "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", + "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", + "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", "create.item_attributes.has_enchant": "エンチャントされているか%1$s", "create.item_attributes.has_enchant.inverted": "エンチャントがされていないか", "create.item_attributes.color": "%1$sで染められているか", 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 849b7d5d0..7a9525b05 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: 277", + "_": "Missing Localizations: 282", "_": "->------------------------] Game Elements [------------------------<-", @@ -1065,6 +1065,11 @@ "create.item_attributes.in_item_group.inverted": "'%1$s' 그룹에 속해 있지 않은", "create.item_attributes.added_by": "%1$s에 의해 추가된", "create.item_attributes.added_by.inverted": "%1$s에 의해 추가되지 않은", + "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", + "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", + "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", + "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", + "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", "create.item_attributes.has_enchant": "%1$s 마법이 부여된", "create.item_attributes.has_enchant.inverted": "%1$s 마법이 부여되지 않은", "create.item_attributes.color": "염색된 %1$s", 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 b2204fd12..6e720b683 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: 1752", + "_": "Missing Localizations: 1757", "_": "->------------------------] Game Elements [------------------------<-", @@ -1065,6 +1065,11 @@ "create.item_attributes.in_item_group.inverted": "UNLOCALIZED: is not in group '%1$s'", "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", "create.item_attributes.added_by.inverted": "UNLOCALIZED: was not added by %1$s", + "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", + "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", + "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", + "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", + "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", "create.item_attributes.has_enchant": "UNLOCALIZED: is enchanted with %1$s", "create.item_attributes.has_enchant.inverted": "UNLOCALIZED: is not enchanted with %1$s", "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", 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 8d16ccfee..ac7b2ab5f 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: 241", + "_": "Missing Localizations: 246", "_": "->------------------------] Game Elements [------------------------<-", @@ -1065,6 +1065,11 @@ "create.item_attributes.in_item_group.inverted": "nie jest w grupie \"%1$s\"", "create.item_attributes.added_by": "dodany przez %1$s", "create.item_attributes.added_by.inverted": "niedodany przez %1$s", + "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", + "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", + "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", + "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", + "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", "create.item_attributes.has_enchant": "posiada zaklęcie %1$s", "create.item_attributes.has_enchant.inverted": "nie posiada zaklęcia %1$s", "create.item_attributes.color": "jest zafarbowane, kolor %1$s", 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 6163cba3a..922fc02fa 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: 1793", + "_": "Missing Localizations: 1798", "_": "->------------------------] Game Elements [------------------------<-", @@ -1065,6 +1065,11 @@ "create.item_attributes.in_item_group.inverted": "UNLOCALIZED: is not in group '%1$s'", "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", "create.item_attributes.added_by.inverted": "UNLOCALIZED: was not added by %1$s", + "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", + "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", + "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", + "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", + "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", "create.item_attributes.has_enchant": "UNLOCALIZED: is enchanted with %1$s", "create.item_attributes.has_enchant.inverted": "UNLOCALIZED: is not enchanted with %1$s", "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", 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 8a6c396f5..be732ba5f 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: 272", + "_": "Missing Localizations: 277", "_": "->------------------------] Game Elements [------------------------<-", @@ -1065,6 +1065,11 @@ "create.item_attributes.in_item_group.inverted": "не принадлежит '%1$s'", "create.item_attributes.added_by": "был добавлен %1$s", "create.item_attributes.added_by.inverted": "не был добавлен %1$s", + "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", + "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", + "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", + "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", + "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", "create.item_attributes.has_enchant": "зачарован на %1$s", "create.item_attributes.has_enchant.inverted": "не зачарован на %1$s", "create.item_attributes.color": "Покрашено в %1$s", 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 d7b417dfc..0c4e333d2 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: 282", + "_": "Missing Localizations: 287", "_": "->------------------------] Game Elements [------------------------<-", @@ -1065,6 +1065,11 @@ "create.item_attributes.in_item_group.inverted": "不属于%1$s", "create.item_attributes.added_by": "由%1$s添加", "create.item_attributes.added_by.inverted": "不是由%1$s添加", + "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", + "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", + "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", + "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", + "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", "create.item_attributes.has_enchant": "有附魔效果%1$s", "create.item_attributes.has_enchant.inverted": "没有附魔效果%1$s", "create.item_attributes.color": "染色为%1$s", 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 8724d55b5..8ae83ff3c 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: 277", + "_": "Missing Localizations: 282", "_": "->------------------------] Game Elements [------------------------<-", @@ -1065,6 +1065,11 @@ "create.item_attributes.in_item_group.inverted": "不屬於%1$s", "create.item_attributes.added_by": "由%1$s添加", "create.item_attributes.added_by.inverted": "不是由%1$s添加", + "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", + "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", + "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", + "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", + "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", "create.item_attributes.has_enchant": "有附魔效果%1$s", "create.item_attributes.has_enchant.inverted": "沒有附魔效果%1$s", "create.item_attributes.color": "已被染色成 %1$s", diff --git a/src/generated/resources/data/create/advancements/aesthetics.json b/src/generated/resources/data/create/advancements/aesthetics.json index 59a86f429..d723cbe38 100644 --- a/src/generated/resources/data/create/advancements/aesthetics.json +++ b/src/generated/resources/data/create/advancements/aesthetics.json @@ -28,8 +28,8 @@ "trigger": "create:bracket_apply", "conditions": { "accepted_entries": [ - "create:large_cogwheel", - "create:cogwheel" + "create:cogwheel", + "create:large_cogwheel" ] } }, diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java index 4f79b0eee..967896313 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java @@ -9,6 +9,8 @@ import java.util.function.BiPredicate; import java.util.function.Predicate; import java.util.stream.Collectors; +import com.simibubi.create.content.logistics.item.filter.attribute.ShulkerFillLevelAttribute; + import org.apache.commons.lang3.StringUtils; import com.simibubi.create.AllRecipeTypes; @@ -56,6 +58,7 @@ public interface ItemAttribute { static ItemAttribute inItemGroup = register(new InItemGroup(ItemGroup.MISC)); static ItemAttribute addedBy = register(new InItemGroup.AddedBy("dummy")); static ItemAttribute hasEnchant = register(EnchantAttribute.EMPTY); + static ItemAttribute shulkerFillLevel = register(ShulkerFillLevelAttribute.EMPTY); static ItemAttribute hasColor = register(ColorAttribute.EMPTY); static ItemAttribute hasFluid = register(FluidContentsAttribute.EMPTY); static ItemAttribute hasName = register(new ItemNameAttribute("dummy")); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ShulkerFillLevelAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ShulkerFillLevelAttribute.java new file mode 100644 index 000000000..14cf79a44 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ShulkerFillLevelAttribute.java @@ -0,0 +1,109 @@ +package com.simibubi.create.content.logistics.item.filter.attribute; + +import java.util.Arrays; +import java.util.List; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +import javax.annotation.Nullable; + +import com.simibubi.create.content.logistics.item.filter.ItemAttribute; +import com.simibubi.create.foundation.utility.Lang; + +import net.minecraft.block.Block; +import net.minecraft.block.ShulkerBoxBlock; +import net.minecraft.inventory.ItemStackHelper; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.NonNullList; + +public class ShulkerFillLevelAttribute implements ItemAttribute { + public static final ShulkerFillLevelAttribute EMPTY = new ShulkerFillLevelAttribute(null); + + private final ShulkerLevels levels; + + public ShulkerFillLevelAttribute(ShulkerLevels levels) { + this.levels = levels; + } + + @Override + public boolean appliesTo(ItemStack stack) { + return levels != null && levels.canApply(stack); + } + + @Override + public List listAttributesOf(ItemStack stack) { + return Arrays.stream(ShulkerLevels.values()) + .filter(shulkerLevels -> shulkerLevels.canApply(stack)) + .map(ShulkerFillLevelAttribute::new) + .collect(Collectors.toList()); + } + + @Override + public String getTranslationKey() { + return "shulker_level"; + } + + @Override + public Object[] getTranslationParameters() { + String parameter = ""; + if (levels != null) + parameter = Lang.translate("item_attributes." + getTranslationKey() + "." + levels.key).getString(); + return new Object[]{parameter}; + } + + @Override + public void writeNBT(CompoundNBT nbt) { + if (levels != null) + nbt.putString("id", levels.key); + } + + @Override + public ItemAttribute readNBT(CompoundNBT nbt) { + return nbt.contains("id") ? new ShulkerFillLevelAttribute(ShulkerLevels.fromKey(nbt.getString("id"))) : EMPTY; + } + + enum ShulkerLevels { + EMPTY("empty", amount -> amount == 0), + PARTIAL("partial", amount -> amount > 0 && amount < Integer.MAX_VALUE), + FULL("full", amount -> amount == Integer.MAX_VALUE); + + private final Predicate requiredSize; + private final String key; + + ShulkerLevels(String key, Predicate requiredSize) { + this.key = key; + this.requiredSize = requiredSize; + } + + @Nullable + public static ShulkerLevels fromKey(String key) { + return Arrays.stream(values()).filter(shulkerLevels -> shulkerLevels.key.equals(key)).findFirst().orElse(null); + } + + private static boolean isShulker(ItemStack stack) { + return Block.getBlockFromItem(stack.getItem()) instanceof ShulkerBoxBlock; + } + + public boolean canApply(ItemStack testStack) { + if (!isShulker(testStack)) + return false; + CompoundNBT compoundnbt = testStack.getChildTag("BlockEntityTag"); + if (compoundnbt == null) + return requiredSize.test(0); + if (compoundnbt.contains("LootTable", 8)) + return false; + if (compoundnbt.contains("Items", 9)) { + int rawSize = compoundnbt.getList("Items", 10).size(); + if (rawSize < 27) + return requiredSize.test(rawSize); + + NonNullList inventory = NonNullList.withSize(27, ItemStack.EMPTY); + ItemStackHelper.loadAllItems(compoundnbt, inventory); + boolean isFull = inventory.stream().allMatch(itemStack -> !itemStack.isEmpty() && itemStack.getCount() == itemStack.getMaxStackSize()); + return requiredSize.test(isFull ? Integer.MAX_VALUE : rawSize); + } + return requiredSize.test(0); + } + } +} diff --git a/src/main/resources/assets/create/lang/default/messages.json b/src/main/resources/assets/create/lang/default/messages.json index 4fc54ecfd..29239e841 100644 --- a/src/main/resources/assets/create/lang/default/messages.json +++ b/src/main/resources/assets/create/lang/default/messages.json @@ -391,6 +391,12 @@ "create.item_attributes.added_by": "was added by %1$s", "create.item_attributes.added_by.inverted": "was not added by %1$s", + "create.item_attributes.shulker_level": "is shulker %1$s", + "create.item_attributes.shulker_level.inverted": "is shulker not %1$s", + "create.item_attributes.shulker_level.full": "full", + "create.item_attributes.shulker_level.empty": "empty", + "create.item_attributes.shulker_level.partial": "partially filled", + "create.item_attributes.has_enchant": "is enchanted with %1$s", "create.item_attributes.has_enchant.inverted": "is not enchanted with %1$s", "create.item_attributes.color": "is dyed %1$s", @@ -504,7 +510,7 @@ "create.crafting_blueprint.manually_assigned": "Manually assigned", "create.crafting_blueprint.secondary_display_slot": "Secondary Display Slot", "create.crafting_blueprint.optional": "Optional", - + "create.potato_cannon.ammo.attack_damage": "%1$s Attack Damage", "create.potato_cannon.ammo.reload_ticks": "%1$s Reload Ticks", "create.potato_cannon.ammo.knockback": "%1$s Knockback",