diff --git a/common/src/main/generated/.cache/fc6fe7acca2b7156c3a9a1a4a9b4946c68c37823 b/common/src/main/generated/.cache/fc6fe7acca2b7156c3a9a1a4a9b4946c68c37823 index cb869c3a..385e1fe7 100644 --- a/common/src/main/generated/.cache/fc6fe7acca2b7156c3a9a1a4a9b4946c68c37823 +++ b/common/src/main/generated/.cache/fc6fe7acca2b7156c3a9a1a4a9b4946c68c37823 @@ -335,7 +335,7 @@ eb3231e38d98355d2d9d6b4f70a23640c59be3fa data/bingo/bingo/goals/medium/repair_ir 4ced38a0cbb9b940c05ceb90ad7ecfba9653bd57 data/bingo/bingo/goals/medium/saddle.json a5a42f8426786a5a41446f71355a6cbf89b0ce9a data/bingo/bingo/goals/medium/seagrass.json 64dd376fa3430106da3bf12aeed46f180e9bde48 data/bingo/bingo/goals/medium/shoot_tnt_minecart.json -206b153e2778a0b492014cdf46ed650bc1807a44 data/bingo/bingo/goals/medium/sized_nether_portal.json +584894e63428080db61e2e1ebf32b81462e35d16 data/bingo/bingo/goals/medium/sized_nether_portal.json 276fcc97154d33a17deb234edfb51bf10602a873 data/bingo/bingo/goals/medium/skeleton_bow.json 2d4b9e5d981599bdb4e3317cb9072900f1ec22e9 data/bingo/bingo/goals/medium/slime_ball.json d88c8a8084ddb721b9fae4ab63d5063d2e4b4abd data/bingo/bingo/goals/medium/slow_falling_potion.json diff --git a/common/src/main/generated/data/bingo/bingo/goals/medium/sized_nether_portal.json b/common/src/main/generated/data/bingo/bingo/goals/medium/sized_nether_portal.json index 429cca26..77268f94 100644 --- a/common/src/main/generated/data/bingo/bingo/goals/medium/sized_nether_portal.json +++ b/common/src/main/generated/data/bingo/bingo/goals/medium/sized_nether_portal.json @@ -75,17 +75,66 @@ }, "difficulty": "bingo:medium", "icon": { - "type": "bingo:block", - "block": { - "Name": "minecraft:nether_portal", - "Properties": { - "axis": "x" + "type": "bingo:cycle", + "icons": [ + { + "type": "bingo:block", + "block": { + "Name": "minecraft:nether_portal", + "Properties": { + "axis": "x" + } + }, + "item": { + "count": { + "bingo_type": "bingo:compound", + "factors": [ + { + "type": "bingo:sub", + "key": "width" + }, + { + "type": "bingo:sub", + "key": "height" + } + ], + "operator": "mul" + }, + "id": "minecraft:obsidian" + } + }, + { + "type": "bingo:block", + "block": { + "Name": "minecraft:obsidian" + }, + "item": { + "count": { + "bingo_type": "bingo:compound", + "factors": [ + { + "type": "bingo:sub", + "key": "width" + }, + { + "type": "bingo:sub", + "key": "width" + }, + { + "type": "bingo:sub", + "key": "height" + }, + { + "type": "bingo:sub", + "key": "height" + } + ], + "operator": "sum" + }, + "id": "minecraft:obsidian" + } } - }, - "item": { - "count": 1, - "id": "minecraft:obsidian" - } + ] }, "name": { "translate": "bingo.goal.sized_nether_portal", diff --git a/common/src/main/java/io/github/gaming32/bingo/data/BingoGoal.java b/common/src/main/java/io/github/gaming32/bingo/data/BingoGoal.java index 5dd05f84..48d4ed46 100644 --- a/common/src/main/java/io/github/gaming32/bingo/data/BingoGoal.java +++ b/common/src/main/java/io/github/gaming32/bingo/data/BingoGoal.java @@ -43,7 +43,6 @@ import net.minecraft.util.ExtraCodecs; import net.minecraft.util.RandomSource; import net.minecraft.util.profiling.ProfilerFiller; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; import org.jetbrains.annotations.NotNull; @@ -558,7 +557,7 @@ public Builder icon(Block icon, ItemLike fallback) { } public Builder icon(Block icon, ItemLike fallback, Consumer subber) { - return icon(new BlockIcon(icon.defaultBlockState(), new ItemStack(fallback)), subber); + return icon(BlockIcon.ofBlockAndItem(icon, fallback), subber); } public Builder icon(GoalIcon icon) { diff --git a/common/src/main/java/io/github/gaming32/bingo/data/icons/BlockIcon.java b/common/src/main/java/io/github/gaming32/bingo/data/icons/BlockIcon.java index 8ddb61c5..1ad197f6 100644 --- a/common/src/main/java/io/github/gaming32/bingo/data/icons/BlockIcon.java +++ b/common/src/main/java/io/github/gaming32/bingo/data/icons/BlockIcon.java @@ -4,6 +4,7 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; +import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; @@ -23,6 +24,10 @@ public static BlockIcon ofFallbackItem(BlockState block, Optional ite return new BlockIcon(block, item.orElseGet(() -> stackFromBlock(block.getBlock()))); } + public static BlockIcon ofBlockAndItem(Block block, ItemLike item) { + return new BlockIcon(block.defaultBlockState(), new ItemStack(item)); + } + public static BlockIcon ofBlock(BlockState block) { return new BlockIcon(block, stackFromBlock(block.getBlock())); } diff --git a/fabric/src/main/java/io/github/gaming32/bingo/fabric/datagen/goal/MediumGoalProvider.java b/fabric/src/main/java/io/github/gaming32/bingo/fabric/datagen/goal/MediumGoalProvider.java index 23d5c425..13a8bbf8 100644 --- a/fabric/src/main/java/io/github/gaming32/bingo/fabric/datagen/goal/MediumGoalProvider.java +++ b/fabric/src/main/java/io/github/gaming32/bingo/fabric/datagen/goal/MediumGoalProvider.java @@ -9,6 +9,7 @@ import io.github.gaming32.bingo.data.BingoDifficulties; import io.github.gaming32.bingo.data.BingoGoal; import io.github.gaming32.bingo.data.BingoTags; +import io.github.gaming32.bingo.data.icons.BlockIcon; import io.github.gaming32.bingo.data.icons.CycleIcon; import io.github.gaming32.bingo.data.icons.EntityIcon; import io.github.gaming32.bingo.data.icons.GoalIcon; @@ -315,7 +316,27 @@ public void addGoals() { Component.translatable("bingo.goal.sized_nether_portal", 0, 0), subber -> subber.sub("with.0", "width").sub("with.1", "height") ) - .icon(Blocks.NETHER_PORTAL, Blocks.OBSIDIAN)); + .icon( + new CycleIcon( + BlockIcon.ofBlockAndItem(Blocks.NETHER_PORTAL, Blocks.OBSIDIAN), + BlockIcon.ofBlock(Blocks.OBSIDIAN) + ), + subber -> subber + .sub("icons.0.item.count", new CompoundBingoSub( + CompoundBingoSub.ElementType.INT, + CompoundBingoSub.Operator.MUL, + new SubBingoSub("width"), + new SubBingoSub("height") + )) + .sub("icons.1.item.count", new CompoundBingoSub( + CompoundBingoSub.ElementType.INT, + CompoundBingoSub.Operator.SUM, + new SubBingoSub("width"), + new SubBingoSub("width"), + new SubBingoSub("height"), + new SubBingoSub("height") + )) + )); addGoal(obtainItemGoal(id("obsidian"), Items.OBSIDIAN, 3, 10)); addGoal(obtainItemGoal(id("iron_block"), Items.IRON_BLOCK, 5, 7) .infrequency(2));