diff --git a/src/generated/resources/data/minecraft/tags/damage_type/always_hurts_ender_dragons.json b/src/generated/resources/data/minecraft/tags/damage_type/always_hurts_ender_dragons.json new file mode 100644 index 000000000..a06f30e69 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/damage_type/always_hurts_ender_dragons.json @@ -0,0 +1,5 @@ +{ + "values": [ + "touhou_little_maid:danmaku_ender_killer" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/damage_type/is_projectile.json b/src/generated/resources/data/minecraft/tags/damage_type/is_projectile.json new file mode 100644 index 000000000..42192ec3d --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/damage_type/is_projectile.json @@ -0,0 +1,5 @@ +{ + "values": [ + "touhou_little_maid:danmaku" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/entity_type/fall_damage_immune.json b/src/generated/resources/data/minecraft/tags/entity_type/fall_damage_immune.json new file mode 100644 index 000000000..a52718ad0 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/entity_type/fall_damage_immune.json @@ -0,0 +1,5 @@ +{ + "values": [ + "touhou_little_maid:fairy" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/entity_type/freeze_immune_entity_types.json b/src/generated/resources/data/minecraft/tags/entity_type/freeze_immune_entity_types.json new file mode 100644 index 000000000..a52718ad0 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/entity_type/freeze_immune_entity_types.json @@ -0,0 +1,5 @@ +{ + "values": [ + "touhou_little_maid:fairy" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/entity_type/impact_projectiles.json b/src/generated/resources/data/minecraft/tags/entity_type/impact_projectiles.json new file mode 100644 index 000000000..42192ec3d --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/entity_type/impact_projectiles.json @@ -0,0 +1,5 @@ +{ + "values": [ + "touhou_little_maid:danmaku" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/entity_type/powder_snow_walkable_mobs.json b/src/generated/resources/data/minecraft/tags/entity_type/powder_snow_walkable_mobs.json new file mode 100644 index 000000000..a52718ad0 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/entity_type/powder_snow_walkable_mobs.json @@ -0,0 +1,5 @@ +{ + "values": [ + "touhou_little_maid:fairy" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/touhou_little_maid/advancement/recipes/misc/entity_id_copy.json b/src/generated/resources/data/touhou_little_maid/advancement/recipes/misc/entity_id_copy.json new file mode 100644 index 000000000..5991b916c --- /dev/null +++ b/src/generated/resources/data/touhou_little_maid/advancement/recipes/misc/entity_id_copy.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_book": { + "conditions": { + "items": [ + { + "items": "minecraft:book" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "touhou_little_maid:entity_id_copy" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_book" + ] + ], + "rewards": { + "recipes": [ + "touhou_little_maid:entity_id_copy" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/touhou_little_maid/recipe/altar_recipe/monster_list.json b/src/generated/resources/data/touhou_little_maid/recipe/altar_recipe/cchess.json similarity index 58% rename from src/generated/resources/data/touhou_little_maid/recipe/altar_recipe/monster_list.json rename to src/generated/resources/data/touhou_little_maid/recipe/altar_recipe/cchess.json index 1a9b62916..9c2e8ff21 100644 --- a/src/generated/resources/data/touhou_little_maid/recipe/altar_recipe/monster_list.json +++ b/src/generated/resources/data/touhou_little_maid/recipe/altar_recipe/cchess.json @@ -5,28 +5,28 @@ "group": "altar_recipe", "ingredients": [ { - "tag": "c:dusts/redstone" + "tag": "minecraft:planks" }, { - "tag": "c:dusts/redstone" + "tag": "minecraft:planks" }, { - "tag": "c:nuggets/gold" + "tag": "minecraft:planks" }, { - "tag": "c:nuggets/gold" + "tag": "c:dyes/black" }, { - "item": "minecraft:book" + "tag": "c:dyes/red" }, { - "item": "minecraft:book" + "tag": "c:gems/diamond" } ], "lang": "jei.touhou_little_maid.altar_craft.item_craft.result", - "power": 0.2, + "power": 0.1, "result": { "count": 1, - "id": "touhou_little_maid:monster_list" + "id": "touhou_little_maid:cchess" } } \ No newline at end of file diff --git a/src/generated/resources/data/touhou_little_maid/recipe/altar_recipe/wchess.json b/src/generated/resources/data/touhou_little_maid/recipe/altar_recipe/wchess.json new file mode 100644 index 000000000..5aca13374 --- /dev/null +++ b/src/generated/resources/data/touhou_little_maid/recipe/altar_recipe/wchess.json @@ -0,0 +1,32 @@ +{ + "type": "touhou_little_maid:altar_recipe_serializers", + "category": "misc", + "entity": "minecraft:item", + "group": "altar_recipe", + "ingredients": [ + { + "tag": "minecraft:planks" + }, + { + "tag": "minecraft:planks" + }, + { + "tag": "minecraft:planks" + }, + { + "tag": "c:dyes/black" + }, + { + "tag": "c:dyes/white" + }, + { + "tag": "c:gems/emerald" + } + ], + "lang": "jei.touhou_little_maid.altar_craft.item_craft.result", + "power": 0.1, + "result": { + "count": 1, + "id": "touhou_little_maid:wchess" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/touhou_little_maid/recipe/entity_id_copy.json b/src/generated/resources/data/touhou_little_maid/recipe/entity_id_copy.json new file mode 100644 index 000000000..8d65f900f --- /dev/null +++ b/src/generated/resources/data/touhou_little_maid/recipe/entity_id_copy.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "c:leathers" + }, + { + "item": "minecraft:paper" + } + ], + "result": { + "count": 1, + "id": "touhou_little_maid:entity_id_copy" + } +} \ No newline at end of file diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/block/BlockCChess.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/block/BlockCChess.java index 855592775..48931c3f7 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/block/BlockCChess.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/block/BlockCChess.java @@ -96,7 +96,7 @@ public static void maidMove(ServerPlayer player, Level level, BlockPos pos, int && sit.getFirstPassenger() instanceof EntityMaid maid && maid.isOwnedBy(player)) { // TODO: 暂时不加段位系统 maid.getFavorabilityManager().apply(Type.CCHESS_WIN); - maid.getGameRecordManager().markStatue(true); + maid.getGameRecordManager().markStatue(false); InitTrigger.MAID_EVENT.get().trigger(player, TriggerType.WIN_CCHESS); } @@ -125,7 +125,7 @@ public static void maidMove(ServerPlayer player, Level level, BlockPos pos, int if (level instanceof ServerLevel serverLevel && serverLevel.getEntity(sitId) instanceof EntitySit sit && sit.getFirstPassenger() instanceof EntityMaid maid) { maid.swing(InteractionHand.MAIN_HAND); if (playerLost) { - maid.getGameRecordManager().markStatue(false); + maid.getGameRecordManager().markStatue(true); } } level.playSound(null, pos, InitSounds.GOMOKU.get(), SoundSource.BLOCKS, 1.0f, 0.8F + level.random.nextFloat() * 0.4F); diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/block/BlockGomoku.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/block/BlockGomoku.java index 233d676bd..7e8e7e256 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/block/BlockGomoku.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/block/BlockGomoku.java @@ -273,7 +273,7 @@ public ItemInteractionResult useItemOn(ItemStack itemStack, BlockState state, Le // 但是和其他人的女仆对弈不加好感哦 if (statue == Statue.WIN && maid.isOwnedBy(player)) { maid.getFavorabilityManager().apply(Type.GOMOKU_WIN); - maid.getGameRecordManager().markStatue(true); + maid.getGameRecordManager().markStatue(false); int rankBefore = MaidGomokuAI.getRank(maid); maid.getGameRecordManager().increaseGomokuWinCount(); int rankAfter = MaidGomokuAI.getRank(maid); diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/block/BlockWChess.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/block/BlockWChess.java index e1956654b..393c04b56 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/block/BlockWChess.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/block/BlockWChess.java @@ -97,7 +97,7 @@ public static void maidMove(ServerPlayer player, Level level, BlockPos pos, int && sit.getFirstPassenger() instanceof EntityMaid maid && maid.isOwnedBy(player)) { // TODO: 暂时不加段位系统 maid.getFavorabilityManager().apply(Type.WCHESS_WIN); - maid.getGameRecordManager().markStatue(true); + maid.getGameRecordManager().markStatue(false); InitTrigger.MAID_EVENT.get().trigger(player, TriggerType.WIN_WCHESS); } @@ -128,7 +128,7 @@ public static void maidMove(ServerPlayer player, Level level, BlockPos pos, int if (level instanceof ServerLevel serverLevel && serverLevel.getEntity(sitId) instanceof EntitySit sit && sit.getFirstPassenger() instanceof EntityMaid maid) { maid.swing(InteractionHand.MAIN_HAND); if (playerLost) { - maid.getGameRecordManager().markStatue(false); + maid.getGameRecordManager().markStatue(true); } } level.playSound(null, pos, InitSounds.GOMOKU.get(), SoundSource.BLOCKS, 1.0f, 0.8F + level.random.nextFloat() * 0.4F); diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/maid/task/AttackTaskConfigGui.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/maid/task/AttackTaskConfigGui.java index 77ba1d820..34f23e1ca 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/maid/task/AttackTaskConfigGui.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/maid/task/AttackTaskConfigGui.java @@ -31,6 +31,8 @@ import java.util.Map; import java.util.Objects; +import static com.github.tartaricacid.touhoulittlemaid.util.ResourceLocationUtil.isValidResourceLocation; + @IPNPlayerSideOnly @IPNGuiHint(button = IPNButton.SORT, horizontalOffset = -36, bottom = -12) @IPNGuiHint(button = IPNButton.SORT_COLUMNS, horizontalOffset = -24, bottom = -24) @@ -119,7 +121,7 @@ private void addMonsterType() { if (StringUtils.isBlank(value)) { return; } - if (!ResourceLocation.isValidNamespace(value)) { + if (!isValidResourceLocation(value)) { return; } ResourceLocation id = ResourceLocation.parse(value); diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/DataGenerator.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/DataGenerator.java index b57c4201a..e0d05c41f 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/DataGenerator.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/DataGenerator.java @@ -1,6 +1,10 @@ package com.github.tartaricacid.touhoulittlemaid.datagen; import com.github.tartaricacid.touhoulittlemaid.TouhouLittleMaid; +import com.github.tartaricacid.touhoulittlemaid.datagen.tag.DamageTypeGenerator; +import com.github.tartaricacid.touhoulittlemaid.datagen.tag.EntityTypeGenerator; +import com.github.tartaricacid.touhoulittlemaid.datagen.tag.TagBlock; +import com.github.tartaricacid.touhoulittlemaid.datagen.tag.TagItem; import net.minecraft.data.loot.LootTableProvider; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import net.neoforged.api.distmarker.Dist; @@ -50,6 +54,8 @@ public static void gatherData(GatherDataEvent event) { .addProvider(packOutput -> new TagBlock(packOutput, registries, TouhouLittleMaid.MOD_ID, existingFileHelper)); vanillaPack.addProvider( packOutput -> new TagItem(packOutput, registries, blockTagsProvider.contentsGetter(), TouhouLittleMaid.MOD_ID, existingFileHelper)); + generator.addProvider(event.includeServer(), new DamageTypeGenerator(pack, event.getLookupProvider(), event.getExistingFileHelper())); + generator.addProvider(event.includeServer(), new EntityTypeGenerator(pack, event.getLookupProvider(), event.getExistingFileHelper())); // Registry Based Stuff DatapackBuiltinEntriesProvider datapackProvider = new RegistryDataGenerator(pack, event.getLookupProvider()); diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/EnchantmentKeys.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/EnchantmentKeys.java index 0339cbe57..89b60bb45 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/EnchantmentKeys.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/EnchantmentKeys.java @@ -1,5 +1,6 @@ package com.github.tartaricacid.touhoulittlemaid.datagen; +import com.github.tartaricacid.touhoulittlemaid.datagen.tag.TagItem; import net.minecraft.core.Holder; import net.minecraft.core.HolderGetter; import net.minecraft.core.RegistryAccess; diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/RecipeGenerator.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/RecipeGenerator.java index b7b949412..7ccdb854c 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/RecipeGenerator.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/RecipeGenerator.java @@ -124,6 +124,22 @@ protected void buildRecipes(RecipeOutput recipeOutput) { .requires(Tags.Items.GEMS_DIAMOND) .save(recipeOutput); + AltarRecipeBuilder.shapeless(RecipeCategory.MISC, InitItems.CCHESS) + .power(0.1F) + .requires(3, ItemTags.PLANKS) + .requires(Tags.Items.DYES_BLACK) + .requires(Tags.Items.DYES_RED) + .requires(Tags.Items.GEMS_DIAMOND) + .save(recipeOutput); + + AltarRecipeBuilder.shapeless(RecipeCategory.MISC, InitItems.WCHESS) + .power(0.1F) + .requires(3, ItemTags.PLANKS) + .requires(Tags.Items.DYES_BLACK) + .requires(Tags.Items.DYES_WHITE) + .requires(Tags.Items.GEMS_EMERALD) + .save(recipeOutput); + AltarRecipeBuilder.shapeless(RecipeCategory.MISC, InitItems.HAKUREI_GOHEI) .power(0.15F) .requires(3, Tags.Items.RODS_WOODEN) @@ -281,13 +297,6 @@ protected void buildRecipes(RecipeOutput recipeOutput) { .requires(2, Tags.Items.RODS_WOODEN) .save(recipeOutput); - AltarRecipeBuilder.shapeless(RecipeCategory.MISC, InitItems.MONSTER_LIST) - .power(0.2F) - .requires(2, Tags.Items.DUSTS_REDSTONE) - .requires(2, Tags.Items.NUGGETS_GOLD) - .requires(2, Items.BOOK) - .save(recipeOutput); - ItemStack entityPlaceholder = new ItemStack(InitItems.ENTITY_PLACEHOLDER.asItem()); entityPlaceholder.set(InitDataComponent.RECIPES_ID_TAG, "reborn_maid"); AltarRecipeBuilder.shapeless(RecipeCategory.MISC, entityPlaceholder) @@ -374,5 +383,11 @@ protected void buildRecipes(RecipeOutput recipeOutput) { .define('R', Tags.Items.DUSTS_REDSTONE) .unlockedBy(getHasName(Items.REDSTONE), has(Tags.Items.DUSTS_REDSTONE)) .save(recipeOutput); + + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, InitItems.ENTITY_ID_COPY) + .requires(Tags.Items.LEATHERS) + .requires(Items.PAPER) + .unlockedBy(getHasName(Items.BOOK), has(Items.BOOK)) + .save(recipeOutput); } } diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/tag/DamageTypeGenerator.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/tag/DamageTypeGenerator.java new file mode 100644 index 000000000..282bcccb2 --- /dev/null +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/tag/DamageTypeGenerator.java @@ -0,0 +1,24 @@ +package com.github.tartaricacid.touhoulittlemaid.datagen.tag; + +import com.github.tartaricacid.touhoulittlemaid.TouhouLittleMaid; +import com.github.tartaricacid.touhoulittlemaid.init.InitDamage; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.minecraft.data.tags.DamageTypeTagsProvider; +import net.minecraft.tags.DamageTypeTags; +import net.neoforged.neoforge.common.data.ExistingFileHelper; +import org.jetbrains.annotations.Nullable; + +import java.util.concurrent.CompletableFuture; + +public class DamageTypeGenerator extends DamageTypeTagsProvider { + public DamageTypeGenerator(PackOutput pOutput, CompletableFuture pLookupProvider, @Nullable ExistingFileHelper existingFileHelper) { + super(pOutput, pLookupProvider, TouhouLittleMaid.MOD_ID, existingFileHelper); + } + + @Override + protected void addTags(HolderLookup.Provider pProvider) { + this.tag(DamageTypeTags.IS_PROJECTILE).add(InitDamage.DANMAKU); + this.tag(DamageTypeTags.ALWAYS_HURTS_ENDER_DRAGONS).add(InitDamage.DANMAKU_ENDER_KILLER); + } +} diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/tag/EntityTypeGenerator.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/tag/EntityTypeGenerator.java new file mode 100644 index 000000000..f80bfe7a6 --- /dev/null +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/tag/EntityTypeGenerator.java @@ -0,0 +1,24 @@ +package com.github.tartaricacid.touhoulittlemaid.datagen.tag; + +import com.github.tartaricacid.touhoulittlemaid.init.InitEntities; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.minecraft.tags.EntityTypeTags; +import net.neoforged.neoforge.common.data.ExistingFileHelper; +import net.neoforged.neoforge.common.data.internal.NeoForgeEntityTypeTagsProvider; + +import java.util.concurrent.CompletableFuture; + +public class EntityTypeGenerator extends NeoForgeEntityTypeTagsProvider { + public EntityTypeGenerator(PackOutput output, CompletableFuture lookupProvider, ExistingFileHelper existingFileHelper) { + super(output, lookupProvider, existingFileHelper); + } + + @Override + public void addTags(HolderLookup.Provider lookupProvider) { + tag(EntityTypeTags.IMPACT_PROJECTILES).add(InitEntities.DANMAKU.get()); + tag(EntityTypeTags.POWDER_SNOW_WALKABLE_MOBS).add(InitEntities.FAIRY.get()); + tag(EntityTypeTags.FREEZE_IMMUNE_ENTITY_TYPES).add(InitEntities.FAIRY.get()); + tag(EntityTypeTags.FALL_DAMAGE_IMMUNE).add(InitEntities.FAIRY.get()); + } +} diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/TagBlock.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/tag/TagBlock.java similarity index 91% rename from src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/TagBlock.java rename to src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/tag/TagBlock.java index 808963306..92d84f02b 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/TagBlock.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/tag/TagBlock.java @@ -1,4 +1,4 @@ -package com.github.tartaricacid.touhoulittlemaid.datagen; +package com.github.tartaricacid.touhoulittlemaid.datagen.tag; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/TagEnchantment.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/tag/TagEnchantment.java similarity index 91% rename from src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/TagEnchantment.java rename to src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/tag/TagEnchantment.java index 2041af06f..b8fb61a72 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/TagEnchantment.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/tag/TagEnchantment.java @@ -1,4 +1,4 @@ -package com.github.tartaricacid.touhoulittlemaid.datagen; +package com.github.tartaricacid.touhoulittlemaid.datagen.tag; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/TagItem.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/tag/TagItem.java similarity index 96% rename from src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/TagItem.java rename to src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/tag/TagItem.java index 9fb8edb01..f22918bdd 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/TagItem.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/datagen/tag/TagItem.java @@ -1,4 +1,4 @@ -package com.github.tartaricacid.touhoulittlemaid.datagen; +package com.github.tartaricacid.touhoulittlemaid.datagen.tag; import com.github.tartaricacid.touhoulittlemaid.init.InitItems; import net.minecraft.core.HolderLookup; diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/entity/projectile/EntityDanmaku.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/entity/projectile/EntityDanmaku.java index 9fca61015..30b6c5761 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/entity/projectile/EntityDanmaku.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/entity/projectile/EntityDanmaku.java @@ -1,6 +1,7 @@ package com.github.tartaricacid.touhoulittlemaid.entity.projectile; import com.github.tartaricacid.touhoulittlemaid.config.subconfig.MaidConfig; +import com.github.tartaricacid.touhoulittlemaid.init.InitDamage; import net.minecraft.core.BlockPos; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.protocol.Packet; @@ -92,12 +93,7 @@ protected void onHitEntity(EntityHitResult result) { } if (thrower != null && !hit.is(thrower)) { - DamageSource source; - if (this.hurtEnderman) { - source = this.damageSources().indirectMagic(this, thrower); - } else { - source = this.damageSources().thrown(this, thrower); - } + DamageSource source = InitDamage.danmakuDamage(thrower, this); hit.hurt(source, this.getDamage()); if (this.impedingLevel > 0 && hit instanceof LivingEntity livingEntity) { int duration = (20 + this.impedingLevel * 10) * 20; @@ -166,4 +162,8 @@ public EntityDanmaku setHurtEnderman(boolean hurtEnderman) { this.hurtEnderman = hurtEnderman; return this; } + + public boolean isHurtEnderman() { + return hurtEnderman; + } } diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/entity/task/TaskNormalFarm.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/entity/task/TaskNormalFarm.java index 971a8051d..acf3b85b3 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/entity/task/TaskNormalFarm.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/entity/task/TaskNormalFarm.java @@ -2,11 +2,14 @@ import com.github.tartaricacid.touhoulittlemaid.TouhouLittleMaid; import com.github.tartaricacid.touhoulittlemaid.api.task.IFarmTask; -import com.github.tartaricacid.touhoulittlemaid.datagen.TagItem; +import com.github.tartaricacid.touhoulittlemaid.datagen.tag.TagItem; import com.github.tartaricacid.touhoulittlemaid.entity.passive.EntityMaid; import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.*; +import net.minecraft.world.item.HoeItem; +import net.minecraft.world.item.ItemNameBlockItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/event/CopyEntityIdEvent.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/event/CopyEntityIdEvent.java new file mode 100644 index 000000000..4eb9310b7 --- /dev/null +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/event/CopyEntityIdEvent.java @@ -0,0 +1,43 @@ +package com.github.tartaricacid.touhoulittlemaid.event; + +import com.github.tartaricacid.touhoulittlemaid.TouhouLittleMaid; +import com.github.tartaricacid.touhoulittlemaid.init.InitItems; +import net.minecraft.client.Minecraft; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.loading.FMLEnvironment; +import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent; + +@EventBusSubscriber(modid = TouhouLittleMaid.MOD_ID) +public final class CopyEntityIdEvent { + @SubscribeEvent + public static void copyEntityId(PlayerInteractEvent.EntityInteract event) { + Player player = event.getEntity(); + InteractionHand hand = event.getHand(); + Entity target = event.getTarget(); + if (player.getItemInHand(hand).is(InitItems.ENTITY_ID_COPY.get())) { + if (player.level.isClientSide && FMLEnvironment.dist == Dist.CLIENT) { + copyEntityId(player, target); + } + event.setCanceled(true); + } + } + + @OnlyIn(Dist.CLIENT) + private static void copyEntityId(Player player, Entity target) { + ResourceLocation key = BuiltInRegistries.ENTITY_TYPE.getKey(target.getType()); + if (key == null) { + return; + } + Minecraft.getInstance().keyboardHandler.setClipboard(key.toString()); + player.sendSystemMessage(Component.translatable("message.touhou_little_maid.entity_id_copy.copy", key.toString())); + } +} diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/init/InitCreativeTabs.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/init/InitCreativeTabs.java index 9423d4d97..a551a6955 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/init/InitCreativeTabs.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/init/InitCreativeTabs.java @@ -86,6 +86,7 @@ public class InitCreativeTabs { output.accept(CHAIR_SHOW.get()); output.accept(BROOM.get()); output.accept(SCARECROW.get()); + output.accept(ENTITY_ID_COPY.get()); if (FMLEnvironment.dist == Dist.CLIENT) { ItemEntityPlaceholder.fillItemCategory(output); } diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/init/InitDamage.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/init/InitDamage.java new file mode 100644 index 000000000..0801398c3 --- /dev/null +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/init/InitDamage.java @@ -0,0 +1,25 @@ +package com.github.tartaricacid.touhoulittlemaid.init; + +import com.github.tartaricacid.touhoulittlemaid.TouhouLittleMaid; +import com.github.tartaricacid.touhoulittlemaid.entity.projectile.EntityDanmaku; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.entity.Entity; + +public final class InitDamage { + public static final ResourceKey DANMAKU = ResourceKey.create(Registries.DAMAGE_TYPE, ResourceLocation.fromNamespaceAndPath(TouhouLittleMaid.MOD_ID, "danmaku")); + public static final ResourceKey DANMAKU_ENDER_KILLER = ResourceKey.create(Registries.DAMAGE_TYPE, ResourceLocation.fromNamespaceAndPath(TouhouLittleMaid.MOD_ID, "danmaku_ender_killer")); + + public static DamageSource danmakuDamage(Entity thrower, EntityDanmaku danmaku) { + Registry damageTypes = thrower.level.registryAccess().registryOrThrow(Registries.DAMAGE_TYPE); + if (danmaku.isHurtEnderman()) { + return new DamageSource(damageTypes.getHolderOrThrow(DANMAKU_ENDER_KILLER), thrower); + } else { + return new DamageSource(damageTypes.getHolderOrThrow(DANMAKU), thrower); + } + } +} diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/init/InitItems.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/init/InitItems.java index b2f4c4fb9..f3a067293 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/init/InitItems.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/init/InitItems.java @@ -69,6 +69,8 @@ public final class InitItems { public static DeferredItem PICNIC_BASKET = ITEMS.register("picnic_basket", () -> new ItemPicnicBasket(InitBlocks.PICNIC_MAT.get())); public static DeferredItem SCARECROW = ITEMS.register("scarecrow", () -> new BlockItem(InitBlocks.SCARECROW.get(), new Item.Properties())); public static DeferredItem SERVANT_BELL = ITEMS.register("servant_bell", ItemServantBell::new); + public static DeferredItem ENTITY_ID_COPY = ITEMS.register("entity_id_copy", ItemEntityIdCopy::new); + @SuppressWarnings("deprecation") public static DeferredItem MONSTER_LIST = ITEMS.register("monster_list", ItemMonsterList::new); public static DeferredItem MAID_SPAWN_EGG = ITEMS.register("maid_spawn_egg", () -> new DeferredSpawnEggItem(() -> EntityMaid.TYPE, 0x4a6195, 0xffffff, new Item.Properties())); diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/item/ItemEntityIdCopy.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/item/ItemEntityIdCopy.java new file mode 100644 index 000000000..782e8c909 --- /dev/null +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/item/ItemEntityIdCopy.java @@ -0,0 +1,20 @@ +package com.github.tartaricacid.touhoulittlemaid.item; + +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; + +import java.util.List; + +public class ItemEntityIdCopy extends Item { + public ItemEntityIdCopy() { + super(new Item.Properties().stacksTo(1)); + } + + @Override + public void appendHoverText(ItemStack pStack, TooltipContext pContext, List components, TooltipFlag pIsAdvanced) { + components.add(Component.translatable("tooltips.touhou_little_maid.entity_id_copy.desc").withStyle(ChatFormatting.GRAY)); + } +} diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/network/message/GomokuServerPackage.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/network/message/GomokuServerPackage.java index b00beb73e..d62a536d2 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/network/message/GomokuServerPackage.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/network/message/GomokuServerPackage.java @@ -49,7 +49,7 @@ public static void handle(GomokuServerPackage message, IPayloadContext context) if (level instanceof ServerLevel serverLevel && serverLevel.getEntity(gomoku.getSitId()) instanceof EntitySit sit && sit.getFirstPassenger() instanceof EntityMaid maid) { maid.swing(InteractionHand.MAIN_HAND); if (!gomoku.isInProgress()) { - maid.getGameRecordManager().markStatue(false); + maid.getGameRecordManager().markStatue(true); } } level.playSound(null, message.pos, InitSounds.GOMOKU.get(), SoundSource.BLOCKS, 1.0f, 0.8F + level.random.nextFloat() * 0.4F); diff --git a/src/main/resources/assets/touhou_little_maid/lang/en_us.json b/src/main/resources/assets/touhou_little_maid/lang/en_us.json index c6a8a4fb6..579989d10 100644 --- a/src/main/resources/assets/touhou_little_maid/lang/en_us.json +++ b/src/main/resources/assets/touhou_little_maid/lang/en_us.json @@ -167,12 +167,13 @@ "item.touhou_little_maid.servant_bell": "Servant Bell", "item.touhou_little_maid.monster_list": "Monster List (Removed)", "item.touhou_little_maid.advancement_icon": "Advancement Icon", + "item.touhou_little_maid.entity_id_copy": "Entity ID Copier", "enchantment.touhou_little_maid.impeding": "Impeding Danmaku", "enchantment.touhou_little_maid.impeding.desc": "Danmaku can inflict slowness I - IV on the enemy", "enchantment.touhou_little_maid.speedy": "Speedy Danmaku", "enchantment.touhou_little_maid.speedy.desc": "Danmaku travel x2 regular speed at lv I and x3 at lv II", "enchantment.touhou_little_maid.enders_ender": "Ender's Ender", - "enchantment.touhou_little_maid.enders_ender.desc": "Danmaku can actually hit Enderman and damage them without cause them to teleport away", + "enchantment.touhou_little_maid.enders_ender.desc": "Danmaku can actually damage Enderman or Ender Dragon", "block.touhou_little_maid.maid_bed": "Maid Bed", "block.touhou_little_maid.garage_kit": "Garage Kit", "block.touhou_little_maid.maid_beacon": "Shrine Lamp", @@ -244,6 +245,7 @@ "tooltips.touhou_little_maid.servant_bell.desc.2": "- After mark, you can teleport the bound maid after using it.", "tooltips.touhou_little_maid.monster_list.desc": "Version 1.1.13 and later removed this item and can no longer be used", "tooltips.touhou_little_maid.advancement_icon.desc": "For advancement icon display only", + "tooltips.touhou_little_maid.entity_id_copy.desc": "It is used to copy the entity ID to facilitate filling in the attack list", "overlay.touhou_little_maid.compass.tips": "Right click to display the maid's task area", "overlay.touhou_little_maid.golden_apple.tips": "Golden apple shift click can be fed to maid", "overlay.touhou_little_maid.potion.tips": "Potion shift click can be fed to maid", @@ -462,15 +464,14 @@ "message.touhou_little_maid.cchess.reset": "Right click on the right black area to reset", "message.touhou_little_maid.wchess.move_limit": "Draw by 50-Move Rule!", "message.touhou_little_maid.wchess.reset": "Right click on the light yellow area on either side to reset", + "message.touhou_little_maid.entity_id_copy.copy": "The id of the entity has been copied: %s", "commands.touhou_little_maid.pack.reload.info": "All model pack have been reloaded!", "commands.touhou_little_maid.power.handle.info": "%d players's power point is changed", "commands.touhou_little_maid.maid_num.handle.info": "%d players's maid num is changed", "commands.touhou_little_maid.power.get.info": "%s: %.2f", "commands.touhou_little_maid.maid_num.get.info": "%s: %d", "argument.touhou_little_maid.handle_type.invalid": "Handle type is invalid", - "death.touhou_little_maid.attack.danmaku.1": "%1$s was killed by %2$s using danmaku", - "death.touhou_little_maid.attack.danmaku.2": "%1$s was shot by %2$s using danmaku", - "death.touhou_little_maid.attack.danmaku.3": "%1$s was pummeled by %2$s using danmaku", + "death.attack.touhou_little_maid.danmaku": "%1$s was pummeled by %2$s using danmaku", "config.touhou_little_maid.maid": "Maid", "config.touhou_little_maid.maid.maid_tamed_item": "Maid Tamed Item", "config.touhou_little_maid.maid.maid_tamed_item.tooltip": "The item that can tamed maid \nUse the registered name of the item directly or write tag name with # as prefix", @@ -642,6 +643,8 @@ "button.touhou_little_maid.maid.ai.tamed": "Tamed", "button.touhou_little_maid.maid.ai.item_get": "Get Item", "button.touhou_little_maid.maid.ai.death": "Death", + "button.touhou_little_maid.maid.ai.game_win": "Maid Win", + "button.touhou_little_maid.maid.ai.game_lost": "Maid Lost", "button.touhou_little_maid.maid.environment.hot": "Feel Hot", "button.touhou_little_maid.maid.environment.cold": "Feel Cold", "button.touhou_little_maid.maid.environment.rain": "Rain", @@ -672,8 +675,8 @@ "subtitle.touhou_little_maid.maid.ai.tamed": "Maid Tamed Sound", "subtitle.touhou_little_maid.maid.ai.item_get": "Maid Get Item Sound", "subtitle.touhou_little_maid.maid.ai.death": "Maid Death Sound", - "subtitle.touhou_little_maid.maid.ai.game_win": "Game Win Sound", - "subtitle.touhou_little_maid.maid.ai.game_lost": "Game Lost Sound", + "subtitle.touhou_little_maid.maid.ai.game_win": "Maid Win Sound", + "subtitle.touhou_little_maid.maid.ai.game_lost": "Maid Lost Sound", "subtitle.touhou_little_maid.maid.environment.hot": "Maid Feel Hot Sound", "subtitle.touhou_little_maid.maid.environment.cold": "Maid Feel Cold Sound", "subtitle.touhou_little_maid.maid.environment.rain": "Maid Rain Sound", diff --git a/src/main/resources/assets/touhou_little_maid/lang/zh_cn.json b/src/main/resources/assets/touhou_little_maid/lang/zh_cn.json index e9177fccc..ca54079ef 100644 --- a/src/main/resources/assets/touhou_little_maid/lang/zh_cn.json +++ b/src/main/resources/assets/touhou_little_maid/lang/zh_cn.json @@ -167,12 +167,13 @@ "item.touhou_little_maid.servant_bell": "仆人铃", "item.touhou_little_maid.monster_list": "妖怪名单(移除)", "item.touhou_little_maid.advancement_icon": "进度图标", + "item.touhou_little_maid.entity_id_copy": "实体 ID 复制器", "enchantment.touhou_little_maid.impeding": "阻碍", "enchantment.touhou_little_maid.impeding.desc": "弹幕会对敌方造成缓慢 I - IV 的效果", "enchantment.touhou_little_maid.speedy": "极速", "enchantment.touhou_little_maid.speedy.desc": "lv I 会将弹幕速度提升两倍,lv II 会提升三倍", "enchantment.touhou_little_maid.enders_ender": "末影终结者", - "enchantment.touhou_little_maid.enders_ender.desc": "弹幕会击中末影人并伤害它们,而不会导致末影人传送", + "enchantment.touhou_little_maid.enders_ender.desc": "弹幕能够伤害末影人和末影龙", "block.touhou_little_maid.maid_bed": "女仆床", "block.touhou_little_maid.garage_kit": "手办", "block.touhou_little_maid.maid_beacon": "神社庭灯", @@ -244,6 +245,7 @@ "tooltips.touhou_little_maid.servant_bell.desc.2": "- 绑定后,右击使用即可召回女仆。", "tooltips.touhou_little_maid.monster_list.desc": "自 1.1.13 版本后移除此物品", "tooltips.touhou_little_maid.advancement_icon.desc": "仅用于进度图标显示的物品", + "tooltips.touhou_little_maid.entity_id_copy.desc": "用于复制实体 ID,方便填写女仆攻击列表", "overlay.touhou_little_maid.compass.tips": "右击可以显示女仆的任务区域", "overlay.touhou_little_maid.golden_apple.tips": "手持金苹果可以使用 Shift 右击喂给女仆", "overlay.touhou_little_maid.potion.tips": "手持药水可以使用 Shift 右击喂给女仆", @@ -462,15 +464,14 @@ "message.touhou_little_maid.cchess.reset": "右击棋盘右侧黑色区域重置", "message.touhou_little_maid.wchess.move_limit": "五十回合限制!", "message.touhou_little_maid.wchess.reset": "右击任意一侧的淡黄色区域进行重置", + "message.touhou_little_maid.entity_id_copy.copy": "该实体 ID 已经被复制:%s", "commands.touhou_little_maid.pack.reload.info": "所有的模型包已经重载!", "commands.touhou_little_maid.power.handle.info": "修改了 %d 位玩家的 P 点", "commands.touhou_little_maid.maid_num.handle.info": "修改了 %d 位玩家的女仆数量", "commands.touhou_little_maid.power.get.info": "%s: %.2f", "commands.touhou_little_maid.maid_num.get.info": "%s: %d", "argument.touhou_little_maid.handle_type.invalid": "不合法的 Handle 类型", - "death.touhou_little_maid.attack.danmaku.1": "%1$s被%2$s用弹幕杀死了", - "death.touhou_little_maid.attack.danmaku.2": "%1$s被%2$s用弹幕射杀", - "death.touhou_little_maid.attack.danmaku.3": "%1$s被%2$s的弹幕打得满身疮痍", + "death.attack.touhou_little_maid.danmaku": "%1$s被%2$s的弹幕打得满身疮痍", "config.touhou_little_maid.maid": "女仆", "config.touhou_little_maid.maid.maid_tamed_item": "驯服女仆的物品", "config.touhou_little_maid.maid.maid_tamed_item.tooltip": "这个物品可以右击女仆进行驯服", @@ -642,6 +643,8 @@ "button.touhou_little_maid.maid.ai.tamed": "被驯服", "button.touhou_little_maid.maid.ai.item_get": "拾起物件", "button.touhou_little_maid.maid.ai.death": "死亡", + "button.touhou_little_maid.maid.ai.game_win": "女仆获胜", + "button.touhou_little_maid.maid.ai.game_lost": "女仆失败", "button.touhou_little_maid.maid.environment.hot": "热", "button.touhou_little_maid.maid.environment.cold": "冷", "button.touhou_little_maid.maid.environment.rain": "下雨", @@ -672,8 +675,8 @@ "subtitle.touhou_little_maid.maid.ai.tamed": "女仆:被驯服", "subtitle.touhou_little_maid.maid.ai.item_get": "女仆:拾起物件", "subtitle.touhou_little_maid.maid.ai.death": "女仆:死亡", - "subtitle.touhou_little_maid.maid.ai.game_win": "赢棋", - "subtitle.touhou_little_maid.maid.ai.game_lost": "输棋", + "subtitle.touhou_little_maid.maid.ai.game_win": "女仆:获胜", + "subtitle.touhou_little_maid.maid.ai.game_lost": "女仆:失败", "subtitle.touhou_little_maid.maid.environment.hot": "女仆:热", "subtitle.touhou_little_maid.maid.environment.cold": "女仆:冷", "subtitle.touhou_little_maid.maid.environment.rain": "女仆:下雨", diff --git a/src/main/resources/assets/touhou_little_maid/models/item/entity_id_copy.json b/src/main/resources/assets/touhou_little_maid/models/item/entity_id_copy.json new file mode 100644 index 000000000..ee19ade8a --- /dev/null +++ b/src/main/resources/assets/touhou_little_maid/models/item/entity_id_copy.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "touhou_little_maid:item/entity_id_copy" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/touhou_little_maid/textures/item/entity_id_copy.png b/src/main/resources/assets/touhou_little_maid/textures/item/entity_id_copy.png new file mode 100644 index 000000000..b55d472f5 Binary files /dev/null and b/src/main/resources/assets/touhou_little_maid/textures/item/entity_id_copy.png differ diff --git a/src/main/resources/assets/touhou_little_maid/tlm_custom_pack/touhou_little_maid-1.0.0.zip b/src/main/resources/assets/touhou_little_maid/tlm_custom_pack/touhou_little_maid-1.0.0.zip index de0ee6ffe..4a6204932 100644 Binary files a/src/main/resources/assets/touhou_little_maid/tlm_custom_pack/touhou_little_maid-1.0.0.zip and b/src/main/resources/assets/touhou_little_maid/tlm_custom_pack/touhou_little_maid-1.0.0.zip differ diff --git a/src/main/resources/data/minecraft/tags/items/piglin_loved.json b/src/main/resources/data/minecraft/tags/items/piglin_loved.json new file mode 100644 index 000000000..1bde5e1f5 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/piglin_loved.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "touhou_little_maid:servant_bell", + "touhou_little_maid:trumpet" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/touhou_little_maid/damage_type/danmaku.json b/src/main/resources/data/touhou_little_maid/damage_type/danmaku.json new file mode 100644 index 000000000..ebf7daa8a --- /dev/null +++ b/src/main/resources/data/touhou_little_maid/damage_type/danmaku.json @@ -0,0 +1,7 @@ +{ + "message_id": "touhou_little_maid.danmaku", + "scaling": "when_caused_by_living_non_player", + "exhaustion": 0.1, + "effects": "hurt", + "death_message_type": "default" +} \ No newline at end of file diff --git a/src/main/resources/data/touhou_little_maid/damage_type/danmaku_ender_killer.json b/src/main/resources/data/touhou_little_maid/damage_type/danmaku_ender_killer.json new file mode 100644 index 000000000..ebf7daa8a --- /dev/null +++ b/src/main/resources/data/touhou_little_maid/damage_type/danmaku_ender_killer.json @@ -0,0 +1,7 @@ +{ + "message_id": "touhou_little_maid.danmaku", + "scaling": "when_caused_by_living_non_player", + "exhaustion": 0.1, + "effects": "hurt", + "death_message_type": "default" +} \ No newline at end of file diff --git a/src/main/resources/data/twilightforest/tags/damage_type/breaks_lich_shields.json b/src/main/resources/data/twilightforest/tags/damage_type/breaks_lich_shields.json new file mode 100644 index 000000000..93c4360db --- /dev/null +++ b/src/main/resources/data/twilightforest/tags/damage_type/breaks_lich_shields.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "touhou_little_maid:danmaku", + "touhou_little_maid:danmaku_ender_killer" + ] +} \ No newline at end of file