From afde099481f9fe86e9550efb2dfc22350354a3b7 Mon Sep 17 00:00:00 2001 From: Waterpicker Date: Sun, 17 May 2026 01:28:08 -0500 Subject: [PATCH 1/6] Experimental CommandBlock ticking. --- .../util/schematic/RelativeBlockSample.java | 60 +++++++++++++++---- 1 file changed, 48 insertions(+), 12 deletions(-) diff --git a/common/src/main/java/org/dimdev/dimdoors/util/schematic/RelativeBlockSample.java b/common/src/main/java/org/dimdev/dimdoors/util/schematic/RelativeBlockSample.java index 9e3543a7c..b8780da35 100644 --- a/common/src/main/java/org/dimdev/dimdoors/util/schematic/RelativeBlockSample.java +++ b/common/src/main/java/org/dimdev/dimdoors/util/schematic/RelativeBlockSample.java @@ -15,7 +15,9 @@ import net.minecraft.world.entity.EntityType; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.CommandBlock; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.CommandBlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.phys.Vec3; @@ -79,24 +81,28 @@ public RelativeBlockSample(Schematic schematic) { public void place(BlockPos origin, ServerLevel world, boolean biomes, HolderLookup.Provider provider) { shouldUpdate = false; - this.blockDataContainer.forEach((pos, data) -> { - if(data.state != null) { - BlockPos actualPos = origin.offset(pos); + try { + this.blockDataContainer.forEach((pos, data) -> { + if(data.state != null) { + BlockPos actualPos = origin.offset(pos); - world.setBlock(actualPos, data.state, 0); + world.setBlock(actualPos, data.state, 0); - if(data.blockEntity != null) { - BlockEntity blockEntity = BlockEntity.loadStatic(actualPos, data.state, data.blockEntity, provider); - if (blockEntity != null) { - world.setBlockEntity(blockEntity); + if(data.blockEntity != null) { + BlockEntity blockEntity = BlockEntity.loadStatic(actualPos, data.state, data.blockEntity, provider); + if (blockEntity != null) { + world.setBlockEntity(blockEntity); + } } } - } - }); + }); + } finally { + shouldUpdate = true; + } - shouldUpdate = true; + this.initializePlacedCommandBlocks(origin, world); for (Map.Entry entry : this.entityContainer.entrySet()) { @@ -119,4 +125,34 @@ public void place(BlockPos origin, ServerLevel world, boolean biomes, HolderLook } } -} \ No newline at end of file + + private void initializePlacedCommandBlocks(BlockPos origin, ServerLevel world) { + this.blockDataContainer.forEach((pos, data) -> { + if (data.state == null || !(data.state.getBlock() instanceof CommandBlock)) { + return; + } + + BlockPos actualPos = origin.offset(pos); + if (!(world.getBlockEntity(actualPos) instanceof CommandBlockEntity commandBlock)) { + return; + } + + BlockState state = world.getBlockState(actualPos); + if (!(state.getBlock() instanceof CommandBlock block)) { + return; + } + + boolean powered = world.hasNeighborSignal(actualPos); + commandBlock.setPowered(powered); + + if (commandBlock.getMode() == CommandBlockEntity.Mode.SEQUENCE) { + return; + } + + if (powered || commandBlock.isAutomatic()) { + commandBlock.markConditionMet(); + world.scheduleTick(actualPos, block, 1); + } + }); + } +} From 59c122065616beaa07301fa2ba2f3066a2058ffc Mon Sep 17 00:00:00 2001 From: Immodial <143627051+Immodial@users.noreply.github.com> Date: Mon, 20 Jul 2026 05:09:51 -0400 Subject: [PATCH 2/6] Fix Enchantability Flags Previously Helmets enchanted like Leggings, Leggings enchanted like Boots, and Boots enchanted like Helmets! Not completely sure I got all code references --- .../data/minecraft/tags/item/enchantable/armor.json | 10 +++++----- .../minecraft/tags/item/enchantable/durability.json | 10 +++++----- .../minecraft/tags/item/enchantable/equippable.json | 10 +++++----- .../minecraft/tags/item/enchantable/foot_armor.json | 4 ++-- .../minecraft/tags/item/enchantable/head_armor.json | 4 ++-- .../minecraft/tags/item/enchantable/leg_armor.json | 4 ++-- .../minecraft/tags/item/enchantable/vanishing.json | 10 +++++----- .../org/dimdev/dimdoors/datagen/ItemTagProvider.java | 6 +++--- 8 files changed, 29 insertions(+), 29 deletions(-) diff --git a/common/src/main/generated/data/minecraft/tags/item/enchantable/armor.json b/common/src/main/generated/data/minecraft/tags/item/enchantable/armor.json index 3cbfe73cf..2ac6b5f91 100644 --- a/common/src/main/generated/data/minecraft/tags/item/enchantable/armor.json +++ b/common/src/main/generated/data/minecraft/tags/item/enchantable/armor.json @@ -1,12 +1,12 @@ { "values": [ - "dimdoors:world_thread_boots", - "dimdoors:garment_of_reality_boots", - "dimdoors:world_thread_chestplate", - "dimdoors:garment_of_reality_chestplate", "dimdoors:world_thread_helmet", "dimdoors:garment_of_reality_helmet", + "dimdoors:world_thread_chestplate", + "dimdoors:garment_of_reality_chestplate", "dimdoors:world_thread_leggings", - "dimdoors:garment_of_reality_leggings" + "dimdoors:garment_of_reality_leggings", + "dimdoors:world_thread_boots", + "dimdoors:garment_of_reality_boots" ] } \ No newline at end of file diff --git a/common/src/main/generated/data/minecraft/tags/item/enchantable/durability.json b/common/src/main/generated/data/minecraft/tags/item/enchantable/durability.json index 9a2822a84..6b77383f3 100644 --- a/common/src/main/generated/data/minecraft/tags/item/enchantable/durability.json +++ b/common/src/main/generated/data/minecraft/tags/item/enchantable/durability.json @@ -1,13 +1,13 @@ { "values": [ "dimdoors:rift_blade", - "dimdoors:world_thread_boots", - "dimdoors:garment_of_reality_boots", - "dimdoors:world_thread_chestplate", - "dimdoors:garment_of_reality_chestplate", "dimdoors:world_thread_helmet", "dimdoors:garment_of_reality_helmet", + "dimdoors:world_thread_chestplate", + "dimdoors:garment_of_reality_chestplate", "dimdoors:world_thread_leggings", - "dimdoors:garment_of_reality_leggings" + "dimdoors:garment_of_reality_leggings", + "dimdoors:world_thread_boots", + "dimdoors:garment_of_reality_boots" ] } \ No newline at end of file diff --git a/common/src/main/generated/data/minecraft/tags/item/enchantable/equippable.json b/common/src/main/generated/data/minecraft/tags/item/enchantable/equippable.json index 3cbfe73cf..2ac6b5f91 100644 --- a/common/src/main/generated/data/minecraft/tags/item/enchantable/equippable.json +++ b/common/src/main/generated/data/minecraft/tags/item/enchantable/equippable.json @@ -1,12 +1,12 @@ { "values": [ - "dimdoors:world_thread_boots", - "dimdoors:garment_of_reality_boots", - "dimdoors:world_thread_chestplate", - "dimdoors:garment_of_reality_chestplate", "dimdoors:world_thread_helmet", "dimdoors:garment_of_reality_helmet", + "dimdoors:world_thread_chestplate", + "dimdoors:garment_of_reality_chestplate", "dimdoors:world_thread_leggings", - "dimdoors:garment_of_reality_leggings" + "dimdoors:garment_of_reality_leggings", + "dimdoors:world_thread_boots", + "dimdoors:garment_of_reality_boots" ] } \ No newline at end of file diff --git a/common/src/main/generated/data/minecraft/tags/item/enchantable/foot_armor.json b/common/src/main/generated/data/minecraft/tags/item/enchantable/foot_armor.json index 1642e51a5..6d85e69aa 100644 --- a/common/src/main/generated/data/minecraft/tags/item/enchantable/foot_armor.json +++ b/common/src/main/generated/data/minecraft/tags/item/enchantable/foot_armor.json @@ -1,6 +1,6 @@ { "values": [ - "dimdoors:world_thread_leggings", - "dimdoors:garment_of_reality_leggings" + "dimdoors:world_thread_boots", + "dimdoors:garment_of_reality_boots" ] } \ No newline at end of file diff --git a/common/src/main/generated/data/minecraft/tags/item/enchantable/head_armor.json b/common/src/main/generated/data/minecraft/tags/item/enchantable/head_armor.json index 6d85e69aa..2efb60aa7 100644 --- a/common/src/main/generated/data/minecraft/tags/item/enchantable/head_armor.json +++ b/common/src/main/generated/data/minecraft/tags/item/enchantable/head_armor.json @@ -1,6 +1,6 @@ { "values": [ - "dimdoors:world_thread_boots", - "dimdoors:garment_of_reality_boots" + "dimdoors:world_thread_helmet", + "dimdoors:garment_of_reality_helmet" ] } \ No newline at end of file diff --git a/common/src/main/generated/data/minecraft/tags/item/enchantable/leg_armor.json b/common/src/main/generated/data/minecraft/tags/item/enchantable/leg_armor.json index 2efb60aa7..1642e51a5 100644 --- a/common/src/main/generated/data/minecraft/tags/item/enchantable/leg_armor.json +++ b/common/src/main/generated/data/minecraft/tags/item/enchantable/leg_armor.json @@ -1,6 +1,6 @@ { "values": [ - "dimdoors:world_thread_helmet", - "dimdoors:garment_of_reality_helmet" + "dimdoors:world_thread_leggings", + "dimdoors:garment_of_reality_leggings" ] } \ No newline at end of file diff --git a/common/src/main/generated/data/minecraft/tags/item/enchantable/vanishing.json b/common/src/main/generated/data/minecraft/tags/item/enchantable/vanishing.json index 9a2822a84..6b77383f3 100644 --- a/common/src/main/generated/data/minecraft/tags/item/enchantable/vanishing.json +++ b/common/src/main/generated/data/minecraft/tags/item/enchantable/vanishing.json @@ -1,13 +1,13 @@ { "values": [ "dimdoors:rift_blade", - "dimdoors:world_thread_boots", - "dimdoors:garment_of_reality_boots", - "dimdoors:world_thread_chestplate", - "dimdoors:garment_of_reality_chestplate", "dimdoors:world_thread_helmet", "dimdoors:garment_of_reality_helmet", + "dimdoors:world_thread_chestplate", + "dimdoors:garment_of_reality_chestplate", "dimdoors:world_thread_leggings", - "dimdoors:garment_of_reality_leggings" + "dimdoors:garment_of_reality_leggings", + "dimdoors:world_thread_boots", + "dimdoors:garment_of_reality_boots" ] } \ No newline at end of file diff --git a/fabric/src/main/datagen/org/dimdev/dimdoors/datagen/ItemTagProvider.java b/fabric/src/main/datagen/org/dimdev/dimdoors/datagen/ItemTagProvider.java index ce05a1318..5fca5398b 100644 --- a/fabric/src/main/datagen/org/dimdev/dimdoors/datagen/ItemTagProvider.java +++ b/fabric/src/main/datagen/org/dimdev/dimdoors/datagen/ItemTagProvider.java @@ -41,10 +41,10 @@ protected void addTags(HolderLookup.Provider arg) { ItemTags.SHARP_WEAPON_ENCHANTABLE, ItemTags.SWORDS); - addHead(ModItems.WORLD_THREAD_ARMOR.boots().builtInRegistryHolder().key(), ModItems.GARMENT_OF_REALITY_ARMOR.boots().builtInRegistryHolder().key()); + addHead(ModItems.WORLD_THREAD_ARMOR.helmet().builtInRegistryHolder().key(), ModItems.GARMENT_OF_REALITY_ARMOR.helmet().builtInRegistryHolder().key()); addChest(ModItems.WORLD_THREAD_ARMOR.chestplate().builtInRegistryHolder().key(), ModItems.GARMENT_OF_REALITY_ARMOR.chestplate().builtInRegistryHolder().key()); - addLegs(ModItems.WORLD_THREAD_ARMOR.helmet().builtInRegistryHolder().key(), ModItems.GARMENT_OF_REALITY_ARMOR.helmet().builtInRegistryHolder().key()); - addFeet(ModItems.WORLD_THREAD_ARMOR.leggings().builtInRegistryHolder().key(), ModItems.GARMENT_OF_REALITY_ARMOR.leggings().builtInRegistryHolder().key()); + addLegs(ModItems.WORLD_THREAD_ARMOR.leggings().builtInRegistryHolder().key(), ModItems.GARMENT_OF_REALITY_ARMOR.leggings().builtInRegistryHolder().key()); + addFeet(ModItems.WORLD_THREAD_ARMOR.boots().builtInRegistryHolder().key(), ModItems.GARMENT_OF_REALITY_ARMOR.boots().builtInRegistryHolder().key()); tag(ConventionalItemTags.MUSIC_DISCS).add( ModItems.THEY_STARE_BACK_RECORD.builtInRegistryHolder().key(), From 8e1be568e5dc5f4cb1fbcc81f9079c62db3c3956 Mon Sep 17 00:00:00 2001 From: Immodial <143627051+Immodial@users.noreply.github.com> Date: Mon, 20 Jul 2026 06:24:53 -0400 Subject: [PATCH 3/6] Pocket Command now sends Targets to Generated Pocket This replaces the "Locator" parameter, which isn't really a problem since `/execute at` offers the same functionality --- .../dimdoors/command/PocketCommand.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/common/src/main/java/org/dimdev/dimdoors/command/PocketCommand.java b/common/src/main/java/org/dimdev/dimdoors/command/PocketCommand.java index 5b2f63d80..5f46df95b 100644 --- a/common/src/main/java/org/dimdev/dimdoors/command/PocketCommand.java +++ b/common/src/main/java/org/dimdev/dimdoors/command/PocketCommand.java @@ -31,6 +31,7 @@ import org.dimdev.dimdoors.ModRegistryKeys; import org.dimdev.dimdoors.api.util.Location; import org.dimdev.dimdoors.block.RiftVariantProvider; +import org.dimdev.dimdoors.block.entity.RiftBlockEntity; import org.dimdev.dimdoors.item.RiftSignatureItem; import org.dimdev.dimdoors.pockets.PocketCreator; import org.dimdev.dimdoors.pockets.PocketGenerationContext; @@ -67,15 +68,15 @@ public class PocketCommand { context.getSource(), ResourceLocationArgument.getId(context, "id"), resourceKey, - context.getSource().getPlayerOrException(), + null, null )) - .then(argument("locator", EntityArgument.entity()) + .then(argument("target", EntityArgument.entity()) .executes(context -> placePocket( context.getSource(), ResourceLocationArgument.getId(context, "id"), resourceKey, - EntityArgument.getEntity(context, "locator"), + EntityArgument.getEntity(context, "target"), null )) ) @@ -171,7 +172,7 @@ private static int setChunkLoading(CommandSourceStack source, @Nullable Integer return pocket; } - private static int placePocket(CommandSourceStack source, ResourceLocation id, ResourceKey> idFunction, @Nullable Entity locatorEntity, @Nullable BlockPos selectedSourcePos) throws CommandSyntaxException { + private static int placePocket(CommandSourceStack source, ResourceLocation id, ResourceKey> idFunction, @Nullable Entity targetEntity, @Nullable BlockPos selectedSourcePos) throws CommandSyntaxException { PocketCreator creator = source.registryAccess().registry(idFunction).map(a -> a.get(id)).orElse(null); if (creator == null) { source.sendFailure(Component.literal("Unknown pocket id: " + id)); @@ -185,9 +186,9 @@ private static int placePocket(CommandSourceStack sour if (selectedSourcePos != null) { sourceLevel = player.serverLevel(); sourcePos = normalizeSourcePos(sourceLevel, selectedSourcePos); - } else if (locatorEntity != null) { - sourceLevel = (ServerLevel) locatorEntity.level(); - sourcePos = normalizeSourcePos(sourceLevel, locatorEntity.blockPosition()); + } else if (targetEntity != null) { + sourceLevel = (ServerLevel) targetEntity.level(); + sourcePos = normalizeSourcePos(sourceLevel, targetEntity.blockPosition()); } else { sourceLevel = player.serverLevel(); sourcePos = normalizeSourcePos(sourceLevel, player.blockPosition()); @@ -242,6 +243,12 @@ private static int placePocket(CommandSourceStack sour } TemplateUtils.linkRifts(contextLocation, entrance); + if (targetEntity != null + && !((RiftBlockEntity) contextLocation.getBlockEntity()).teleport(targetEntity)) { // This line does not feel safe but theoretically any block entity errors would happen inside linkRifts + source.sendFailure(Component.literal("Failed to teleport entity through created rift.")); + return 0; + } + source.sendSuccess(() -> Component.literal( "Linked " + linkedSourcePos.toShortString() + " to " + id From 47a8a6e272198c3d2a6c675dc77c69f3287db3ed Mon Sep 17 00:00:00 2001 From: Immodial <143627051+Immodial@users.noreply.github.com> Date: Mon, 20 Jul 2026 12:00:38 -0400 Subject: [PATCH 4/6] Added Custom Equip Sound for Thread Armor --- .../dimdev/dimdoors/item/ModArmorMaterials.java | 7 ++++--- .../dimdev/dimdoors/sound/ModSoundEvents.java | 1 + .../main/resources/assets/dimdoors/sounds.json | 10 +++++++++- .../assets/dimdoors/sounds/equip_thread_1.ogg | Bin 0 -> 9488 bytes .../assets/dimdoors/sounds/equip_thread_2.ogg | Bin 0 -> 16064 bytes .../assets/dimdoors/sounds/equip_thread_3.ogg | Bin 0 -> 8024 bytes .../assets/dimdoors/sounds/equip_thread_4.ogg | Bin 0 -> 8795 bytes .../assets/dimdoors/sounds/equip_thread_5.ogg | Bin 0 -> 8000 bytes .../assets/dimdoors/sounds/equip_thread_6.ogg | Bin 0 -> 13864 bytes 9 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 common/src/main/resources/assets/dimdoors/sounds/equip_thread_1.ogg create mode 100644 common/src/main/resources/assets/dimdoors/sounds/equip_thread_2.ogg create mode 100644 common/src/main/resources/assets/dimdoors/sounds/equip_thread_3.ogg create mode 100644 common/src/main/resources/assets/dimdoors/sounds/equip_thread_4.ogg create mode 100644 common/src/main/resources/assets/dimdoors/sounds/equip_thread_5.ogg create mode 100644 common/src/main/resources/assets/dimdoors/sounds/equip_thread_6.ogg diff --git a/common/src/main/java/org/dimdev/dimdoors/item/ModArmorMaterials.java b/common/src/main/java/org/dimdev/dimdoors/item/ModArmorMaterials.java index 2afd25ebc..16be218a8 100644 --- a/common/src/main/java/org/dimdev/dimdoors/item/ModArmorMaterials.java +++ b/common/src/main/java/org/dimdev/dimdoors/item/ModArmorMaterials.java @@ -2,13 +2,14 @@ import net.minecraft.Util; import net.minecraft.core.Holder; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundEvents; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; import org.dimdev.dimdoors.DimensionalDoors; +import org.dimdev.dimdoors.sound.ModSoundEvents; import java.util.HashMap; import java.util.List; @@ -19,7 +20,7 @@ public class ModArmorMaterials { public static final ArmorMaterial GARMENT_OF_REALITY = register( "garment_of_reality", 15, - SoundEvents.ARMOR_EQUIP_LEATHER, + BuiltInRegistries.SOUND_EVENT.wrapAsHolder(ModSoundEvents.ARMOR_EQUIP_THREAD), // This feels hacky but it was in neoforge docs () -> () -> Ingredient.of(Items.STONE), new int[]{1, 2, 3, 1}, 0.0F, @@ -28,7 +29,7 @@ public class ModArmorMaterials { public static final ArmorMaterial WORLD_THREAD = register( "world_thread", 15, - SoundEvents.ARMOR_EQUIP_LEATHER, + BuiltInRegistries.SOUND_EVENT.wrapAsHolder(ModSoundEvents.ARMOR_EQUIP_THREAD), () -> () -> Ingredient.of(Items.STONE), new int[]{1, 2, 3, 1}, 0.0F, diff --git a/common/src/main/java/org/dimdev/dimdoors/sound/ModSoundEvents.java b/common/src/main/java/org/dimdev/dimdoors/sound/ModSoundEvents.java index 7d4c74caf..b905715a4 100644 --- a/common/src/main/java/org/dimdev/dimdoors/sound/ModSoundEvents.java +++ b/common/src/main/java/org/dimdev/dimdoors/sound/ModSoundEvents.java @@ -11,6 +11,7 @@ public final class ModSoundEvents { public static final SoundEvent DOOR_LOCK_REMOVED = register("door_lock_removed"); public static final SoundEvent KEY_LOCK = register("key_lock"); public static final SoundEvent KEY_UNLOCKED = register("key_unlock"); + public static final SoundEvent ARMOR_EQUIP_THREAD = register("equip_thread"); public static final SoundEvent MONK = register("monk"); public static final SoundEvent RIFT = register("rift"); public static final SoundEvent RIFT_CLOSE = register("rift_close"); diff --git a/common/src/main/resources/assets/dimdoors/sounds.json b/common/src/main/resources/assets/dimdoors/sounds.json index 2bbda6a90..6181ac435 100644 --- a/common/src/main/resources/assets/dimdoors/sounds.json +++ b/common/src/main/resources/assets/dimdoors/sounds.json @@ -15,5 +15,13 @@ "white_void": { "sounds" : [ "dimdoors:white_void"] }, "bloop": { "sounds" : [ "dimdoors:bloop"]}, "tesselating_weave": { "sounds" : [ "dimdoors:tesselating_weave"]}, - "they_stare_back": { "sounds" : [ "dimdoors:they_stare_back"]} + "they_stare_back": { "sounds" : [ "dimdoors:they_stare_back"]}, + "equip_thread": { "sounds" : [ + "dimdoors:equip_thread_1", + "dimdoors:equip_thread_2", + "dimdoors:equip_thread_3", + "dimdoors:equip_thread_4", + "dimdoors:equip_thread_5", + "dimdoors:equip_thread_6" + ]} } diff --git a/common/src/main/resources/assets/dimdoors/sounds/equip_thread_1.ogg b/common/src/main/resources/assets/dimdoors/sounds/equip_thread_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3a24af15df92c5d43a99b74c3dba5ade3d3f7893 GIT binary patch literal 9488 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/dimdoors/sounds/equip_thread_3.ogg b/common/src/main/resources/assets/dimdoors/sounds/equip_thread_3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6d1650a31be42f1b53a8c35dd767b760e27f188a GIT binary patch literal 8024 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/dimdoors/sounds/equip_thread_4.ogg b/common/src/main/resources/assets/dimdoors/sounds/equip_thread_4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b9267ec682cc289df1078cfdecd29976f6a6921b GIT binary patch literal 8795 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/dimdoors/sounds/equip_thread_5.ogg b/common/src/main/resources/assets/dimdoors/sounds/equip_thread_5.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0d566abf1157b2ce6d7f4358b5ef322c26b8ec09 GIT binary patch literal 8000 zcmb7JcRbupxBn5*f)HIqR*e-z?-J21f@SqhqD5VzEJ8@sAPAycB2gC+5ixy?@;I-ucXqGiPSbnKN^~GiQGE?ClK!V&Jbt;dM$}jJP&L#6jfk z=3(vVNnjDFmH@ypn6~tYPX5*q=@CZ$od_d|z?v(Q%JuWAgr0w=_%o++B*11<$NLV# zdLH%=7e{O36X_5wh?t0&h={a^1cV=MXN$IRbhU@5xq3T#xVfV2T)m(K9YkkOW$-Dh z7!v{H0PvVgho$9lUmOAeXaOL*L^|2Oz5a08Kd4ZH!9RjP&6Q~M`9;)%)JA;)n|~L` z^Mpv)G6Dbz@EA&-?(s!=wf>NUb&<}1O#nxr!XiZyS;G{Q#?99_pHC{UDlT!5Q=6Ry z!1Ylg=L}_lYjTGDtAOUET1P?iQ>{Cp1?-;PqBuwhjofnXbA4qBXs$j?0Gpc#hY1av zdv4T|O?htK{0<4FRR)Fpt2nU(0?q|w+MX~8l27HGngszK6D-$?XXq+t@9Agn*=Fyh z<2AUz+bu((f6phTLx_NEZrKEG zXaW~BVNNE2Bs9E)7_cQQNj87foJ{PzW-PB`!o3H{_L1p@Y3a+@EXtEE;NFrDW&?cj zjau@JwSSOsQl=L;rsw}(vywx*0H6e}CC;7wG;4V9ke#e>I{@yf5}XI;A*kUgf%8<* z@KVKj>2xF-byQlO``0Fb+YTlrdOAFmUV6#iL5UuET>}Z-!T&=xWC%L(7tj#S z%zMdBkIBX3tWK8YF({VhCAkXKsV1;P#LIa|dSCi(k1S34LN=BmW3V~WDC0^kHZ{W& zFS~?s!L!a`Jn_)ZwASpjzI0E#7FBxQDfQq&2H9)u0LWuq!qBv_T7mr>2hz!~W2WF( zv%d7j!deE9icHM7Qdw(sD(^(7CmwqngKw6d1xG}VXE@hVAVKPfEoP&Kg1`gy{#8(% zxQ`OJZ&sr$ZJEK4fLKy%2F`rW=Nw+oXr5<_wnK9{Vq(={*bsd<>yPWuItOs6;CUV1klE#x^mPi&>tf zvYO6$mBZ#&^FRlO=A9x6+*F8d+)Yx}6MTfHdVr|N4yOF)#%=NR(p~ERNABHb2c7xU zpHG|_Vd9N4OF>UmhapGNGa~^rBQbZF!|lwH|1F=I4q5^b;B*4VMC)i#946$JGR5fz z|Aib4cLrQMdq+Hv_FEp^0l}Uf3B6s3etI>~T?`qK{fy{ACObnZ^u{ZHh8u;G%8ozwhxVF_7+aanT zHL4&YYAGU?KQh@dGQFtwl}l&oTHSxleX%mhT9s{`05L|KyE`%^rMEs{TM1U5!ut_H;Ew$WtHvf*)mIQx? zXk{wDwN%eozn*BWcK2_z;t>zdC2^BHh)Gk8a0eGn4WI?jPL>dMm2S=@OztiCJSJzr zzzO4-Cyy zFAlB=UBr0MK=Uv*c+UJp&raC|Ovr#17UMY}3yp^psvdZ)6^s#H7Md9fUTMVa;7>3V zgbE4ZP7KiCwiUDnRSgCt4EA*T(Te?ENUcE~LwYsDkg5Sf*Q65FZ)9gNATjtEtV$Xf zAq*r@V@8OH1D(NS-H{=b0RnANg|hNRO&lr?R)AI1lo!&%2Q_wRXE73^aU#kD6ou9` z8A2JNQAm2V5k`bbvf5CRok=qKPLkc!h-yDtZ730GfVQ(pLe6;GnH}nm?4uFMVPNZQ zH5$p{IwPG0D!K!bWzb-(K=?a$ZZO{E~i+7&*D7seVIoVJu*tjbmXlLq|?>Lda_OouKuHo8Ro#AW6d z6D8&JyaijtfTtVSFf6uI=tToxg@D(&Q+Y0f%>pKoN>1QXXd+BNG%3-V3fp1~kE+Zy zvT-h7V6wr#Ok~m)CnNc$`VS-*@k)E2Wd(5gbTD`LgHYpsh+g3 zPE3eC43-8`TF}G<80>Wz90tQyg0Q6|z}BTN(Ud)#aOfxr0FRs91-o`t4J7Tx%6WR} z)doRSdJ{PP5{RKHp;Hd%zyyvFVhD|%q9+7KBcSIWp7cS3aL^s}B5)=S0tO`zBWOGD zoVP-saE4JfrUcGd6$&ZqIt3zvIov9Byl&%H!!;`0md+WViJl#JOzC2JX*SnEuN`Cb^)!aJxqW<6>YP0-l$C(wl1k$1fvthN+z4vl1r1GTZGQ|N-+A?f8A>8 zTq;X8>rVtsQqusm6jJ!I1TSM5Hp`P`;sG8jMToXxJZV4xtHMMh`CiE{}Xxv}C zmx*w(Qyy=kJ_u1lKadCOI2}t^v`b!p@t}DGd4yJI9vF1?!B823H+O-m z6BatW9nt~`r-Zg*Dyg6$?D;y-(8MIXXn4ePCW~{7XTWHdmJm7-2NCmR2x

l~ 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 s@+k!8nLK(@ Date: Mon, 20 Jul 2026 12:04:25 -0400 Subject: [PATCH 5/6] Actually Fix Armor Flags Updated Enchantable tags but not actual Armor tags --- common/src/main/generated/data/c/tags/item/armors.json | 10 +++++----- .../generated/data/minecraft/tags/item/foot_armor.json | 4 ++-- .../generated/data/minecraft/tags/item/head_armor.json | 4 ++-- .../generated/data/minecraft/tags/item/leg_armor.json | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/common/src/main/generated/data/c/tags/item/armors.json b/common/src/main/generated/data/c/tags/item/armors.json index 3cbfe73cf..2ac6b5f91 100644 --- a/common/src/main/generated/data/c/tags/item/armors.json +++ b/common/src/main/generated/data/c/tags/item/armors.json @@ -1,12 +1,12 @@ { "values": [ - "dimdoors:world_thread_boots", - "dimdoors:garment_of_reality_boots", - "dimdoors:world_thread_chestplate", - "dimdoors:garment_of_reality_chestplate", "dimdoors:world_thread_helmet", "dimdoors:garment_of_reality_helmet", + "dimdoors:world_thread_chestplate", + "dimdoors:garment_of_reality_chestplate", "dimdoors:world_thread_leggings", - "dimdoors:garment_of_reality_leggings" + "dimdoors:garment_of_reality_leggings", + "dimdoors:world_thread_boots", + "dimdoors:garment_of_reality_boots" ] } \ No newline at end of file diff --git a/common/src/main/generated/data/minecraft/tags/item/foot_armor.json b/common/src/main/generated/data/minecraft/tags/item/foot_armor.json index 1642e51a5..6d85e69aa 100644 --- a/common/src/main/generated/data/minecraft/tags/item/foot_armor.json +++ b/common/src/main/generated/data/minecraft/tags/item/foot_armor.json @@ -1,6 +1,6 @@ { "values": [ - "dimdoors:world_thread_leggings", - "dimdoors:garment_of_reality_leggings" + "dimdoors:world_thread_boots", + "dimdoors:garment_of_reality_boots" ] } \ No newline at end of file diff --git a/common/src/main/generated/data/minecraft/tags/item/head_armor.json b/common/src/main/generated/data/minecraft/tags/item/head_armor.json index 6d85e69aa..2efb60aa7 100644 --- a/common/src/main/generated/data/minecraft/tags/item/head_armor.json +++ b/common/src/main/generated/data/minecraft/tags/item/head_armor.json @@ -1,6 +1,6 @@ { "values": [ - "dimdoors:world_thread_boots", - "dimdoors:garment_of_reality_boots" + "dimdoors:world_thread_helmet", + "dimdoors:garment_of_reality_helmet" ] } \ No newline at end of file diff --git a/common/src/main/generated/data/minecraft/tags/item/leg_armor.json b/common/src/main/generated/data/minecraft/tags/item/leg_armor.json index 2efb60aa7..1642e51a5 100644 --- a/common/src/main/generated/data/minecraft/tags/item/leg_armor.json +++ b/common/src/main/generated/data/minecraft/tags/item/leg_armor.json @@ -1,6 +1,6 @@ { "values": [ - "dimdoors:world_thread_helmet", - "dimdoors:garment_of_reality_helmet" + "dimdoors:world_thread_leggings", + "dimdoors:garment_of_reality_leggings" ] } \ No newline at end of file From 58d5c358d9f7fde3b34ebf337ac5a53b6f276ede Mon Sep 17 00:00:00 2001 From: Immodial <143627051+Immodial@users.noreply.github.com> Date: Wed, 22 Jul 2026 21:56:30 -0400 Subject: [PATCH 6/6] Added Option for Generic Death Messages Now large modpacks don't need to port every single death message, or if you are frequently sent to Limbo have the option of showing more familiar ones --- .../main/generated/assets/dimdoors/lang/en_us.json | 9 ++++++--- .../src/main/java/org/dimdev/dimdoors/ModConfig.java | 1 + .../compat/clothconfig/ClothConfigCompat.java | 1 + .../dimdoors/entity/limbo/LimboEntranceSource.java | 12 ++++++++++-- .../dimdev/dimdoors/datagen/LanguageProvider.java | 2 ++ 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/common/src/main/generated/assets/dimdoors/lang/en_us.json b/common/src/main/generated/assets/dimdoors/lang/en_us.json index aa7be9e8a..452b8d8eb 100644 --- a/common/src/main/generated/assets/dimdoors/lang/en_us.json +++ b/common/src/main/generated/assets/dimdoors/lang/en_us.json @@ -416,9 +416,9 @@ "dimdoors.config.option.decay.decayDelay": "Decay Delay", "dimdoors.config.option.decay.decayDelay.tooltip": "In minecraft ticks (20 per second on a healthy server or game), the delay between when a queued decay is scheduled and it fired.", "dimdoors.config.option.decay.decaySpreadChance": "Decay Spread Chance", - "dimdoors.config.option.decay.decaySpreadChance.tooltip": "To be filled out.", + "dimdoors.config.option.decay.decaySpreadChance.tooltip": "The chance that, when random ticked, a block that can decay adjacent blocks will do so.", "dimdoors.config.option.decay.decaysIntoAir": "Decays Into Air", - "dimdoors.config.option.decay.decaysIntoAir.tooltip": "To be filled out.", + "dimdoors.config.option.decay.decaysIntoAir.tooltip": "When true, blocks that produce World Thread when decaying will turn into air instead of their next decay step.", "dimdoors.config.option.doors.closeDoorBehind": "Close Door Behind", "dimdoors.config.option.doors.closeDoorBehind.tooltip": "When true, Dimensional Doors will automatically close when the player enters their portal.", "dimdoors.config.option.doors.doorList": "Doors", @@ -468,6 +468,8 @@ "dimdoors.config.option.limbo.escapeToWorldSpawn.tooltip": "Boolean that determines if players exiting limbo will return relative to the worldspawn instead. If true, escapeTargetWorld has no effect.", "dimdoors.config.option.limbo.hardcoreLimbo": "Hardcore Limbo", "dimdoors.config.option.limbo.hardcoreLimbo.tooltip": "When true, a player dying in Limbo will respawn in Limbo, making Eternal Fluid or Golden Dimensional Doors the only way to escape Limbo.", + "dimdoors.config.option.limbo.genericDeathMessages": "Generic Death Messages", + "dimdoors.config.option.limbo.genericDeathMessages.tooltip": "When true, instead of using custom death messages, \"...and was sent to Limbo\" will be added to the end of regular death messages.", "dimdoors.config.option.limbo.limboBlocksCorruptingExitWorldAmount": "Exit World Decay Radius", "dimdoors.config.option.limbo.limboBlocksCorruptingExitWorldAmount.tooltip": "The radius around a player in which blocks can decay upon exiting limbo.", "dimdoors.config.option.limbo.limboReturnDistance": "Limbo Return Radius", @@ -629,12 +631,13 @@ "item.dimdoors.world_thread_leggings": "Woven World Thread Leggings", "itemGroup.dimdoors.decay": "Decay", "itemGroup.dimdoors.dimensional_doors": "Dimensional Doors", + "limbo.death.generic": " and was sent to Limbo", "limbo.death.attack.anvil": "%1$s was squashed into Limbo by a falling anvil", "limbo.death.attack.anvil.player": "%1$s was squashed into Limbo by a falling anvil whilst fighting %2$s", "limbo.death.attack.arrow": "%1$s was shot by %2$s and was sent to Limbo", "limbo.death.attack.arrow.item": "%1$s was shot by %2$s using %3$s and was sent to Limbo", "limbo.death.attack.badRespawnPoint.link": "Intentional Game Design", - "limbo.death.attack.badRespawnPoint.message": "%1$s was killed by %2$s and was sent by Limbo", + "limbo.death.attack.badRespawnPoint.message": "%1$s was killed by %2$s and was sent to Limbo", "limbo.death.attack.cactus": "%1$s pricked a hole in reality", "limbo.death.attack.cactus.player": "%1$s walked into a cactus whilst trying to escape %2$s and was sent to Limbo", "limbo.death.attack.cramming": "%1$s was squished too much ans sent to Limbo", diff --git a/common/src/main/java/org/dimdev/dimdoors/ModConfig.java b/common/src/main/java/org/dimdev/dimdoors/ModConfig.java index af872e60c..174fe1357 100644 --- a/common/src/main/java/org/dimdev/dimdoors/ModConfig.java +++ b/common/src/main/java/org/dimdev/dimdoors/ModConfig.java @@ -201,6 +201,7 @@ public static class Monoliths { public static class Limbo { @Option private final WorldList worldsLeadingToLimbo = new WorldList(); @Option public boolean hardcoreLimbo = false; + @Option public boolean genericDeathMessages = false; @Option public int limboReturnDistanceMax = 200; @Option public int limboReturnDistanceMin = 100; diff --git a/common/src/main/java/org/dimdev/dimdoors/compat/clothconfig/ClothConfigCompat.java b/common/src/main/java/org/dimdev/dimdoors/compat/clothconfig/ClothConfigCompat.java index a665b8e3a..492b055be 100644 --- a/common/src/main/java/org/dimdev/dimdoors/compat/clothconfig/ClothConfigCompat.java +++ b/common/src/main/java/org/dimdev/dimdoors/compat/clothconfig/ClothConfigCompat.java @@ -82,6 +82,7 @@ public static Screen createScreen(Screen parent) { worldsLeadingToLimbo.list.addAll(value); })) .addEntry(createBoolean(entryBuilder, "limbo.hardcoreLimbo", limbo.hardcoreLimbo, false, value -> limbo.hardcoreLimbo = value)) + .addEntry(createBoolean(entryBuilder, "limbo.genericDeathMessages", limbo.genericDeathMessages, false, value -> limbo.genericDeathMessages = value)) .addEntry(createInt(entryBuilder, "limbo.limboReturnDistanceMax", limbo.limboReturnDistanceMax, 200, value -> limbo.limboReturnDistanceMax = value)) .addEntry(createInt(entryBuilder, "limbo.limboReturnDistanceMin", limbo.limboReturnDistanceMin, 100, value -> limbo.limboReturnDistanceMin = value)) .addEntry(createBoolean(entryBuilder, "limbo.decaySurroundings", limbo.decaySurroundings, false, value -> limbo.decaySurroundings = value)) diff --git a/common/src/main/java/org/dimdev/dimdoors/entity/limbo/LimboEntranceSource.java b/common/src/main/java/org/dimdev/dimdoors/entity/limbo/LimboEntranceSource.java index 5cd222958..e840c0eda 100644 --- a/common/src/main/java/org/dimdev/dimdoors/entity/limbo/LimboEntranceSource.java +++ b/common/src/main/java/org/dimdev/dimdoors/entity/limbo/LimboEntranceSource.java @@ -5,6 +5,7 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.player.Player; +import org.dimdev.dimdoors.DimensionalDoors; public abstract class LimboEntranceSource { public abstract Component getMessage(Player player); @@ -26,8 +27,15 @@ private LimboDeathEntranceSource(DamageSource damageSource) { @Override public Component getMessage(Player player) { - TranslatableContents message = (TranslatableContents) this.damageSource.getLocalizedDeathMessage(player).getContents(); - return Component.translatable("limbo." + message.getKey(), message.getArgs()); + if (DimensionalDoors.getConfig().getLimboConfig().genericDeathMessages) + { + return this.damageSource.getLocalizedDeathMessage(player).copy().append(Component.translatable("limbo.death.generic")); + } + else + { + TranslatableContents message = (TranslatableContents) this.damageSource.getLocalizedDeathMessage(player).getContents(); + return Component.translatable("limbo." + message.getKey(), message.getArgs()); + } } } } diff --git a/fabric/src/main/datagen/org/dimdev/dimdoors/datagen/LanguageProvider.java b/fabric/src/main/datagen/org/dimdev/dimdoors/datagen/LanguageProvider.java index f997f42ee..4be24dcc1 100644 --- a/fabric/src/main/datagen/org/dimdev/dimdoors/datagen/LanguageProvider.java +++ b/fabric/src/main/datagen/org/dimdev/dimdoors/datagen/LanguageProvider.java @@ -351,6 +351,8 @@ public void generateTranslations(HolderLookup.Provider registryLookup, Translati builder.add("dimdoors.config.option.limbo.universalLimbo.tooltip", "When true, players are also teleported to Limbo when they die in any non-Pocket Dimension (except Limbo itself). Otherwise, players only go to Limbo if they die in a Pocket Dimension."); builder.add("dimdoors.config.option.limbo.hardcoreLimbo", "Hardcore Limbo"); builder.add("dimdoors.config.option.limbo.hardcoreLimbo.tooltip", "When true, a player dying in Limbo will respawn in Limbo, making Eternal Fluid or Golden Dimensional Doors the only way to escape Limbo."); + builder.add("dimdoors.config.option.limbo.genericDeathMessages", "Generic Death Messages"); + builder.add("dimdoors.config.option.limbo.genericDeathMessages.tooltip", "When true, instead of using custom death messages, \"...and was sent to Limbo\" will be added to the end of regular death messages."); builder.add("dimdoors.config.option.limbo.limboBlocksCorruptingExitWorldAmount", "Exit World Decay Radius"); builder.add("dimdoors.config.option.limbo.limboBlocksCorruptingExitWorldAmount.tooltip", "The radius around a player in which blocks can decay upon exiting limbo."); builder.add("dimdoors.config.option.limbo.worldsLeadingToLimbo", "Worlds Leading to Limbo");