diff --git a/src/main/java/org/betterx/betterend/registry/EndItems.java b/src/main/java/org/betterx/betterend/registry/EndItems.java index 364a5666..9187160f 100644 --- a/src/main/java/org/betterx/betterend/registry/EndItems.java +++ b/src/main/java/org/betterx/betterend/registry/EndItems.java @@ -10,6 +10,7 @@ import org.betterx.bclib.items.tool.BaseShovelItem; import org.betterx.bclib.items.tool.BaseSwordItem; import org.betterx.bclib.registry.BaseRegistry; import org.betterx.bclib.registry.ItemRegistry; +import org.betterx.bclib.util.BlocksHelper; import org.betterx.betterend.BetterEnd; import org.betterx.betterend.config.Configs; import org.betterx.betterend.item.*; @@ -21,7 +22,9 @@ import org.betterx.betterend.world.structures.village.VillagePools; import org.betterx.datagen.betterend.recipes.EndChestLootTableProvider; import net.minecraft.core.Holder; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.InteractionResult; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.EntityType; @@ -29,6 +32,8 @@ import net.minecraft.world.entity.Mob; import net.minecraft.world.food.FoodProperties; import net.minecraft.world.food.Foods; import net.minecraft.world.item.*; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.StructureBlockEntity; import java.util.List; import org.jetbrains.annotations.ApiStatus; @@ -425,6 +430,37 @@ public class EndItems { Items.LANTERN ) ); + + registerEndItem( + "debug/fill_base_void", + new DebugDataItem((player, entity, useOnContext) -> { + if (entity instanceof StructureBlockEntity e) { + final var level = useOnContext.getLevel(); + final var offset = e.getStructurePos(); + var size = e.getStructureSize(); + var pos = useOnContext.getClickedPos().offset(offset); + + for (int x = 0; x < size.getX(); x++) { + for (int y = 0; y < size.getY(); y++) { + for (int z = 0; z < size.getZ(); z++) { + var blockPos = pos.offset(x, y, z); + var state = level.getBlockState(blockPos); + if (state.is(Blocks.END_STONE)) { + level.setBlock( + blockPos, + Blocks.STRUCTURE_VOID.defaultBlockState(), + BlocksHelper.SET_SILENT + ); + } + } + } + } + return InteractionResult.SUCCESS; + } + return InteractionResult.FAIL; + }, false, BuiltInRegistries.ITEM.getKey(Items.BUCKET)) + + ); } } } diff --git a/src/main/resources/assets/betterend/lang/de_de.json b/src/main/resources/assets/betterend/lang/de_de.json index 37fc92c8..0cb6be19 100644 --- a/src/main/resources/assets/betterend/lang/de_de.json +++ b/src/main/resources/assets/betterend/lang/de_de.json @@ -792,6 +792,7 @@ "item.betterend.crystalite_helmet": "Kristallithelm", "item.betterend.crystalite_leggings": "Kristallitbeinschutz", "item.betterend.crystalline_sulphur": "Schwefel", + "item.betterend.debug.fill_base_void": "Endstein in Structure-Block-Volumen ersetzen [dev]", "item.betterend.debug.jigsaw_big_deco": "Große Deko [dev]", "item.betterend.debug.jigsaw_deco": "Kleine Deko [dev]", "item.betterend.debug.jigsaw_entrance": "Hauseingang [dev]", diff --git a/src/main/resources/assets/betterend/lang/en_us.json b/src/main/resources/assets/betterend/lang/en_us.json index 6c54d004..1a0be8f1 100644 --- a/src/main/resources/assets/betterend/lang/en_us.json +++ b/src/main/resources/assets/betterend/lang/en_us.json @@ -792,6 +792,7 @@ "item.betterend.crystalite_helmet": "Crystalite Helmet", "item.betterend.crystalite_leggings": "Crystalite Leggings", "item.betterend.crystalline_sulphur": "Sulfur", + "item.betterend.debug.fill_base_void": "Replace EndStone in Structure Block Bounds [dev]", "item.betterend.debug.jigsaw_big_deco": "Large Decoration [dev]", "item.betterend.debug.jigsaw_deco": "Small Decoration [dev]", "item.betterend.debug.jigsaw_entrance": "Entrance [dev]",