From d34bfe6a8d4101297849e125dd986b7c444f1864 Mon Sep 17 00:00:00 2001 From: millennIumAMbiguity <37588844+millennIumAMbiguity@users.noreply.github.com> Date: Tue, 8 Oct 2024 17:15:22 +0200 Subject: [PATCH] Use block tag for assemble blacklist (#413) * Use block tag for assemble blacklist resolves #369 * removed duplicate bedrock * re-added blockBlacklist config * Update ShipHelmBlockEntity.kt --- .../org/valkyrienskies/eureka/EurekaConfig.kt | 103 +----------------- .../eureka/blockentity/ShipHelmBlockEntity.kt | 12 +- .../tags/blocks/assemble_blacklist.json | 64 +++++++++++ 3 files changed, 80 insertions(+), 99 deletions(-) create mode 100644 common/src/main/resources/data/vs_eureka/tags/blocks/assemble_blacklist.json diff --git a/common/src/main/kotlin/org/valkyrienskies/eureka/EurekaConfig.kt b/common/src/main/kotlin/org/valkyrienskies/eureka/EurekaConfig.kt index 1c39f18e..c0dd49ff 100644 --- a/common/src/main/kotlin/org/valkyrienskies/eureka/EurekaConfig.kt +++ b/common/src/main/kotlin/org/valkyrienskies/eureka/EurekaConfig.kt @@ -151,104 +151,6 @@ object EurekaConfig { @JsonSchema(description = "Chance for popped balloons to pop adjacent balloons, per side") var popSideBalloonChance = 0.3 - // Blacklist of blocks that don't get added for ship building - @JsonSchema(description = "Blacklist of blocks that don't get assembled") - var blockBlacklist = setOf( - "vs_eureka:ship_helm", - "minecraft:dirt", - "minecraft:grass_block", - "minecraft:grass_path", - "minecraft:stone", - "minecraft:bedrock", - "minecraft:sand", - "minecraft:gravel", - "minecraft:water", - "minecraft:flowing_water", - "minecraft:lava", - "minecraft:flowing_lava", - "minecraft:lily_pad", - "minecraft:coarse_dirt", - "minecraft:podzol", - "minecraft:granite", - "minecraft:diorite", - "minecraft:andesite", - "minecraft:deepslate", - "minecraft:tuff", - "minecraft:crimson_nylium", - "minecraft:warped_nylium", - "minecraft:red_sand", - "minecraft:sandstone", - "minecraft:end_stone", - "minecraft:red_sandstone", - "minecraft:blackstone", - "minecraft:netherrack", - "minecraft:soul_sand", - "minecraft:soul_soil", - "minecraft:grass", - "minecraft:fern", - "minecraft:dead_bush", - "minecraft:seagrass", - "minecraft:tall_seagrass", - "minecraft:sea_pickle", - "minecraft:kelp", - "minecraft:bamboo", - "minecraft:dandelion", - "minecraft:poppy", - "minecraft:blue_orchid", - "minecraft:allium", - "minecraft:azure_bluet", - "minecraft:red_tulip", - "minecraft:orange_tulip", - "minecraft:white_tulip", - "minecraft:pink_tulip", - "minecraft:oxeye_daisy", - "minecraft:cornflower", - "minecraft:lily_of_the_valley", - "minecraft:brown_mushroom", - "minecraft:red_mushroom", - "minecraft:crimson_fungus", - "minecraft:warped_fungus", - "minecraft:crimson_roots", - "minecraft:warped_roots", - "minecraft:nether_sprouts", - "minecraft:weeping_vines", - "minecraft:twisting_vines", - "minecraft:chorus_plant", - "minecraft:chorus_flower", - "minecraft:snow", - "minecraft:snow_block", - "minecraft:cactus", - "minecraft:vine", - "minecraft:sunflower", - "minecraft:lilac", - "minecraft:rose_bush", - "minecraft:peony", - "minecraft:tall_grass", - "minecraft:large_fern", - "minecraft:air", - "minecraft:ice", - "minecraft:packed_ice", - "minecraft:blue_ice", - "minecraft:portal", - "minecraft:bedrock", - "minecraft:end_portal_frame", - "minecraft:end_portal", - "minecraft:end_gateway", - "minecraft:portal", - "minecraft:oak_sapling", - "minecraft:spruce_sapling", - "minecraft:birch_sapling", - "minecraft:jungle_sapling", - "minecraft:acacia_sapling", - "minecraft:dark_oak_sapling", - "minecraft:oak_leaves", - "minecraft:spruce_leaves", - "minecraft:birch_leaves", - "minecraft:jungle_leaves", - "minecraft:acacia_leaves", - "minecraft:dark_oak_leaves" - ) - @JsonSchema(description = "Whether the ship helm assembles diagonally connected blocks or not") val diagonals = true @@ -263,5 +165,10 @@ object EurekaConfig { @JsonSchema(description = "Maximum number of blocks allowed in a ship. Set to 0 for no limit") val maxShipBlocks = 32 * 32 * 32 + + // TODO: Remove blockBlacklist + // Blacklist of blocks that don't get added for ship building + @JsonSchema(description = "Blacklist of blocks that don't get assembled (Use Block Tag instead)") + var blockBlacklist : Set = emptySet() } } diff --git a/common/src/main/kotlin/org/valkyrienskies/eureka/blockentity/ShipHelmBlockEntity.kt b/common/src/main/kotlin/org/valkyrienskies/eureka/blockentity/ShipHelmBlockEntity.kt index 78d169b0..ab698f08 100644 --- a/common/src/main/kotlin/org/valkyrienskies/eureka/blockentity/ShipHelmBlockEntity.kt +++ b/common/src/main/kotlin/org/valkyrienskies/eureka/blockentity/ShipHelmBlockEntity.kt @@ -8,11 +8,14 @@ import net.minecraft.core.Registry import net.minecraft.network.chat.Component import net.minecraft.network.chat.TextComponent import net.minecraft.network.chat.TranslatableComponent +import net.minecraft.resources.ResourceLocation import net.minecraft.server.level.ServerLevel +import net.minecraft.tags.TagKey import net.minecraft.world.MenuProvider import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player import net.minecraft.world.inventory.AbstractContainerMenu +import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.HorizontalDirectionalBlock import net.minecraft.world.level.block.StairBlock import net.minecraft.world.level.block.entity.BlockEntity @@ -26,6 +29,7 @@ import org.valkyrienskies.core.api.ships.getAttachment import org.valkyrienskies.core.impl.util.logger import org.valkyrienskies.eureka.EurekaBlockEntities import org.valkyrienskies.eureka.EurekaConfig +import org.valkyrienskies.eureka.EurekaMod import org.valkyrienskies.eureka.block.ShipHelmBlock import org.valkyrienskies.eureka.gui.shiphelm.ShipHelmScreenMenu import org.valkyrienskies.eureka.ship.EurekaShipControl @@ -36,6 +40,9 @@ import org.valkyrienskies.mod.common.getShipObjectManagingPos import org.valkyrienskies.mod.common.util.toDoubles import org.valkyrienskies.mod.common.util.toJOMLD +var ASSEMBLE_BLACKLIST: TagKey = + TagKey.create(Registry.BLOCK_REGISTRY, ResourceLocation(EurekaMod.MOD_ID, "assemble_blacklist")) + class ShipHelmBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(EurekaBlockEntities.SHIP_HELM.get(), pos, state), MenuProvider { @@ -125,7 +132,10 @@ class ShipHelmBlockEntity(pos: BlockPos, state: BlockState) : val builtShip = ShipAssembler.collectBlocks( level, blockPos - ) { !it.isAir && !EurekaConfig.SERVER.blockBlacklist.contains(Registry.BLOCK.getKey(it.block).toString()) } + ) { !it.isAir && !it.`is`(ASSEMBLE_BLACKLIST) && + // TODO: Remove blockBlacklist + !(EurekaConfig.SERVER.blockBlacklist.isNotEmpty() && EurekaConfig.SERVER.blockBlacklist.contains(Registry.BLOCK.getKey(it.block).toString())) + } if (builtShip == null) { player.sendMessage(TextComponent("Ship is too big! Max size is ${EurekaConfig.SERVER.maxShipBlocks} blocks (changeable in the config)"), Util.NIL_UUID) diff --git a/common/src/main/resources/data/vs_eureka/tags/blocks/assemble_blacklist.json b/common/src/main/resources/data/vs_eureka/tags/blocks/assemble_blacklist.json new file mode 100644 index 00000000..4355348b --- /dev/null +++ b/common/src/main/resources/data/vs_eureka/tags/blocks/assemble_blacklist.json @@ -0,0 +1,64 @@ +{ + "replace": false, + "values": [ + "#minecraft:base_stone_nether", + "#minecraft:base_stone_overworld", + "#minecraft:flowers", + "#minecraft:leaves", + "#minecraft:portals", + "#minecraft:replaceable_plants", + "#minecraft:saplings", + "#minecraft:snow", + "#minecraft:tall_flowers", + "minecraft:air", + "minecraft:bamboo", + "minecraft:bamboo_sapling", + "minecraft:bedrock", + "minecraft:big_dripleaf", + "minecraft:blue_ice", + "minecraft:brown_mushroom", + "minecraft:cactus", + "minecraft:chorus_flower", + "minecraft:chorus_plant", + "minecraft:clay", + "minecraft:coarse_dirt", + "minecraft:crimson_fungus", + "minecraft:crimson_nylium", + "minecraft:crimson_roots", + "minecraft:dirt", + "minecraft:dirt_path", + "minecraft:dripstone_block", + "minecraft:end_gateway", + "minecraft:end_portal_frame", + "minecraft:end_stone", + "minecraft:grass_block", + "minecraft:gravel", + "minecraft:ice", + "minecraft:kelp", + "minecraft:kelp_plant", + "minecraft:lava", + "minecraft:lily_pad", + "minecraft:mycelium", + "minecraft:nether_sprouts", + "minecraft:packed_ice", + "minecraft:podzol", + "minecraft:pointed_dripstone", + "minecraft:red_mushroom", + "minecraft:red_sand", + "minecraft:red_sandstone", + "minecraft:sand", + "minecraft:sandstone", + "minecraft:sea_pickle", + "minecraft:seagrass", + "minecraft:small_dripleaf", + "minecraft:soul_sand", + "minecraft:soul_soil", + "minecraft:tall_seagrass", + "minecraft:twisting_vines", + "minecraft:warped_fungus", + "minecraft:warped_nylium", + "minecraft:warped_roots", + "minecraft:water", + "minecraft:weeping_vines" + ] +}