From 52f30a4275877abb1bdaf95c72e37805ada5ce7d Mon Sep 17 00:00:00 2001 From: 3944Realms Date: Tue, 26 Nov 2024 17:21:15 +0800 Subject: [PATCH] =?UTF-8?q?2024/11/26=20=E8=81=94=E5=8A=A8=E5=86=85?= =?UTF-8?q?=E5=AE=B9#2=20=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=BA=9B=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../211976637bfb5e111401ad2bfb58570ef2fb3dff | 4 +-- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 6 +++- .../a1129211d3ad6d65c101bb152ae8c66c8256bccb | 4 +-- .../e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 | 3 +- .../ed628fd843215c1bf29a07b9cbd1b26a6af0636d | 4 +-- .../assets/leashedplayer/lang/en_us.json | 8 +++++ .../assets/leashedplayer/lang/zh_cn.json | 8 +++++ .../assets/leashedplayer/lang/zh_tw.json | 8 +++++ .../advancement/nestle_arrow.json | 35 +++++++++++++++++++ .../recipes/misc/nestle_rope_arrow.json | 32 +++++++++++++++++ .../recipe/nestle_rope_arrow.json | 16 +++++++++ ...stle_rope_arrow_with_leash_rope_arrow.json | 32 +++++++++++++++++ ...stle_rope_arrow_with_leash_rope_arrow.json | 16 +++++++++ .../leashedplayer/ClientEventHandler.java | 3 +- .../leashedplayer/CommonEventHandler.java | 19 +++++++++- .../leashedplayer/content/ModKeyMapping.java | 24 ++++++++++++- .../content/entities/LeashRopeArrow.java | 7 +++- .../content/items/ModItemRegister.java | 2 +- .../content/items/type/LeadBreakerItem.java | 28 ++++++++++++--- .../ModAdvancementKey.java | 1 + .../LanguageAndOtherData/ModLangKeyValue.java | 11 +++++- .../generator/ModAdvancementGenerator.java | 13 +++++++ .../datagen/provider/ModRecipeProvider.java | 14 ++++++++ 23 files changed, 279 insertions(+), 19 deletions(-) create mode 100644 src/generated/resources/data/leashedplayer/advancement/nestle_arrow.json create mode 100644 src/generated/resources/data/leashedplayer/advancement/recipes/misc/nestle_rope_arrow.json create mode 100644 src/generated/resources/data/leashedplayer/recipe/nestle_rope_arrow.json create mode 100644 src/generated/resources/data/minecraft/advancement/recipes/misc/nestle_rope_arrow_with_leash_rope_arrow.json create mode 100644 src/generated/resources/data/minecraft/recipe/nestle_rope_arrow_with_leash_rope_arrow.json diff --git a/src/generated/resources/.cache/211976637bfb5e111401ad2bfb58570ef2fb3dff b/src/generated/resources/.cache/211976637bfb5e111401ad2bfb58570ef2fb3dff index 5c55c62..0e215dc 100644 --- a/src/generated/resources/.cache/211976637bfb5e111401ad2bfb58570ef2fb3dff +++ b/src/generated/resources/.cache/211976637bfb5e111401ad2bfb58570ef2fb3dff @@ -1,2 +1,2 @@ -// 1.21 2024-11-25T23:24:58.9917691 Languages: en_us for mod: leashedplayer -878249de532f1f04ea0ec260372cdcff2c157dc3 assets/leashedplayer/lang/en_us.json +// 1.21 2024-11-26T17:09:48.5933988 Languages: en_us for mod: leashedplayer +57ac9ce831572aed1cf8738231d163e08de00da8 assets/leashedplayer/lang/en_us.json diff --git a/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 736e1bb..690f8de 100644 --- a/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,10 +1,14 @@ -// 1.21 2024-11-16T17:30:08.038895 Recipes +// 1.21 2024-11-26T16:39:25.2156177 Recipes 13ebe9a580731296eb10c05d1844657d58e07cc1 data/leashedplayer/advancement/recipes/misc/amethyst_shears.json 1b45d1ad8dc73f1787c97777ad13d9771c9e0ad1 data/leashedplayer/advancement/recipes/misc/leash_rope_arrow.json +a89ec35176f84a580181c5839d6f249e482a65a9 data/leashedplayer/advancement/recipes/misc/nestle_rope_arrow.json 04bd2d8a0c7288776da2119eb9a9f9cf694be1b6 data/leashedplayer/recipe/amethyst_shears.json 974d74538b3e172946f2e169036b453b6eb6bc0a data/leashedplayer/recipe/leash_rope_arrow.json +093bae9d2e24a901ce8450d802ad5d142d1d74ed data/leashedplayer/recipe/nestle_rope_arrow.json +8de575d00dcc51fce8ebfa2542e193ffda1bafa8 data/minecraft/advancement/recipes/misc/nestle_rope_arrow_with_leash_rope_arrow.json c0e05f359296d3e28573fa1b205ac44736376622 data/minecraft/advancement/recipes/misc/spectral_leash_rope_arrow_with_glowstone_dust.json 131fcbef603bfde7204d8e1ad15e4544696926bf data/minecraft/advancement/recipes/misc/spectral_leash_rope_arrow_with_leash_rope_arrow.json +fb35ec6670c3711b7e1d0e96f39ad914cb2419ae data/minecraft/recipe/nestle_rope_arrow_with_leash_rope_arrow.json bb5909aa91d878c8f0ef9999881cfe89532509dd data/minecraft/recipe/spectral_leash_rope_arrow_with_glowstone_dust.json a1381da885fbedec01243c78afbb0a50ca803ee4 data/minecraft/recipe/spectral_leash_rope_arrow_with_leash_rope_arrow.json 4dffdb7a2a537b409d1ec2630d9b74300649e1d8 data/minecraft/recipe/tipped_leash_rope_arrow_a.json diff --git a/src/generated/resources/.cache/a1129211d3ad6d65c101bb152ae8c66c8256bccb b/src/generated/resources/.cache/a1129211d3ad6d65c101bb152ae8c66c8256bccb index c397b45..3ff063d 100644 --- a/src/generated/resources/.cache/a1129211d3ad6d65c101bb152ae8c66c8256bccb +++ b/src/generated/resources/.cache/a1129211d3ad6d65c101bb152ae8c66c8256bccb @@ -1,2 +1,2 @@ -// 1.21 2024-11-25T23:24:58.9852241 Languages: zh_cn for mod: leashedplayer -af57838d87cf64232255fdd3559cca32c9fe1234 assets/leashedplayer/lang/zh_cn.json +// 1.21 2024-11-26T17:09:48.5933988 Languages: zh_cn for mod: leashedplayer +3920364b756e9b539f175e6ac73a363020a232dd assets/leashedplayer/lang/zh_cn.json diff --git a/src/generated/resources/.cache/e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 b/src/generated/resources/.cache/e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 index 8449ea1..fd4d023 100644 --- a/src/generated/resources/.cache/e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 +++ b/src/generated/resources/.cache/e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 @@ -1,4 +1,4 @@ -// 1.21 2024-11-11T13:22:05.9272287 Advancements +// 1.21 2024-11-26T16:52:31.259654 Advancements 4d97adba079f1966090a52443bb439319f550680 data/leashedplayer/advancement/advancement_leash_arrow.json f16184b81ea35a0fbd8f2c49b085a96c32818c69 data/leashedplayer/advancement/dog_running_player.json bce12ed339b3b0fded263ba039f7a4e6fcfb84ca data/leashedplayer/advancement/follow_arrow.json @@ -8,5 +8,6 @@ a69a455855fb6dd8a8ac131a55099de5de45d7c4 data/leashedplayer/advancement/leash_ar 133f844ffafd37b9ba57cafa96350f035cac57f9 data/leashedplayer/advancement/leash_start.json 2d8bce7fd078f9cc6b73b77f2fbab30e6cc197f4 data/leashedplayer/advancement/leash_terminator.json 4e567c22e18462ad367fe1817140d1ffa13a6294 data/leashedplayer/advancement/neo_fox.json +95486932f200c278f23444adca2e328a82e7f863 data/leashedplayer/advancement/nestle_arrow.json 4b0bcf6b372f52e954edcef37a6b04435ec2b4e8 data/leashedplayer/advancement/no_leash.json 72f40eb5816d1e8c296bdf4df6b599c15ba7e7e9 data/leashedplayer/advancement/tipped_leash_arrow.json diff --git a/src/generated/resources/.cache/ed628fd843215c1bf29a07b9cbd1b26a6af0636d b/src/generated/resources/.cache/ed628fd843215c1bf29a07b9cbd1b26a6af0636d index cd4114b..40dd397 100644 --- a/src/generated/resources/.cache/ed628fd843215c1bf29a07b9cbd1b26a6af0636d +++ b/src/generated/resources/.cache/ed628fd843215c1bf29a07b9cbd1b26a6af0636d @@ -1,2 +1,2 @@ -// 1.21 2024-11-25T23:24:58.9831886 Languages: zh_tw for mod: leashedplayer -3e36d57b135382366fe919c8ce4aac57866d6ee8 assets/leashedplayer/lang/zh_tw.json +// 1.21 2024-11-26T17:09:48.5933988 Languages: zh_tw for mod: leashedplayer +08058702caab57d64d479cf22d4b5c1e10c4110d assets/leashedplayer/lang/zh_tw.json diff --git a/src/generated/resources/assets/leashedplayer/lang/en_us.json b/src/generated/resources/assets/leashedplayer/lang/en_us.json index 5274a52..ad24ad5 100644 --- a/src/generated/resources/assets/leashedplayer/lang/en_us.json +++ b/src/generated/resources/assets/leashedplayer/lang/en_us.json @@ -17,6 +17,8 @@ "advancement.leashedplayer.leashed_self.desc": "“Restrain oneself with a rope", "advancement.leashedplayer.neo_fox": "NEOFORGE!", "advancement.leashedplayer.neo_fox.desc": "It seems can be equipped.", + "advancement.leashedplayer.nestle_arrow": "Arrow with the Power of Nestle!", + "advancement.leashedplayer.nestle_arrow.desc": "The Power of Nestle!!!", "advancement.leashedplayer.no_leash": "Don't tie me up", "advancement.leashedplayer.no_leash.desc": "You cannot be leashed by ANY", "advancement.leashedplayer.tipped_leash_arrow": "God said there should be more arrows", @@ -64,6 +66,9 @@ "jukebox_song.leashedplayer.what_does_the_fox_say": "What does the fox say?", "key.leashedplayer.apply_talkarea_preference": "Apply TalkArea Preference", "key.leashedplayer.category": "Leashed Player", + "key.leashedplayer.leash_length.add": "Increase the Length of Leash Rope", + "key.leashedplayer.leash_length.not_support_to_not_player_entity": "Only work on Players", + "key.leashedplayer.leash_length.sub": "Decrease the Length of Leash Rope", "leashedplayer.chat.none_heard_you": "Nobody heard your message", "leashedplayer.command.chat.message.no_right": "You haven't the right to do that!", "leashedplayer.command.chat.message.talkarea.current_config": "%s 's §6TalkArea Current§7:§e %d §6blocks §f(§aPrefence§7:§e %d §ablocks§f)§r", @@ -92,6 +97,9 @@ "leashedplayer.command.motion.message.multiply.successful": "§bMultiply Successfully.§a%s§7:§f[§eVec§7: §a(§f%f§7,§f%f§7,§f%f§a)§f]§r", "leashedplayer.command.motion.message.setter.successful": "§bSet Successfully.§a%s§7:§f[§eVec§7: §a(§f%f§7,§f%f§7,§f%f§a)§f]§r", "leashedplayer.lead_breaker.item.desc": "§7can break the link of leash", + "leashedplayer.lead_breaker.item.use_fai": "§cFailed to break §f%1$s§c 's Leashed Link to §f%2$s", + "leashedplayer.lead_breaker.item.use_suf": "§aSuccessfully break §f%1$s§a 's Leashed Link to §f%2$s ", + "leashedplayer.leash_rope_arrow.try_to_pickup.push_shift_tip": "§aPush §f§lShift§a to pick up quickly", "multiplayer.disconnect.addiction": "You've triggered the anti-addiction mechanic, and you'll come back when you rest!", "painting.leashedplayer.group_photo.author": "§9Leisure §4Time §eDock§r", "painting.leashedplayer.group_photo.title": "§dGroup Photo §7[§6memorable§7]§r", diff --git a/src/generated/resources/assets/leashedplayer/lang/zh_cn.json b/src/generated/resources/assets/leashedplayer/lang/zh_cn.json index db9aeac..9633a34 100644 --- a/src/generated/resources/assets/leashedplayer/lang/zh_cn.json +++ b/src/generated/resources/assets/leashedplayer/lang/zh_cn.json @@ -17,6 +17,8 @@ "advancement.leashedplayer.leashed_self.desc": "用拴绳拴住自己", "advancement.leashedplayer.neo_fox": "NEOFORGE!", "advancement.leashedplayer.neo_fox.desc": "似乎可以戴头上", + "advancement.leashedplayer.nestle_arrow": "贴贴之箭!", + "advancement.leashedplayer.nestle_arrow.desc": "贴贴之力!!!", "advancement.leashedplayer.no_leash": "勿拴我", "advancement.leashedplayer.no_leash.desc": "你不会被任何东西拴住", "advancement.leashedplayer.tipped_leash_arrow": "神说要有更多箭矢", @@ -64,6 +66,9 @@ "jukebox_song.leashedplayer.what_does_the_fox_say": "狐狸是怎么叫的?", "key.leashedplayer.apply_talkarea_preference": "应用可见区域预设", "key.leashedplayer.category": "可拴玩家", + "key.leashedplayer.leash_length.add": "增加拴绳长度", + "key.leashedplayer.leash_length.not_support_to_not_player_entity": "只在玩家身上有效", + "key.leashedplayer.leash_length.sub": "减小拴绳长度", "leashedplayer.chat.none_heard_you": "沒有人接收到你的消息", "leashedplayer.command.chat.message.no_right": "你无权这样做!", "leashedplayer.command.chat.message.talkarea.current_config": "%s§6目前聊天区域可见半径设置§7:§e %d §6格 §f(§a默认值§7:§e %d §a格§f)§r", @@ -92,6 +97,9 @@ "leashedplayer.command.motion.message.multiply.successful": "§b倍乘成功.§a%s§7:§f[§e加速度§7:§a(§f%f§7,§f%f§7,§f%f§a)§f]§r", "leashedplayer.command.motion.message.setter.successful": "§b设置成功.§a%s§7:§f[§e加速度§7:§a(§f%f§7,§f%f§7,§f%f§a)§f]§r", "leashedplayer.lead_breaker.item.desc": "§7可以破坏拴绳链接", + "leashedplayer.lead_breaker.item.use_fai": "§c无法剪断§f%2$s§c对§f%1$s§c拴绳链接", + "leashedplayer.lead_breaker.item.use_suf": "§a成功剪断§f%2$s§a对§f%1$s§a拴绳链接", + "leashedplayer.leash_rope_arrow.try_to_pickup.push_shift_tip": "§a按下§f§lShift键§a以加快拾取", "multiplayer.disconnect.addiction": "你触发了防沉迷机制,休息会再来吧!", "painting.leashedplayer.group_photo.author": "§9闲趣§4时§e坞§r", "painting.leashedplayer.group_photo.title": "§d集体照 §7[§6纪念§7]§r", diff --git a/src/generated/resources/assets/leashedplayer/lang/zh_tw.json b/src/generated/resources/assets/leashedplayer/lang/zh_tw.json index 128a41c..e3ae2eb 100644 --- a/src/generated/resources/assets/leashedplayer/lang/zh_tw.json +++ b/src/generated/resources/assets/leashedplayer/lang/zh_tw.json @@ -17,6 +17,8 @@ "advancement.leashedplayer.leashed_self.desc": "用栓繩拴住自己", "advancement.leashedplayer.neo_fox": "NEOFORGE!", "advancement.leashedplayer.neo_fox.desc": "似乎可以戴著", + "advancement.leashedplayer.nestle_arrow": "貼貼之箭!", + "advancement.leashedplayer.nestle_arrow.desc": "貼貼之力!!!", "advancement.leashedplayer.no_leash": "請恁勿拴唔", "advancement.leashedplayer.no_leash.desc": "恁不會被任何拴住", "advancement.leashedplayer.tipped_leash_arrow": "神說要有更多箭矢", @@ -64,6 +66,9 @@ "jukebox_song.leashedplayer.what_does_the_fox_say": "狐狸是怎麽叫的?", "key.leashedplayer.apply_talkarea_preference": "應用設置可見區域預設", "key.leashedplayer.category": "可拴玩家", + "key.leashedplayer.leash_length.add": "增加拴繩長度", + "key.leashedplayer.leash_length.not_support_to_not_player_entity": "僅對玩家有效", + "key.leashedplayer.leash_length.sub": "減小拴繩長度", "leashedplayer.chat.none_heard_you": "無人接收到你的訊息", "leashedplayer.command.chat.message.no_right": "你無權這麽做!", "leashedplayer.command.chat.message.talkarea.current_config": "%s§6目前可見訊息聊天半徑設置§7:§e%d §6格 §f(§a默認值§7:§e%d §a格§f)§r", @@ -92,6 +97,9 @@ "leashedplayer.command.motion.message.multiply.successful": "§b倍乘成功.§a%s§7:§f[§e加速度§7:§a(§f%f§7,§f%f§7,§f%f§a)§f]§r", "leashedplayer.command.motion.message.setter.successful": "§b設置成功.§a%s§7:§f[§e加速度§7:§a(§f%f§7,§f%f§7,§f%f§a)§f]§r", "leashedplayer.lead_breaker.item.desc": "§7可以破壞拴繩鏈接", + "leashedplayer.lead_breaker.item.use_fai": "§c未能剪斷§f%2$s§c對§f%1$s§c拴繩鏈接", + "leashedplayer.lead_breaker.item.use_suf": "§a成功剪斷§f%2$s§a對§f%1$s§a拴繩鏈接", + "leashedplayer.leash_rope_arrow.try_to_pickup.push_shift_tip": "§a按下§f§lShift鍵§a以加速拾取", "multiplayer.disconnect.addiction": "你觸發了防沉迷機制,休息會再來吧!", "painting.leashedplayer.group_photo.author": "§9閑趣§4時§e塢§r", "painting.leashedplayer.group_photo.title": "§d集體照 §7[§6紀念§7]§r", diff --git a/src/generated/resources/data/leashedplayer/advancement/nestle_arrow.json b/src/generated/resources/data/leashedplayer/advancement/nestle_arrow.json new file mode 100644 index 0000000..331fc50 --- /dev/null +++ b/src/generated/resources/data/leashedplayer/advancement/nestle_arrow.json @@ -0,0 +1,35 @@ +{ + "parent": "leashedplayer:leash_arrow", + "criteria": { + "has_nestle_rope_arrow": { + "conditions": { + "items": [ + { + "items": "leashedplayer:nestle_rope_arrow" + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "description": { + "translate": "advancement.leashedplayer.nestle_arrow.desc" + }, + "frame": "goal", + "hidden": true, + "icon": { + "count": 1, + "id": "leashedplayer:nestle_rope_arrow" + }, + "title": { + "translate": "advancement.leashedplayer.nestle_arrow" + } + }, + "requirements": [ + [ + "has_nestle_rope_arrow" + ] + ], + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/generated/resources/data/leashedplayer/advancement/recipes/misc/nestle_rope_arrow.json b/src/generated/resources/data/leashedplayer/advancement/recipes/misc/nestle_rope_arrow.json new file mode 100644 index 0000000..5a204cf --- /dev/null +++ b/src/generated/resources/data/leashedplayer/advancement/recipes/misc/nestle_rope_arrow.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_nestle_rope": { + "conditions": { + "items": [ + { + "items": "nestle:nestle_lead" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "leashedplayer:nestle_rope_arrow" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_nestle_rope" + ] + ], + "rewards": { + "recipes": [ + "leashedplayer:nestle_rope_arrow" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/leashedplayer/recipe/nestle_rope_arrow.json b/src/generated/resources/data/leashedplayer/recipe/nestle_rope_arrow.json new file mode 100644 index 0000000..8cfcc5b --- /dev/null +++ b/src/generated/resources/data/leashedplayer/recipe/nestle_rope_arrow.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "nestle:nestle_lead" + }, + { + "item": "minecraft:arrow" + } + ], + "result": { + "count": 1, + "id": "leashedplayer:nestle_rope_arrow" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/advancement/recipes/misc/nestle_rope_arrow_with_leash_rope_arrow.json b/src/generated/resources/data/minecraft/advancement/recipes/misc/nestle_rope_arrow_with_leash_rope_arrow.json new file mode 100644 index 0000000..0b4b493 --- /dev/null +++ b/src/generated/resources/data/minecraft/advancement/recipes/misc/nestle_rope_arrow_with_leash_rope_arrow.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_nestle": { + "conditions": { + "items": [ + { + "items": "nestle:nestle" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:nestle_rope_arrow_with_leash_rope_arrow" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_nestle" + ] + ], + "rewards": { + "recipes": [ + "minecraft:nestle_rope_arrow_with_leash_rope_arrow" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/recipe/nestle_rope_arrow_with_leash_rope_arrow.json b/src/generated/resources/data/minecraft/recipe/nestle_rope_arrow_with_leash_rope_arrow.json new file mode 100644 index 0000000..7f60e74 --- /dev/null +++ b/src/generated/resources/data/minecraft/recipe/nestle_rope_arrow_with_leash_rope_arrow.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "nestle:nestle" + }, + { + "item": "leashedplayer:leash_rope_arrow" + } + ], + "result": { + "count": 1, + "id": "leashedplayer:nestle_rope_arrow" + } +} \ No newline at end of file diff --git a/src/main/java/com/r3944realms/leashedplayer/ClientEventHandler.java b/src/main/java/com/r3944realms/leashedplayer/ClientEventHandler.java index 8e100d1..de17107 100644 --- a/src/main/java/com/r3944realms/leashedplayer/ClientEventHandler.java +++ b/src/main/java/com/r3944realms/leashedplayer/ClientEventHandler.java @@ -4,7 +4,6 @@ import com.r3944realms.leashedplayer.client.renders.entities.*; import com.r3944realms.leashedplayer.content.ModKeyMapping; import com.r3944realms.leashedplayer.content.commands.Command; import com.r3944realms.leashedplayer.content.entities.ModEntityRegister; -import com.r3944realms.leashedplayer.content.entities.NestleRopeArrow; import com.r3944realms.leashedplayer.content.gamerules.GameruleRegistry; import com.r3944realms.leashedplayer.content.gamerules.Server.OpenTOPNeededModeWhenScreenIsNotNull; import com.r3944realms.leashedplayer.content.items.ModItemRegister; @@ -118,6 +117,8 @@ public abstract class ClientEventHandler { @SubscribeEvent public static void registerKeyMapping(RegisterKeyMappingsEvent event) { event.register(ModKeyMapping.KEY_APPLY_TALKAREA_PREFERENCE); + event.register(ModKeyMapping.KEY_ADD_LEASH_LENGTH); + event.register(ModKeyMapping.KEY_SUB_LEASH_LENGTH); } @SubscribeEvent diff --git a/src/main/java/com/r3944realms/leashedplayer/CommonEventHandler.java b/src/main/java/com/r3944realms/leashedplayer/CommonEventHandler.java index 4f4f429..f8060b3 100644 --- a/src/main/java/com/r3944realms/leashedplayer/CommonEventHandler.java +++ b/src/main/java/com/r3944realms/leashedplayer/CommonEventHandler.java @@ -15,6 +15,7 @@ import com.r3944realms.leashedplayer.modInterface.PlayerLeashable; import com.r3944realms.leashedplayer.network.client.BooleanGameRuleValueChangeData; import com.r3944realms.leashedplayer.utils.Logger; import com.r3944realms.leashedplayer.utils.Util; +import io.github.kunosayo.nestle.init.ModCreativeTab; import net.minecraft.ChatFormatting; import net.minecraft.commands.CommandSourceStack; import net.minecraft.core.component.DataComponents; @@ -27,6 +28,7 @@ import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.Leashable; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.animal.Fox; +import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.alchemy.PotionBrewing; @@ -36,7 +38,9 @@ import net.minecraft.world.level.block.DispenserBlock; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; +import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.event.AnvilUpdateEvent; +import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent; import net.neoforged.neoforge.event.RegisterCommandsEvent; import net.neoforged.neoforge.event.brewing.RegisterBrewingRecipesEvent; import net.neoforged.neoforge.event.entity.EntityAttributeCreationEvent; @@ -143,7 +147,10 @@ public class CommonEventHandler { public static class Mod extends CommonEventHandler { @SubscribeEvent public static void onCommonSetup(FMLCommonSetupEvent event) { - if(LeashedPlayer.IS_NESTLE_LOADED) Logger.logger.info("[LeashedPlayer] Hello Nestle"); + if(LeashedPlayer.IS_NESTLE_LOADED) { + Logger.logger.info("[LeashedPlayer] Hello, Nestle"); + DispenserBlock.registerProjectileBehavior(ModItemRegister.NESTLE_ROPE_ARROW.get()); + } DispenserBlock.registerProjectileBehavior(ModItemRegister.LEASH_ROPE_ARROW.get()); DispenserBlock.registerProjectileBehavior(ModItemRegister.TIPPED_LEASH_ROPE_ARROW.get()); DispenserBlock.registerProjectileBehavior(ModItemRegister.SPECTRAL_LEASH_ROPE_ARROW.get()); @@ -155,6 +162,16 @@ public class CommonEventHandler { event.put(ModEntityRegister.KID.get(), LittlePlayer.createAttributes().build()); } + @SubscribeEvent + public static void onBuiltCreativeModeTabContents(BuildCreativeModeTabContentsEvent event) { + if (LeashedPlayer.IS_NESTLE_LOADED){ + CreativeModeTab tab = event.getTab(); + if (tab == ModCreativeTab.MAIN_TABS.get()) { + event.accept(ModItemRegister.NESTLE_ROPE_ARROW.get()); + } + } + } + } } diff --git a/src/main/java/com/r3944realms/leashedplayer/content/ModKeyMapping.java b/src/main/java/com/r3944realms/leashedplayer/content/ModKeyMapping.java index f6167f5..36872fd 100644 --- a/src/main/java/com/r3944realms/leashedplayer/content/ModKeyMapping.java +++ b/src/main/java/com/r3944realms/leashedplayer/content/ModKeyMapping.java @@ -9,7 +9,11 @@ import org.lwjgl.glfw.GLFW; public class ModKeyMapping { static String KEY_ROOT_ = "key.leashedplayer."; public static String CATEGORY = "key.leashedplayer.category"; - public static String APPLY_TALKAREA_PREFERENCE_KEY = KEY_ROOT_ + "apply_talkarea_preference"; + public static String APPLY_TALKAREA_PREFERENCE_KEY = KEY_ROOT_ + "apply_talkarea_preference", + ADD_LEASH_LENGTH_KEY = KEY_ROOT_ + "leash_length.add", + SUB_LEASH_LENGTH_KEY = KEY_ROOT_ + "leash_length.sub", + NOT_SUPPORT_TO_NOT_PLAYER_ENTITY = KEY_ROOT_ + "leash_length.not_support_to_not_player_entity"; + public static final KeyMapping KEY_APPLY_TALKAREA_PREFERENCE = new KeyMapping( APPLY_TALKAREA_PREFERENCE_KEY, @@ -19,4 +23,22 @@ public class ModKeyMapping { GLFW.GLFW_KEY_I, CATEGORY ); + public static final KeyMapping KEY_ADD_LEASH_LENGTH = + new KeyMapping( + ADD_LEASH_LENGTH_KEY, + KeyConflictContext.IN_GAME, + KeyModifier.CONTROL, + InputConstants.Type.KEYSYM, + GLFW.GLFW_KEY_UP, + CATEGORY + ); + public static final KeyMapping KEY_SUB_LEASH_LENGTH = + new KeyMapping( + SUB_LEASH_LENGTH_KEY, + KeyConflictContext.IN_GAME, + KeyModifier.CONTROL, + InputConstants.Type.KEYSYM, + GLFW.GLFW_KEY_DOWN, + CATEGORY + ); } diff --git a/src/main/java/com/r3944realms/leashedplayer/content/entities/LeashRopeArrow.java b/src/main/java/com/r3944realms/leashedplayer/content/entities/LeashRopeArrow.java index 1d8c6b0..892c97d 100644 --- a/src/main/java/com/r3944realms/leashedplayer/content/entities/LeashRopeArrow.java +++ b/src/main/java/com/r3944realms/leashedplayer/content/entities/LeashRopeArrow.java @@ -10,6 +10,7 @@ import com.r3944realms.leashedplayer.modInterface.PlayerLeashable; import net.minecraft.core.component.DataComponents; import net.minecraft.core.particles.ColorParticleOption; import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.network.chat.Component; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; @@ -36,6 +37,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class LeashRopeArrow extends AbstractArrow { + public static final String PUSH_SHIFT_TO_PICKUP_QUICKLY = "leashedplayer.leash_rope_arrow.try_to_pickup.push_shift_tip"; private static final int EXPOSED_POTION_DECAY_TIME = 600; private static final int NO_EFFECT_COLOR = -1; private static final EntityDataAccessor ID_EFFECT_COLOR = SynchedEntityData.defineId(LeashRopeArrow.class, EntityDataSerializers.INT); @@ -167,7 +169,10 @@ public class LeashRopeArrow extends AbstractArrow { } else return true; } else return false; } - } else return false; + } else { + ((ServerPlayer)pPlayer).sendSystemMessage(Component.translatable(PUSH_SHIFT_TO_PICKUP_QUICKLY), true); + return false; + } } else { diff --git a/src/main/java/com/r3944realms/leashedplayer/content/items/ModItemRegister.java b/src/main/java/com/r3944realms/leashedplayer/content/items/ModItemRegister.java index aebfd9b..aba64a8 100644 --- a/src/main/java/com/r3944realms/leashedplayer/content/items/ModItemRegister.java +++ b/src/main/java/com/r3944realms/leashedplayer/content/items/ModItemRegister.java @@ -34,7 +34,7 @@ public class ModItemRegister { public static final Supplier TIPPED_LEASH_ROPE_ARROW = ModItemRegister.register("tipped_leash_rope_arrow", () -> new TippedLeashRopeArrow(new Item.Properties().stacksTo(16).component(DataComponents.POTION_CONTENTS, PotionContents.EMPTY))); - public static final Supplier NESTLE_ROPE_ARROW = ModItemRegister.register("nestle_rope_arrow", + public static final Supplier NESTLE_ROPE_ARROW = ModItemRegister.register("nestle_rope_arrow", () -> new NestleRopeArrowItem(new Item.Properties().stacksTo(16))); public static final Supplier AMETHYST_SHEARS = ModItemRegister.register("amethyst_shears", diff --git a/src/main/java/com/r3944realms/leashedplayer/content/items/type/LeadBreakerItem.java b/src/main/java/com/r3944realms/leashedplayer/content/items/type/LeadBreakerItem.java index 2bcc7a8..9bb754b 100644 --- a/src/main/java/com/r3944realms/leashedplayer/content/items/type/LeadBreakerItem.java +++ b/src/main/java/com/r3944realms/leashedplayer/content/items/type/LeadBreakerItem.java @@ -3,11 +3,13 @@ package com.r3944realms.leashedplayer.content.items.type; import com.r3944realms.leashedplayer.content.entities.LeashRopeArrow; import com.r3944realms.leashedplayer.modInterface.PlayerLeashable; import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; import net.minecraft.tags.BlockTags; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Leashable; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; @@ -21,10 +23,13 @@ import net.minecraft.world.level.block.Blocks; import org.jetbrains.annotations.NotNull; import java.util.List; +import java.util.Objects; public class LeadBreakerItem extends ShearsItem implements ITierTool{ private final Tier tier; - public static final String HOVER_KEY = "leashedplayer.lead_breaker.item.desc"; + public static final String HOVER_KEY = "leashedplayer.lead_breaker.item.desc", + MESSAGE_USE_SUF = "leashedplayer.lead_breaker.item.use_suf", + MESSAGE_USE_FAI = "leashedplayer.lead_breaker.item.use_fai"; public LeadBreakerItem(Tier tier, Properties properties) { super(properties.durability(tier.getUses())); this.tier = tier; @@ -48,21 +53,29 @@ public class LeadBreakerItem extends ShearsItem implements ITierTool{ if (entity instanceof PlayerLeashable playerLeashable) { if (playerLeashable.isLeashed()){ entity.playSound(SoundEvents.SHEEP_SHEAR, 1.0F, 1.0F); - playerLeashable.dropLeash(true, !(playerLeashable.getLeashHolder() instanceof LeashRopeArrow)); - if (playerLeashable.getLeashHolder() instanceof LeashRopeArrow leashRopeArrow) { + Entity leashHolder = playerLeashable.getLeashHolder(); + playerLeashable.dropLeash(true, !(leashHolder instanceof LeashRopeArrow)); + if (leashHolder instanceof LeashRopeArrow leashRopeArrow) { leashRopeArrow.setOwner(null); } if (!player.isCreative()) stack.hurtAndBreak(1, player, LivingEntity.getSlotForHand(hand)); + if (leashHolder != null) { + ((ServerPlayer)player).sendSystemMessage(Component.translatable(MESSAGE_USE_SUF, entity.getDisplayName(), leashHolder.getDisplayName()), true); + } return InteractionResult.SUCCESS; } else return InteractionResult.PASS; } else if (entity instanceof Leashable leashable) { if (leashable.isLeashed()){ entity.playSound(SoundEvents.SHEEP_SHEAR, 1.0F, 1.0F); - leashable.dropLeash(true, !(leashable.getLeashHolder() instanceof LeashRopeArrow)); + Entity leashHolder = leashable.getLeashHolder(); + leashable.dropLeash(true, !(leashHolder instanceof LeashRopeArrow)); if (leashable.getLeashHolder() instanceof LeashRopeArrow leashRopeArrow) { leashRopeArrow.setOwner(null); } if (!player.isCreative()) stack.hurtAndBreak(1, player, LivingEntity.getSlotForHand(hand)); + if (leashHolder != null) { + ((ServerPlayer)player).sendSystemMessage(Component.translatable(MESSAGE_USE_SUF, entity.getDisplayName(), leashHolder.getDisplayName()), true); + } return InteractionResult.SUCCESS; } else return InteractionResult.PASS; } @@ -75,11 +88,16 @@ public class LeadBreakerItem extends ShearsItem implements ITierTool{ if (!pLevel.isClientSide && pUsedHand == InteractionHand.MAIN_HAND) { PlayerLeashable playerLeashable = (PlayerLeashable) pPlayer; if (playerLeashable.isLeashed()) { - if(!(playerLeashable.getLeashHolder() instanceof LeashRopeArrow)) { + Entity leashHolder = playerLeashable.getLeashHolder(); + if(!(leashHolder instanceof LeashRopeArrow)) { playerLeashable.dropLeash(true, true); pPlayer.getItemInHand(pUsedHand).hurtAndBreak(10, pPlayer, LivingEntity.getSlotForHand(pUsedHand)); + if (leashHolder != null) { + ((ServerPlayer)pPlayer).sendSystemMessage(Component.translatable(MESSAGE_USE_SUF, pPlayer.getDisplayName(), leashHolder.getDisplayName()), true); + } return InteractionResultHolder.success(pPlayer.getItemInHand(pUsedHand)); } + ((ServerPlayer)pPlayer).sendSystemMessage(Component.translatable(MESSAGE_USE_FAI, pPlayer.getDisplayName(), leashHolder.getDisplayName()), true); } } if(pLevel.isClientSide) { diff --git a/src/main/java/com/r3944realms/leashedplayer/datagen/LanguageAndOtherData/ModAdvancementKey.java b/src/main/java/com/r3944realms/leashedplayer/datagen/LanguageAndOtherData/ModAdvancementKey.java index ecc983a..1d0701b 100644 --- a/src/main/java/com/r3944realms/leashedplayer/datagen/LanguageAndOtherData/ModAdvancementKey.java +++ b/src/main/java/com/r3944realms/leashedplayer/datagen/LanguageAndOtherData/ModAdvancementKey.java @@ -18,6 +18,7 @@ public enum ModAdvancementKey { LEASH_TERMINATOR("leash_terminator", LEASH_START), TIPPED_LEASH_ARROW("tipped_leash_arrow", LEASH_ARROW), NEO_FOX("neo_fox", LEASH_START), + NESTLE_ARROW("nestle_arrow", LEASH_ARROW), ; private final String Name; @Nullable diff --git a/src/main/java/com/r3944realms/leashedplayer/datagen/LanguageAndOtherData/ModLangKeyValue.java b/src/main/java/com/r3944realms/leashedplayer/datagen/LanguageAndOtherData/ModLangKeyValue.java index 47d7f90..33c2333 100644 --- a/src/main/java/com/r3944realms/leashedplayer/datagen/LanguageAndOtherData/ModLangKeyValue.java +++ b/src/main/java/com/r3944realms/leashedplayer/datagen/LanguageAndOtherData/ModLangKeyValue.java @@ -7,6 +7,7 @@ import com.r3944realms.leashedplayer.content.commands.LeashCommand; import com.r3944realms.leashedplayer.content.commands.MotionCommand; import com.r3944realms.leashedplayer.content.effects.ModEffectRegister; import com.r3944realms.leashedplayer.content.effects.ModPotionRegister; +import com.r3944realms.leashedplayer.content.entities.LeashRopeArrow; import com.r3944realms.leashedplayer.content.entities.ModEntityRegister; import com.r3944realms.leashedplayer.content.gamerules.Server.*; import com.r3944realms.leashedplayer.content.items.ModCreativeTab; @@ -32,6 +33,8 @@ public enum ModLangKeyValue { ADDICTION(ClientEventHandler.ADDICTION, ModPartEnum.NAME, "You've triggered the anti-addiction mechanic, and you'll come back when you rest!", "你触发了防沉迷机制,休息会再来吧!", "你觸發了防沉迷機制,休息會再來吧!", false), KEY_CATEGORY(ModKeyMapping.CATEGORY, ModPartEnum.NAME, "Leashed Player", "可拴玩家", "可拴玩家", false), KEY_APPLY_TALKAREA(ModKeyMapping.APPLY_TALKAREA_PREFERENCE_KEY, ModPartEnum.NAME, "Apply TalkArea Preference", "应用可见区域预设", "應用設置可見區域預設", false), + KEY_ADD_LEASH_OTHER_LEASH_LENGTH(ModKeyMapping.ADD_LEASH_LENGTH_KEY, ModPartEnum.NAME, "Increase the Length of Leash Rope", "增加拴绳长度", "增加拴繩長度", false), + KEY_SUB_LEASH_OTHER_LEASH_LENGTH(ModKeyMapping.SUB_LEASH_LENGTH_KEY, ModPartEnum.NAME, "Decrease the Length of Leash Rope", "减小拴绳长度", "減小拴繩長度", false), //ITEM ITEM_LEASH_ROPE_ARROW(ModItemRegister.LEASH_ROPE_ARROW, ModPartEnum.ITEM, "Leash Rope Arrow", "拴绳箭", "拴繩箭", true), ITEM_SPECTRAL_LEASH_ROPE_ARROW(ModItemRegister.SPECTRAL_LEASH_ROPE_ARROW, ModPartEnum.ITEM, "Spectral Leash Rope Arrow", "拴绳光灵箭", "拴繩光靈箭", true), @@ -93,7 +96,9 @@ public enum ModLangKeyValue { MESSAGE_CHAT_TALKAREA_PREFERENCE_NOT_SET(ChatCommand.TALK_AREA_PREFERENCE_NOT_SET, ModPartEnum.COMMAND, "%s 's talk area preference is not set!", "%s未设置默认可见消息聊天区域半径", "%s未設置可見訊息聊天半徑", "%s未置默视之",false), MESSAGE_CHAT_TALKAREA_CURRENT_CONFIG(ChatCommand.TALK_AREA_CURRENT_CONFIG, ModPartEnum.COMMAND, "%s 's §6TalkArea Current§7:§e %d §6blocks §f(§aPrefence§7:§e %d §ablocks§f)§r", "%s§6目前聊天区域可见半径设置§7:§e %d §6格 §f(§a默认值§7:§e %d §a格§f)§r", "%s§6目前可見訊息聊天半徑設置§7:§e%d §6格 §f(§a默認值§7:§e%d §a格§f)§r", "%s§6今聊城可知半径置§e %d§6格§f(§a默§7:§e%d格§f)§r",false), MESSAGE_CHAT_TALKAREA_NO_RIGHT(ChatCommand.NO_RIGHT, ModPartEnum.COMMAND, "You haven't the right to do that!", "你无权这样做!", "你無權這麽做!", false), - + MESSAGE_LEASH_BREAKER_USE_SUF(LeadBreakerItem.MESSAGE_USE_SUF, ModPartEnum.MESSAGE, "§aSuccessfully break §f%1$s§a 's Leashed Link to §f%2$s ", "§a成功剪断§f%2$s§a对§f%1$s§a拴绳链接", "§a成功剪斷§f%2$s§a對§f%1$s§a拴繩鏈接", false), + MESSAGE_LEASH_BREAKER_USE_FAI(LeadBreakerItem.MESSAGE_USE_FAI, ModPartEnum.MESSAGE, "§cFailed to break §f%1$s§c 's Leashed Link to §f%2$s", "§c无法剪断§f%2$s§c对§f%1$s§c拴绳链接", "§c未能剪斷§f%2$s§c對§f%1$s§c拴繩鏈接", false), + MESSAGE_LEASH_NOT_SUPPORT_TO_NOT_PLAYER_ENTITY(ModKeyMapping.NOT_SUPPORT_TO_NOT_PLAYER_ENTITY, ModPartEnum.MESSAGE, "Only work on Players", "只在玩家身上有效", "僅對玩家有效", false), //GAME_RULE_NAME DEFAULT_AREA_TALK_NAME(DefaultTalkArea.NAME_KEY, ModPartEnum.NAME, "Default Area Talk", "默认聊天区域可见半径", "默認聊天區域可見半徑",false), TELEPORT_WITH_LEASHED_PLAYERS_NAME(TeleportWithLeashedPlayers.NAME_KEY, ModPartEnum.NAME, "Teleport leashed player with player holder", "被拴玩家随玩家持有者传送", "被拴玩家随玩家持有者傳送" ,false), @@ -103,6 +108,7 @@ public enum ModLangKeyValue { CAN_COMMON_PLAYER_CHANGER_SELF_TALKAREA_NAME(CanCommonPlayerChangeSelfTalkArea.NAME_KEY, ModPartEnum.NAME, "Should Non-OP Player can change their TalkArea", "非OP应该可以修改自己的聊天可见半径吗?", "非OP應該可以修改自己的聊天可見半徑嗎?", false), // DISABLE_MOVE_CHECK(DisablePlayerMoveCheck.NAME_KEY, ModPartEnum.NAME, "Disable Player Move Check", "禁止检查玩家移动", "禁止檢查玩家移動", false), + TRY_TO_PICKUP_LEASHED_ROPE_ARROW(LeashRopeArrow.PUSH_SHIFT_TO_PICKUP_QUICKLY, ModPartEnum.MESSAGE, "§aPush §f§lShift§a to pick up quickly", "§a按下§f§lShift键§a以加快拾取", "§a按下§f§lShift鍵§a以加速拾取", false), //GAME_RULE_DESCRIPTION TELEPORT_WITH_LEASHED_DESCRIPTION(TeleportWithLeashedPlayers.DESCRIPTION_KEY, ModPartEnum.DESCRIPTION, "Holder will teleport with their leashed players ", "传送时将被拴玩家与持有者一起传送", "將被拴玩家將隨持有者一起傳送" ,false), CREATE_LEASH_FENCE_KNOT_ENTITY_IF_ABSENT_DESCRIPTION(CreateLeashFenceKnotEntityIfAbsent.DESCRIPTION_KEY, ModPartEnum.DESCRIPTION, "Create LeashKnot Entity if it's absent on fence", "如果在栅栏处缺失拴绳结,则创建它", "如果在柵欄処缺失拴繩結,則創建它", false), @@ -124,6 +130,7 @@ public enum ModLangKeyValue { NO_LEASH(ModAdvancementKey.NO_LEASH.getNameKey(), ModPartEnum.NAME, "Don't tie me up", "勿拴我", "請恁勿拴唔", false), TIPPED_LEASH_ARROW(ModAdvancementKey.TIPPED_LEASH_ARROW.getNameKey(), ModPartEnum.NAME, "God said there should be more arrows", "神说要有更多箭矢", "神說要有更多箭矢", false), NEO_FOX(ModAdvancementKey.NEO_FOX.getNameKey(), ModPartEnum.NAME, "NEOFORGE!", "NEOFORGE!", "NEOFORGE!", false), + NESTLE_ARROW(ModAdvancementKey.NESTLE_ARROW.getNameKey(), ModPartEnum.NAME, "Arrow with the Power of Nestle!", "贴贴之箭!", "貼貼之箭!", false), //ADV_DESC LEASH_START_DESC(ModAdvancementKey.LEASH_START.getDescKey(), ModPartEnum.DESCRIPTION, "Journey to becoming a Leash Expert", "拴绳大师之路", "拴繩大師之路", false), LEASH_LR_ARROW_DESC(ModAdvancementKey.LEASH_ARROW.getDescKey(), ModPartEnum.DESCRIPTION, "Maybe you can using it to shoot some mob?", "也许可以用它来发射生物?", "也許可以用它發射生物?", false), @@ -136,6 +143,8 @@ public enum ModLangKeyValue { TERMINATOR_DESC(ModAdvancementKey.LEASH_TERMINATOR.getDescKey(), ModPartEnum.DESCRIPTION, "I am Lead Terminator!", "我來终结拴绳者!", "吾將終結拴繩!", false), TIPPED_LEASH_ARROW_DESC(ModAdvancementKey.TIPPED_LEASH_ARROW.getDescKey(), ModPartEnum.DESCRIPTION, "A dazzling array of Leash Rope arrows", "真是琳琅满目啊", "真是琳琅滿目啊", false), NEO_FOX_DESC(ModAdvancementKey.NEO_FOX.getDescKey(), ModPartEnum.DESCRIPTION, "It seems can be equipped.", "似乎可以戴头上", "似乎可以戴著", false), + NESTLE_ARROW_DESC(ModAdvancementKey.NESTLE_ARROW.getDescKey(), ModPartEnum.DESCRIPTION, "The Power of Nestle!!!", "贴贴之力!!!", "貼貼之力!!!", false), + //MOB_EFFECT NO_LEASH_EFFECT(ModEffectRegister.getEffectKey(ModEffectRegister.NO_LEASH_EFFECT.get()), ModPartEnum.NAME, "No Leash", "禁拴", "禁拴", false), //POTION diff --git a/src/main/java/com/r3944realms/leashedplayer/datagen/generator/ModAdvancementGenerator.java b/src/main/java/com/r3944realms/leashedplayer/datagen/generator/ModAdvancementGenerator.java index 4dd0780..250fb02 100644 --- a/src/main/java/com/r3944realms/leashedplayer/datagen/generator/ModAdvancementGenerator.java +++ b/src/main/java/com/r3944realms/leashedplayer/datagen/generator/ModAdvancementGenerator.java @@ -171,6 +171,19 @@ public class ModAdvancementGenerator implements AdvancementProvider.AdvancementG .and(ModEffectRegister.NO_LEASH_EFFECT) ) ).parent(hasLeashRopeItem).save(saver, ModAdvancementKey.NO_LEASH.getNameWithNameSpace()); + + AdvancementHolder nestle_rope_arrow = Advancement.Builder.advancement().display( + ModItemRegister.NESTLE_ROPE_ARROW.get(), + Component.translatable(ModAdvancementKey.NESTLE_ARROW.getNameKey()), + Component.translatable(ModAdvancementKey.NESTLE_ARROW.getDescKey()), + null, + AdvancementType.GOAL, + true, + true, + true + ).addCriterion("has_nestle_rope_arrow", + InventoryChangeTrigger.TriggerInstance.hasItems(ModItemRegister.NESTLE_ROPE_ARROW.get()) + ).parent(hasLeashRopeArrow).save(saver, ModAdvancementKey.NESTLE_ARROW.getNameWithNameSpace()); } } diff --git a/src/main/java/com/r3944realms/leashedplayer/datagen/provider/ModRecipeProvider.java b/src/main/java/com/r3944realms/leashedplayer/datagen/provider/ModRecipeProvider.java index dac0f19..14d5a1b 100644 --- a/src/main/java/com/r3944realms/leashedplayer/datagen/provider/ModRecipeProvider.java +++ b/src/main/java/com/r3944realms/leashedplayer/datagen/provider/ModRecipeProvider.java @@ -2,6 +2,9 @@ package com.r3944realms.leashedplayer.datagen.provider; import com.r3944realms.leashedplayer.content.items.ModItemRegister; import com.r3944realms.leashedplayer.content.items.repcipe.TippedLeashRopeArrowRecipe; +import io.github.kunosayo.nestle.init.ModItems; +import io.github.kunosayo.nestle.item.NestleItem; +import io.github.kunosayo.nestle.item.NestleLeadItem; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.*; @@ -29,6 +32,16 @@ public class ModRecipeProvider extends RecipeProvider { .unlockedBy("has_lead",has(Items.LEAD)) .unlockedBy("has_spectral_arrow",has(Items.SPECTRAL_ARROW)) .save(pRecipeOutput, "spectral_leash_rope_arrow_with_leash_rope_arrow"); + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ModItemRegister.NESTLE_ROPE_ARROW.get()) + .requires(ModItems.NESTLE_LEAD) + .requires(Items.ARROW) + .unlockedBy("has_nestle_rope",has(ModItems.NESTLE_LEAD)) + .save(pRecipeOutput); + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ModItemRegister.NESTLE_ROPE_ARROW.get()) + .requires(ModItems.NESTLE) + .requires(ModItemRegister.LEASH_ROPE_ARROW.get()) + .unlockedBy("has_nestle",has(ModItems.NESTLE)) + .save(pRecipeOutput, "nestle_rope_arrow_with_leash_rope_arrow"); ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItemRegister.SPECTRAL_LEASH_ROPE_ARROW.get(),1) .pattern(" $ ") .pattern("$#$") @@ -45,6 +58,7 @@ public class ModRecipeProvider extends RecipeProvider { .define('%', Items.STICK) .unlockedBy("has_amethyst_shard",has(Items.AMETHYST_SHARD)) .save(pRecipeOutput); + SpecialRecipeBuilder.special(TippedLeashRopeArrowRecipe.TippedLeashRopeArrowARecipe::new).save(pRecipeOutput,"tipped_leash_rope_arrow_a"); SpecialRecipeBuilder.special(TippedLeashRopeArrowRecipe.TippedLeashRopeArrowBRecipe::new).save(pRecipeOutput,"tipped_leash_rope_arrow_b"); }