diff --git a/README.md b/README.md index 058d960..116036f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# 版本 0.0.3.9.9.7 提前介绍c[最终版本对于0.0.4] 【注意:本解釋簡繁混寫,因爲趕時間,所以並不怎麽規範,請諒解】 +# 版本 0.0.3.9.9.8 提前介绍c[最终版本对于0.0.4] 【注意:本解釋簡繁混寫,因爲趕時間,所以並不怎麽規範,請諒解】 ## 简介 现在开始你可以用拴绳拴住玩家,也可以拴住自己了,不如尝试拴住彼此来通关我的世界吧( @@ -63,4 +63,7 @@ * `LP.OpenTOPNeededModeWhenScreenIsNotNull` - 此规则决定,是否在在打开 屏幕{除Top的NoteGui 和 聊天GUI外} 情况下改变Top的显示模式为NEEDED [默认值: true] -* `LP.CanCommonPlayerChangeSelfTalkArea` - 此规则决定,是否普通玩家可以修改自己的聊天可见区域 [默认值: true] \ No newline at end of file +* `LP.CanCommonPlayerChangeSelfTalkArea` - 此规则决定,是否普通玩家可以修改自己的聊天可见区域 [默认值: true] + +## 联动内容 +# 与Nestle 的 贴贴拴绳箭 (未完成) \ No newline at end of file diff --git a/Resource/bow_nra_pulling_0.png b/Resource/bow_nra_pulling_0.png new file mode 100644 index 0000000..bca19ac Binary files /dev/null and b/Resource/bow_nra_pulling_0.png differ diff --git a/Resource/bow_nra_pulling_1.png b/Resource/bow_nra_pulling_1.png new file mode 100644 index 0000000..aaab486 Binary files /dev/null and b/Resource/bow_nra_pulling_1.png differ diff --git a/Resource/bow_nra_pulling_2.png b/Resource/bow_nra_pulling_2.png new file mode 100644 index 0000000..c7ebd51 Binary files /dev/null and b/Resource/bow_nra_pulling_2.png differ diff --git a/Resource/crossbow_leash_rope_arrow.png b/Resource/crossbow_leash_rope_arrow.png deleted file mode 100644 index 7517484..0000000 Binary files a/Resource/crossbow_leash_rope_arrow.png and /dev/null differ diff --git a/Resource/crossbow_nestle_rope_arrow.png b/Resource/crossbow_nestle_rope_arrow.png new file mode 100644 index 0000000..0d6b9ad Binary files /dev/null and b/Resource/crossbow_nestle_rope_arrow.png differ diff --git a/Resource/leashed_rope_arrow.png b/Resource/leashed_rope_arrow.png deleted file mode 100644 index 83cec87..0000000 Binary files a/Resource/leashed_rope_arrow.png and /dev/null differ diff --git a/Resource/nestle-0.1.1.jar b/Resource/nestle-0.1.1.jar new file mode 100644 index 0000000..90c82ce Binary files /dev/null and b/Resource/nestle-0.1.1.jar differ diff --git a/Resource/nestle_rope_arrow.png b/Resource/nestle_rope_arrow.png new file mode 100644 index 0000000..dabad0f Binary files /dev/null and b/Resource/nestle_rope_arrow.png differ diff --git a/build.gradle b/build.gradle index c6168ac..3c572de 100644 --- a/build.gradle +++ b/build.gradle @@ -113,6 +113,8 @@ dependencies { runtimeOnly("mezz.jei:jei-${mc_version}-neoforge:${jei_version}") // compile against the JEI API but do not include it at runtime compileOnly("mezz.jei:jei-${mc_version}-neoforge-api:${jei_version}") + compileOnly(files("Resource/nestle-0.1.1.jar")) + runtimeOnly(files("Resource/nestle-0.1.1.jar")) // at runtime, use the full JEI jar for NeoForge // compileOnly("mezz.jei:jei-${mc_version}-neoforge-api:${jei_version}") // Example optional mod dependency with JEI diff --git a/gradle.properties b/gradle.properties index 51d22de..20812c5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -35,7 +35,7 @@ mod_name=Leashed Player # The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default. mod_license=MIT # The mod version. See https://semver.org/ -mod_version=0.0.3.9.9.7 +mod_version=0.0.3.9.9.8 # The group ID for the mod. It is only important when publishing as an artifact to a Maven repository. # This should match the base package used for the mod sources. # See https://maven.apache.org/guides/mini/guide-naming-conventions.html diff --git a/src/generated/resources/.cache/0aef4464247e697f9a7226f384437b478152c21c b/src/generated/resources/.cache/0aef4464247e697f9a7226f384437b478152c21c index 8db8db1..8ce4ab3 100644 --- a/src/generated/resources/.cache/0aef4464247e697f9a7226f384437b478152c21c +++ b/src/generated/resources/.cache/0aef4464247e697f9a7226f384437b478152c21c @@ -1,11 +1,16 @@ -// 1.21 2024-11-11T12:51:27.0438541 Item Models: leashedplayer +// 1.21 2024-11-25T23:55:52.7726677 Item Models: leashedplayer 766c487fbf0c59e9045eeaf81daf583eb679b0e1 assets/leashedplayer/models/item/amethyst_shears.json 5846df9d85726428905701120ef34c9324c20faf assets/leashedplayer/models/item/bow_lra_pulling_0.json 845a7316b86e26f88c6932d4ef2656126503727a assets/leashedplayer/models/item/bow_lra_pulling_1.json 5bd1f9f28b91005c587f1c38fb77cd19b59495e3 assets/leashedplayer/models/item/bow_lra_pulling_2.json +90909de0fcb2a6b0b9731bb998f8d866841de6d2 assets/leashedplayer/models/item/bow_nra_pulling_0.json +de6fed69522a94812c66ba1864ae6df7465aad9c assets/leashedplayer/models/item/bow_nra_pulling_1.json +1e34de6579d5c250eff9871e589c584d888c3c6d assets/leashedplayer/models/item/bow_nra_pulling_2.json 83946f4d60d0fb1758d6553c36330506c8e48ada assets/leashedplayer/models/item/crossbow_leash_rope_arrow.json +7d9d1678faf41b58d2934d0335f700e17c372c10 assets/leashedplayer/models/item/crossbow_nestle_rope_arrow.json bb0d76077719c83c8a8bd4346a24ea1766175125 assets/leashedplayer/models/item/fabric.json 63ec6c618a3a23eab4cab9c52d7d3250de9b516e assets/leashedplayer/models/item/kid_spawn_egg.json 114d3cc5832ef047403114504483c6f3ea07e77c assets/leashedplayer/models/item/leash_rope_arrow.json +f77241714f5233f127eee3c7521b448add1eaad2 assets/leashedplayer/models/item/nestle_rope_arrow.json c4748995a5fe190d20e3bd16f4b2244164ec0f83 assets/leashedplayer/models/item/spectral_leash_rope_arrow.json c4ef06f3162fe85f152c5b4a25ecdb4c2c56f945 assets/leashedplayer/models/item/tipped_leash_rope_arrow.json diff --git a/src/generated/resources/.cache/1749bb0c3e8c52cfb2d8ed2140e4678c71e770f5 b/src/generated/resources/.cache/1749bb0c3e8c52cfb2d8ed2140e4678c71e770f5 index 57fbd72..bbd2a11 100644 --- a/src/generated/resources/.cache/1749bb0c3e8c52cfb2d8ed2140e4678c71e770f5 +++ b/src/generated/resources/.cache/1749bb0c3e8c52cfb2d8ed2140e4678c71e770f5 @@ -1,6 +1,6 @@ -// 1.21 2024-11-23T19:27:19.709121 Tags for minecraft:item mod id leashedplayer +// 1.21 2024-11-25T23:24:58.9769291 Tags for minecraft:item mod id leashedplayer 84707301f1fe2490a899deb51302d413cfff5a89 data/c/tags/item/tools/shear.json -63e4ad58dc8397171f84264d53dfe4fb503c7b1e data/minecraft/tags/item/arrows.json +a91f0f4956d65c981d76c9f41de5272b2e0b5786 data/minecraft/tags/item/arrows.json 84707301f1fe2490a899deb51302d413cfff5a89 data/minecraft/tags/item/enchantable/durability.json 84707301f1fe2490a899deb51302d413cfff5a89 data/minecraft/tags/item/enchantable/mining.json 84707301f1fe2490a899deb51302d413cfff5a89 data/minecraft/tags/item/enchantable/vanishing.json diff --git a/src/generated/resources/.cache/211976637bfb5e111401ad2bfb58570ef2fb3dff b/src/generated/resources/.cache/211976637bfb5e111401ad2bfb58570ef2fb3dff index 5c757e7..5c55c62 100644 --- a/src/generated/resources/.cache/211976637bfb5e111401ad2bfb58570ef2fb3dff +++ b/src/generated/resources/.cache/211976637bfb5e111401ad2bfb58570ef2fb3dff @@ -1,2 +1,2 @@ -// 1.21 2024-11-24T21:20:56.9104455 Languages: en_us for mod: leashedplayer -15a68b539dc9bfec4a0c802a501ee207a84a5a7f assets/leashedplayer/lang/en_us.json +// 1.21 2024-11-25T23:24:58.9917691 Languages: en_us for mod: leashedplayer +878249de532f1f04ea0ec260372cdcff2c157dc3 assets/leashedplayer/lang/en_us.json diff --git a/src/generated/resources/.cache/a1129211d3ad6d65c101bb152ae8c66c8256bccb b/src/generated/resources/.cache/a1129211d3ad6d65c101bb152ae8c66c8256bccb index 7907d2f..c397b45 100644 --- a/src/generated/resources/.cache/a1129211d3ad6d65c101bb152ae8c66c8256bccb +++ b/src/generated/resources/.cache/a1129211d3ad6d65c101bb152ae8c66c8256bccb @@ -1,2 +1,2 @@ -// 1.21 2024-11-24T21:20:56.9094392 Languages: zh_cn for mod: leashedplayer -5231f5c20d6bf6d646c8bb8cf28a7d3caf82073b assets/leashedplayer/lang/zh_cn.json +// 1.21 2024-11-25T23:24:58.9852241 Languages: zh_cn for mod: leashedplayer +af57838d87cf64232255fdd3559cca32c9fe1234 assets/leashedplayer/lang/zh_cn.json diff --git a/src/generated/resources/.cache/ed628fd843215c1bf29a07b9cbd1b26a6af0636d b/src/generated/resources/.cache/ed628fd843215c1bf29a07b9cbd1b26a6af0636d index f6c1e76..cd4114b 100644 --- a/src/generated/resources/.cache/ed628fd843215c1bf29a07b9cbd1b26a6af0636d +++ b/src/generated/resources/.cache/ed628fd843215c1bf29a07b9cbd1b26a6af0636d @@ -1,2 +1,2 @@ -// 1.21 2024-11-24T21:20:56.907444 Languages: zh_tw for mod: leashedplayer -c99a4f7dd93ced0df1f2689852879858297d3f60 assets/leashedplayer/lang/zh_tw.json +// 1.21 2024-11-25T23:24:58.9831886 Languages: zh_tw for mod: leashedplayer +3e36d57b135382366fe919c8ce4aac57866d6ee8 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 416be2e..5274a52 100644 --- a/src/generated/resources/assets/leashedplayer/lang/en_us.json +++ b/src/generated/resources/assets/leashedplayer/lang/en_us.json @@ -25,6 +25,7 @@ "effect.leashedplayer.no_leash": "No Leash", "entity.leashedplayer.kid_player": "Kid", "entity.leashedplayer.leash_rope_arrow": "Leash Rope Arrow", + "entity.leashedplayer.nestle_rope_arrow": "Nestle Rope Arrow", "entity.leashedplayer.spectral_leash_rope_arrow": "Spectral Leash Rope Arrow", "gamerule.LP.CanCommonPlayerChangeSelfTalkArea": "Should Non-OP Player can change their TalkArea", "gamerule.LP.CanCommonPlayerChangeSelfTalkArea.description": "Above on its Name", @@ -49,6 +50,7 @@ "item.leashedplayer.kid_spawn_egg": "Kid Spawn Egg", "item.leashedplayer.leash_rope_arrow": "Leash Rope Arrow", "item.leashedplayer.neoforge": "NeoForge", + "item.leashedplayer.nestle_rope_arrow": "Nestle Rope Arrow", "item.leashedplayer.spectral_leash_rope_arrow": "Spectral Leash Rope Arrow", "item.minecraft.lingering_potion.effect.no_leash": "Splash No Leash Potion", "item.minecraft.potion.effect.no_leash": "No Leash Potion", diff --git a/src/generated/resources/assets/leashedplayer/lang/zh_cn.json b/src/generated/resources/assets/leashedplayer/lang/zh_cn.json index b0920c8..db9aeac 100644 --- a/src/generated/resources/assets/leashedplayer/lang/zh_cn.json +++ b/src/generated/resources/assets/leashedplayer/lang/zh_cn.json @@ -25,6 +25,7 @@ "effect.leashedplayer.no_leash": "禁拴", "entity.leashedplayer.kid_player": "小孩", "entity.leashedplayer.leash_rope_arrow": "拴绳箭", + "entity.leashedplayer.nestle_rope_arrow": "贴贴拴绳箭", "entity.leashedplayer.spectral_leash_rope_arrow": "拴绳光灵箭", "gamerule.LP.CanCommonPlayerChangeSelfTalkArea": "非OP应该可以修改自己的聊天可见半径吗?", "gamerule.LP.CanCommonPlayerChangeSelfTalkArea.description": "同名", @@ -49,6 +50,7 @@ "item.leashedplayer.kid_spawn_egg": "小孩生成蛋", "item.leashedplayer.leash_rope_arrow": "拴绳箭", "item.leashedplayer.neoforge": "NeoForge", + "item.leashedplayer.nestle_rope_arrow": "贴贴拴绳箭", "item.leashedplayer.spectral_leash_rope_arrow": "拴绳光灵箭", "item.minecraft.lingering_potion.effect.no_leash": "滞留型禁拴药水", "item.minecraft.potion.effect.no_leash": "禁拴药水", diff --git a/src/generated/resources/assets/leashedplayer/lang/zh_tw.json b/src/generated/resources/assets/leashedplayer/lang/zh_tw.json index 1f7f5b5..128a41c 100644 --- a/src/generated/resources/assets/leashedplayer/lang/zh_tw.json +++ b/src/generated/resources/assets/leashedplayer/lang/zh_tw.json @@ -25,6 +25,7 @@ "effect.leashedplayer.no_leash": "禁拴", "entity.leashedplayer.kid_player": "小孩", "entity.leashedplayer.leash_rope_arrow": "拴繩箭", + "entity.leashedplayer.nestle_rope_arrow": "貼貼拴繩箭", "entity.leashedplayer.spectral_leash_rope_arrow": "拴繩光靈箭", "gamerule.LP.CanCommonPlayerChangeSelfTalkArea": "非OP應該可以修改自己的聊天可見半徑嗎?", "gamerule.LP.CanCommonPlayerChangeSelfTalkArea.description": "同名", @@ -49,6 +50,7 @@ "item.leashedplayer.kid_spawn_egg": "小孩生成蛋", "item.leashedplayer.leash_rope_arrow": "拴繩箭", "item.leashedplayer.neoforge": "NeoForge", + "item.leashedplayer.nestle_rope_arrow": "貼貼拴繩箭", "item.leashedplayer.spectral_leash_rope_arrow": "拴繩光靈箭", "item.minecraft.lingering_potion.effect.no_leash": "滯留型禁拴藥水", "item.minecraft.potion.effect.no_leash": "禁拴藥水", diff --git a/src/generated/resources/assets/leashedplayer/models/item/bow_nra_pulling_0.json b/src/generated/resources/assets/leashedplayer/models/item/bow_nra_pulling_0.json new file mode 100644 index 0000000..65617bc --- /dev/null +++ b/src/generated/resources/assets/leashedplayer/models/item/bow_nra_pulling_0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/bow", + "textures": { + "layer0": "leashedplayer:item/bow_nra_pulling_0" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/leashedplayer/models/item/bow_nra_pulling_1.json b/src/generated/resources/assets/leashedplayer/models/item/bow_nra_pulling_1.json new file mode 100644 index 0000000..464cc21 --- /dev/null +++ b/src/generated/resources/assets/leashedplayer/models/item/bow_nra_pulling_1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/bow", + "textures": { + "layer0": "leashedplayer:item/bow_nra_pulling_1" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/leashedplayer/models/item/bow_nra_pulling_2.json b/src/generated/resources/assets/leashedplayer/models/item/bow_nra_pulling_2.json new file mode 100644 index 0000000..26fa907 --- /dev/null +++ b/src/generated/resources/assets/leashedplayer/models/item/bow_nra_pulling_2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/bow", + "textures": { + "layer0": "leashedplayer:item/bow_nra_pulling_2" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/leashedplayer/models/item/crossbow_nestle_rope_arrow.json b/src/generated/resources/assets/leashedplayer/models/item/crossbow_nestle_rope_arrow.json new file mode 100644 index 0000000..85ba882 --- /dev/null +++ b/src/generated/resources/assets/leashedplayer/models/item/crossbow_nestle_rope_arrow.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/crossbow", + "textures": { + "layer0": "leashedplayer:item/crossbow_nestle_rope_arrow" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/leashedplayer/models/item/nestle_rope_arrow.json b/src/generated/resources/assets/leashedplayer/models/item/nestle_rope_arrow.json new file mode 100644 index 0000000..70fcb4a --- /dev/null +++ b/src/generated/resources/assets/leashedplayer/models/item/nestle_rope_arrow.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "leashedplayer:item/nestle_rope_arrow" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/arrows.json b/src/generated/resources/data/minecraft/tags/item/arrows.json index 1ce5212..8310587 100644 --- a/src/generated/resources/data/minecraft/tags/item/arrows.json +++ b/src/generated/resources/data/minecraft/tags/item/arrows.json @@ -2,6 +2,7 @@ "values": [ "leashedplayer:leash_rope_arrow", "leashedplayer:spectral_leash_rope_arrow", - "leashedplayer:tipped_leash_rope_arrow" + "leashedplayer:tipped_leash_rope_arrow", + "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 cbefa12..8e100d1 100644 --- a/src/main/java/com/r3944realms/leashedplayer/ClientEventHandler.java +++ b/src/main/java/com/r3944realms/leashedplayer/ClientEventHandler.java @@ -1,17 +1,15 @@ package com.r3944realms.leashedplayer; -import com.r3944realms.leashedplayer.client.renders.entities.ChestItemLayerRenderer; -import com.r3944realms.leashedplayer.client.renders.entities.KidPlayerRenderer; -import com.r3944realms.leashedplayer.client.renders.entities.LeashRopeArrowRenderer; -import com.r3944realms.leashedplayer.client.renders.entities.SpectralLeashRopeArrowRenderer; +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; import com.r3944realms.leashedplayer.content.items.type.ILeashRopeArrow; -import com.r3944realms.leashedplayer.utils.Logger; +import com.r3944realms.leashedplayer.content.items.type.INestleRopeArrow; import mcjty.theoneprobe.config.Config; import mcjty.theoneprobe.gui.GuiNote; import net.minecraft.ChatFormatting; @@ -19,7 +17,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.ChatScreen; import net.minecraft.client.gui.screens.DisconnectedScreen; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen; import net.minecraft.client.renderer.entity.player.PlayerRenderer; import net.minecraft.client.renderer.item.ItemProperties; import net.minecraft.client.resources.PlayerSkin; @@ -38,9 +35,6 @@ import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; import net.neoforged.neoforge.client.event.*; -import java.util.Objects; -import java.util.Stack; - public abstract class ClientEventHandler { public static final String ADDICTION = "multiplayer.disconnect.addiction"; @@ -102,12 +96,21 @@ public abstract class ClientEventHandler { ItemProperties.register(Items.CROSSBOW, ResourceLocation.withDefaultNamespace("leash_rope_arrow"), ((pStack, pLevel, pEntity, pSeed) -> { ChargedProjectiles chargedProjectiles = pStack.get(DataComponents.CHARGED_PROJECTILES); - return chargedProjectiles != null && (chargedProjectiles.contains(ModItemRegister.LEASH_ROPE_ARROW.get()) || chargedProjectiles.contains(ModItemRegister.SPECTRAL_LEASH_ROPE_ARROW.get())) ? 1.0F : 0.0F; - })); + return chargedProjectiles != null && (chargedProjectiles.contains(ModItemRegister.LEASH_ROPE_ARROW.get()) || chargedProjectiles.contains(ModItemRegister.SPECTRAL_LEASH_ROPE_ARROW.get())) ? 1.0F : 0.0F;} + )); + ItemProperties.register(Items.CROSSBOW, ResourceLocation.withDefaultNamespace("nestle_rope_arrow"), + ((pStack, pLevel, pEntity, pSeed) -> { + ChargedProjectiles chargedProjectiles = pStack.get(DataComponents.CHARGED_PROJECTILES); + return chargedProjectiles != null && (chargedProjectiles.contains(ModItemRegister.NESTLE_ROPE_ARROW.get())) ? 1.0F : 0.0F;} + )); ItemProperties.register(Items.BOW, ResourceLocation.withDefaultNamespace("leash_rope_arrow_pulling"), ((pStack, pLevel, pEntity, pSeed) -> (pEntity != null && pEntity.isUsingItem() && pEntity.getUseItem() == pStack && ILeashRopeArrow.isLeashRopeArrow(pStack, pEntity)) ? 1.0F : 0.0F - )); + )); + ItemProperties.register(Items.BOW, ResourceLocation.withDefaultNamespace("nestle_rope_arrow_pulling"), + ((pStack, pLevel, pEntity, pSeed) -> + (pEntity != null && pEntity.isUsingItem() && pEntity.getUseItem() == pStack && INestleRopeArrow.isNestleRopeArrow(pStack, pEntity)) ? 1.0F : 0.0F + )); }); } @@ -118,7 +121,8 @@ public abstract class ClientEventHandler { } @SubscribeEvent - public static void onRegisterRenderer (EntityRenderersEvent.RegisterRenderers event){ + public static void onRegisterRenderer (EntityRenderersEvent.RegisterRenderers event) { + event.registerEntityRenderer(ModEntityRegister.NESTLE_ROPE_ARROW.get(), NestleRopeArrowRenderer::new); event.registerEntityRenderer(ModEntityRegister.LEASH_ROPE_ARROW.get(), LeashRopeArrowRenderer::new); event.registerEntityRenderer(ModEntityRegister.SPECTRAL_LEASH_ROPE_ARROW.get(), SpectralLeashRopeArrowRenderer::new); event.registerEntityRenderer(ModEntityRegister.KID.get(), KidPlayerRenderer::create); diff --git a/src/main/java/com/r3944realms/leashedplayer/CommonEventHandler.java b/src/main/java/com/r3944realms/leashedplayer/CommonEventHandler.java index a811026..4f4f429 100644 --- a/src/main/java/com/r3944realms/leashedplayer/CommonEventHandler.java +++ b/src/main/java/com/r3944realms/leashedplayer/CommonEventHandler.java @@ -8,22 +8,17 @@ import com.r3944realms.leashedplayer.content.entities.LeashRopeArrow; import com.r3944realms.leashedplayer.content.entities.LittlePlayer; import com.r3944realms.leashedplayer.content.entities.ModEntityRegister; import com.r3944realms.leashedplayer.content.gamerules.GameruleRegistry; -import com.r3944realms.leashedplayer.content.gamerules.Gamerules; import com.r3944realms.leashedplayer.content.gamerules.Server.OpenTOPNeededModeWhenScreenIsNotNull; import com.r3944realms.leashedplayer.content.items.ModItemRegister; import com.r3944realms.leashedplayer.content.misc.LeadBreakItemBehavior; 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 net.minecraft.ChatFormatting; import net.minecraft.commands.CommandSourceStack; import net.minecraft.core.component.DataComponents; -import net.minecraft.network.Connection; -import net.minecraft.network.DisconnectionDetails; -import net.minecraft.network.PacketSendListener; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.protocol.common.ClientboundDisconnectPacket; import net.minecraft.server.level.ServerPlayer; import net.minecraft.tags.ItemTags; import net.minecraft.world.effect.MobEffectInstance; @@ -36,7 +31,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.alchemy.PotionBrewing; import net.minecraft.world.item.alchemy.Potions; -import net.minecraft.world.level.GameRules; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.DispenserBlock; import net.neoforged.bus.api.SubscribeEvent; @@ -149,6 +143,7 @@ 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"); DispenserBlock.registerProjectileBehavior(ModItemRegister.LEASH_ROPE_ARROW.get()); DispenserBlock.registerProjectileBehavior(ModItemRegister.TIPPED_LEASH_ROPE_ARROW.get()); DispenserBlock.registerProjectileBehavior(ModItemRegister.SPECTRAL_LEASH_ROPE_ARROW.get()); diff --git a/src/main/java/com/r3944realms/leashedplayer/LeashedPlayer.java b/src/main/java/com/r3944realms/leashedplayer/LeashedPlayer.java index 867e385..40d780f 100644 --- a/src/main/java/com/r3944realms/leashedplayer/LeashedPlayer.java +++ b/src/main/java/com/r3944realms/leashedplayer/LeashedPlayer.java @@ -12,6 +12,7 @@ import com.r3944realms.leashedplayer.content.paintings.ModPaintingsRegister; import com.r3944realms.leashedplayer.content.sounds.ModSoundRegister; import com.r3944realms.leashedplayer.utils.Util; import net.neoforged.bus.api.IEventBus; +import net.neoforged.fml.ModList; import net.neoforged.fml.ModLoadingContext; import net.neoforged.fml.common.Mod; import net.neoforged.fml.config.ModConfig; @@ -20,6 +21,8 @@ import static com.r3944realms.leashedplayer.utils.Logger.logger; @Mod(LeashedPlayer.MOD_ID) public class LeashedPlayer { public static final String MOD_ID = "leashedplayer"; + public static boolean IS_NESTLE_LOADED; + private static Double M1;//拴繩掉落距離倍基數 private static Double M2;//繩箭拴繩掉落距離倍基數 public LeashedPlayer(IEventBus event) { @@ -36,6 +39,7 @@ public class LeashedPlayer { } private void initiation() { logger.info("Initializing LeashedPlayer Mod"); + IS_NESTLE_LOADED = ModList.get().isLoaded("nestle"); String leashedPlayerCommonConfig = "LeashedPlayerCommonConfig"; Util.configFileCreate(new String[]{leashedPlayerCommonConfig}); ModLoadingContext.get().getActiveContainer().registerConfig(ModConfig.Type.COMMON, LeashPlayerCommonConfig.SPEC, MOD_ID + "/" + leashedPlayerCommonConfig + "/LeashPlayer.toml"); diff --git a/src/main/java/com/r3944realms/leashedplayer/client/renders/entities/NestleRopeArrowRenderer.java b/src/main/java/com/r3944realms/leashedplayer/client/renders/entities/NestleRopeArrowRenderer.java new file mode 100644 index 0000000..8594e34 --- /dev/null +++ b/src/main/java/com/r3944realms/leashedplayer/client/renders/entities/NestleRopeArrowRenderer.java @@ -0,0 +1,21 @@ +package com.r3944realms.leashedplayer.client.renders.entities; + +import com.r3944realms.leashedplayer.LeashedPlayer; +import com.r3944realms.leashedplayer.content.entities.NestleRopeArrow; +import net.minecraft.client.renderer.entity.ArrowRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.NotNull; + +public class NestleRopeArrowRenderer extends ArrowRenderer { + public static final ResourceLocation NESTLE_ROPE_ARROW = ResourceLocation.fromNamespaceAndPath(LeashedPlayer.MOD_ID, "textures/entity/projectiles/nestle_rope_arrow.png"); + + public NestleRopeArrowRenderer(EntityRendererProvider.Context pContext) { + super(pContext); + } + + @Override + public @NotNull ResourceLocation getTextureLocation(@NotNull NestleRopeArrow pEntity) { + return NESTLE_ROPE_ARROW; + } +} diff --git a/src/main/java/com/r3944realms/leashedplayer/content/commands/ChatCommand.java b/src/main/java/com/r3944realms/leashedplayer/content/commands/ChatCommand.java index 374a350..7fcb49d 100644 --- a/src/main/java/com/r3944realms/leashedplayer/content/commands/ChatCommand.java +++ b/src/main/java/com/r3944realms/leashedplayer/content/commands/ChatCommand.java @@ -18,8 +18,8 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import static com.r3944realms.leashedplayer.content.commands.Command.getLiterArgumentBuilderOfCSS; import static com.r3944realms.leashedplayer.content.commands.Command.SHOULD_USE_PREFIX; +import static com.r3944realms.leashedplayer.content.commands.Command.getLiterArgumentBuilderOfCSS; public class ChatCommand { diff --git a/src/main/java/com/r3944realms/leashedplayer/content/commands/DebugCommand.java b/src/main/java/com/r3944realms/leashedplayer/content/commands/DebugCommand.java index f797fba..3447ce6 100644 --- a/src/main/java/com/r3944realms/leashedplayer/content/commands/DebugCommand.java +++ b/src/main/java/com/r3944realms/leashedplayer/content/commands/DebugCommand.java @@ -16,8 +16,8 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; -import static com.r3944realms.leashedplayer.content.commands.Command.getLiterArgumentBuilderOfCSS; import static com.r3944realms.leashedplayer.content.commands.Command.SHOULD_USE_PREFIX; +import static com.r3944realms.leashedplayer.content.commands.Command.getLiterArgumentBuilderOfCSS; public class DebugCommand { public static void register(CommandDispatcher dispatcher) { diff --git a/src/main/java/com/r3944realms/leashedplayer/content/commands/LeashCommand.java b/src/main/java/com/r3944realms/leashedplayer/content/commands/LeashCommand.java index 842df6f..315a3b8 100644 --- a/src/main/java/com/r3944realms/leashedplayer/content/commands/LeashCommand.java +++ b/src/main/java/com/r3944realms/leashedplayer/content/commands/LeashCommand.java @@ -28,8 +28,8 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import static com.r3944realms.leashedplayer.content.commands.Command.getLiterArgumentBuilderOfCSS; import static com.r3944realms.leashedplayer.content.commands.Command.SHOULD_USE_PREFIX; +import static com.r3944realms.leashedplayer.content.commands.Command.getLiterArgumentBuilderOfCSS; public class LeashCommand { public static final Integer MIN_VALUE = LeashPlayerCommonConfig.MinimumLeashLengthCanBeSet.get(); diff --git a/src/main/java/com/r3944realms/leashedplayer/content/commands/MotionCommand.java b/src/main/java/com/r3944realms/leashedplayer/content/commands/MotionCommand.java index fced654..f40c101 100644 --- a/src/main/java/com/r3944realms/leashedplayer/content/commands/MotionCommand.java +++ b/src/main/java/com/r3944realms/leashedplayer/content/commands/MotionCommand.java @@ -18,8 +18,8 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; -import static com.r3944realms.leashedplayer.content.commands.Command.getLiterArgumentBuilderOfCSS; import static com.r3944realms.leashedplayer.content.commands.Command.SHOULD_USE_PREFIX; +import static com.r3944realms.leashedplayer.content.commands.Command.getLiterArgumentBuilderOfCSS; public class MotionCommand { private final static String LEASHED_PLAYER_MOTION_MESSAGE_ = "leashedplayer.command.motion.message."; diff --git a/src/main/java/com/r3944realms/leashedplayer/content/commands/TickCommand.java b/src/main/java/com/r3944realms/leashedplayer/content/commands/TickCommand.java index 7bbe7ac..8aca81e 100644 --- a/src/main/java/com/r3944realms/leashedplayer/content/commands/TickCommand.java +++ b/src/main/java/com/r3944realms/leashedplayer/content/commands/TickCommand.java @@ -17,8 +17,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import static com.r3944realms.leashedplayer.content.commands.Command.getLiterArgumentBuilderOfCSS; import static com.r3944realms.leashedplayer.content.commands.Command.SHOULD_USE_PREFIX; +import static com.r3944realms.leashedplayer.content.commands.Command.getLiterArgumentBuilderOfCSS; public class TickCommand { private static final String DEFAULT_TICKRATE = String.valueOf(20); diff --git a/src/main/java/com/r3944realms/leashedplayer/content/entities/ModEntityRegister.java b/src/main/java/com/r3944realms/leashedplayer/content/entities/ModEntityRegister.java index 8796bb0..744b17e 100644 --- a/src/main/java/com/r3944realms/leashedplayer/content/entities/ModEntityRegister.java +++ b/src/main/java/com/r3944realms/leashedplayer/content/entities/ModEntityRegister.java @@ -28,6 +28,15 @@ public class ModEntityRegister { .updateInterval(20) .build("spectral_leash_rope_arrow") ); + public static final DeferredHolder, EntityType> NESTLE_ROPE_ARROW = ENTITY_TYPE.register( + "nestle_rope_arrow", + () -> EntityType.Builder.of(NestleRopeArrow::new, MobCategory.MISC) + .sized(0.5F, 0.5F) + .eyeHeight(0.13F) + .clientTrackingRange(4) + .updateInterval(20) + .build("nestle_rope_arrow") + ); public static final DeferredHolder, EntityType> KID = ENTITY_TYPE.register("kid_player", () -> EntityType.Builder.of(LittlePlayer::new, MobCategory.MISC) .sized(0.6f,1.08f) diff --git a/src/main/java/com/r3944realms/leashedplayer/content/entities/NestleRopeArrow.java b/src/main/java/com/r3944realms/leashedplayer/content/entities/NestleRopeArrow.java new file mode 100644 index 0000000..b03a3a3 --- /dev/null +++ b/src/main/java/com/r3944realms/leashedplayer/content/entities/NestleRopeArrow.java @@ -0,0 +1,32 @@ +package com.r3944realms.leashedplayer.content.entities; + +import com.r3944realms.leashedplayer.content.items.ModItemRegister; +import com.r3944realms.leashedplayer.modInterface.PlayerLeashable; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class NestleRopeArrow extends AbstractArrow { + public NestleRopeArrow(EntityType pEntityType, Level pLevel) { + super(pEntityType, pLevel); + } + public NestleRopeArrow(EntityType entityType, double pX, double pY, double pZ, Level pLevel, ItemStack pPickupItemStack, @Nullable ItemStack pFiredFromWeapon, @Nullable ServerPlayer serverPlayer) { + super(entityType, pX, pY, pZ, pLevel, pPickupItemStack, pFiredFromWeapon); + } + + public NestleRopeArrow(EntityType entityType, LivingEntity pOwner, Level pLevel, ItemStack pPickupItemStack, @Nullable ItemStack pFiredFromWeapon) { + super(entityType, pOwner, pLevel, pPickupItemStack, pFiredFromWeapon); + } + + @Override + protected @NotNull ItemStack getDefaultPickupItem() { + return ModItemRegister.NESTLE_ROPE_ARROW.get().getDefaultInstance(); + } +} diff --git a/src/main/java/com/r3944realms/leashedplayer/content/items/ModCreativeTab.java b/src/main/java/com/r3944realms/leashedplayer/content/items/ModCreativeTab.java index d143ee4..312352b 100644 --- a/src/main/java/com/r3944realms/leashedplayer/content/items/ModCreativeTab.java +++ b/src/main/java/com/r3944realms/leashedplayer/content/items/ModCreativeTab.java @@ -32,6 +32,7 @@ public class ModCreativeTab { pOutput.accept(Items.CROSSBOW); pOutput.accept(ModItemRegister.LEASH_ROPE_ARROW.get()); pOutput.accept(ModItemRegister.SPECTRAL_LEASH_ROPE_ARROW.get()); + if(LeashedPlayer.IS_NESTLE_LOADED) pOutput.accept(ModItemRegister.NESTLE_ROPE_ARROW.get()); pOutput.accept(ModItemRegister.AMETHYST_SHEARS.get()); HolderLookup.RegistryLookup potionRegistryLookup = CommonHooks.resolveLookup(Registries.POTION); if(potionRegistryLookup != null) { 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 2eae689..aebfd9b 100644 --- a/src/main/java/com/r3944realms/leashedplayer/content/items/ModItemRegister.java +++ b/src/main/java/com/r3944realms/leashedplayer/content/items/ModItemRegister.java @@ -34,6 +34,9 @@ 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", + () -> new NestleRopeArrowItem(new Item.Properties().stacksTo(16))); + public static final Supplier AMETHYST_SHEARS = ModItemRegister.register("amethyst_shears", () -> new LeadBreakerItem(ModToolTier.AMETHYST, new Item.Properties().component(DataComponents.TOOL, LeadBreakerItem.createToolProperties()) .stacksTo(1))); diff --git a/src/main/java/com/r3944realms/leashedplayer/content/items/type/INestleRopeArrow.java b/src/main/java/com/r3944realms/leashedplayer/content/items/type/INestleRopeArrow.java new file mode 100644 index 0000000..1536c25 --- /dev/null +++ b/src/main/java/com/r3944realms/leashedplayer/content/items/type/INestleRopeArrow.java @@ -0,0 +1,19 @@ +package com.r3944realms.leashedplayer.content.items.type; + +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; + +public interface INestleRopeArrow { + static boolean isNestleRopeArrow(ItemStack bowStack, LivingEntity entity) { + if (entity instanceof Player player) { + + // 获取将要发射的弹药 + ItemStack projectileStack = player.getProjectile(bowStack); + + // 判断该弹药是否为拴绳箭 + return projectileStack.getItem() instanceof INestleRopeArrow; + } + return false; + } +} diff --git a/src/main/java/com/r3944realms/leashedplayer/content/items/type/NestleRopeArrowItem.java b/src/main/java/com/r3944realms/leashedplayer/content/items/type/NestleRopeArrowItem.java new file mode 100644 index 0000000..afa25fd --- /dev/null +++ b/src/main/java/com/r3944realms/leashedplayer/content/items/type/NestleRopeArrowItem.java @@ -0,0 +1,40 @@ +package com.r3944realms.leashedplayer.content.items.type; + +import com.r3944realms.leashedplayer.content.entities.LeashRopeArrow; +import com.r3944realms.leashedplayer.content.entities.ModEntityRegister; +import net.minecraft.ChatFormatting; +import net.minecraft.core.Direction; +import net.minecraft.core.Position; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.item.ArrowItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.List; + +public class NestleRopeArrowItem extends ArrowItem implements INestleRopeArrow { + + public NestleRopeArrowItem(Item.Properties pProperties) { + super(pProperties); + } + + public @NotNull AbstractArrow createArrow(@NotNull Level pLevel, @NotNull ItemStack pAmmo, @NotNull LivingEntity pShooter, @Nullable ItemStack pWeapon) { + return new com.r3944realms.leashedplayer.content.entities.NestleRopeArrow(ModEntityRegister.NESTLE_ROPE_ARROW.get(),pShooter, pLevel, pAmmo.copyWithCount(1), pWeapon); + } + + @Override + public @NotNull Projectile asProjectile(@NotNull Level pLevel, @NotNull Position pPos, @NotNull ItemStack pStack, @NotNull Direction pDirection) { + return new LeashRopeArrow(ModEntityRegister.NESTLE_ROPE_ARROW.get(), pPos.x(), pPos.y(), pPos.z(), pLevel, pStack,null, null); + } + + public void appendHoverText(@NotNull ItemStack pStack, Item.@NotNull TooltipContext pContext, @NotNull List pTooltipComponents, @NotNull TooltipFlag pTooltipFlag) { + + } +} 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 9f97eae..47d7f90 100644 --- a/src/main/java/com/r3944realms/leashedplayer/datagen/LanguageAndOtherData/ModLangKeyValue.java +++ b/src/main/java/com/r3944realms/leashedplayer/datagen/LanguageAndOtherData/ModLangKeyValue.java @@ -40,6 +40,7 @@ public enum ModLangKeyValue { KID_SPAWN_EGG(ModItemRegister.KID_SPAWN_EGG, ModPartEnum.ITEM, "Kid Spawn Egg", "小孩生成蛋", "小孩生成蛋", false), NEO_FORGE(ModItemRegister.NEOFORGE, ModPartEnum.ITEM, "NeoForge", "NeoForge", "NeoForge", false), TIPPED_LEASH_ROPE_ARROW(TippedLeashRopeArrow.TIPPED_LEASH_ROPE_ARROW_NAME, ModPartEnum.ITEM, "Tipped Leash Rope Arrow Soaked By %1$s", "用%1$s浸泡过的拴绳箭", "蘸有%1$s的拴繩箭", false), + ITEM_NESTLE_ROPE_ARROW(ModItemRegister.NESTLE_ROPE_ARROW, ModPartEnum.ITEM, "Nestle Rope Arrow", "贴贴拴绳箭", "貼貼拴繩箭", true), //ITEM_DESC DESC_ITEM_LEASH_R_ARROW_ONE(LeashRopeArrowItem.DESC_1, ModPartEnum.DESCRIPTION, "§7This arrow will carry the owner along with its flight:", "§7该箭将会携带拥有者随其飞行", "§7該箭將會攜帶擁有者隨其飛行:", false), DESC_ITEM_LEASH_R_ARROW_TWO(LeashRopeArrowItem.DESC_2, ModPartEnum.DESCRIPTION, "§c1.§r If it hits a fence or an entity, it will leash the owner to it and drop as a normal arrow.", "§c1.§r 若击中栅栏或生物时,将持有者拴在其上并已普通箭形式掉落;", "§c1.§r 若擊中柵欄或生物時,將持有者拴在其上並以普通箭的形式掉落;", false), @@ -59,6 +60,7 @@ public enum ModLangKeyValue { LEASH_ROPE_ARROW(ModEntityRegister.getEntityNameKey("leash_rope_arrow"), ModPartEnum.ENTITY, "Leash Rope Arrow", "拴绳箭", "拴繩箭", false), SPECTRAL_LEASH_ROPE_ARROW(ModEntityRegister.getEntityNameKey("spectral_leash_rope_arrow"), ModPartEnum.ENTITY, "Spectral Leash Rope Arrow", "拴绳光灵箭", "拴繩光靈箭", false), kID(ModEntityRegister.getEntityNameKey("kid_player"), ModPartEnum.ENTITY, "Kid", "小孩", "小孩", "幼", false), + NESTLE_ROPE_ARROW(ModEntityRegister.getEntityNameKey("nestle_rope_arrow"), ModPartEnum.ENTITY, "Nestle Rope Arrow", "贴贴拴绳箭", "貼貼拴繩箭", false), //DIST ST_WHAT_DOES_THE_FOX_SAY(ModSoundRegister.getSubTitleTranslateKey("what_does_the_fox_say"), ModPartEnum.TITLE, "Great Chu will rise again! Chen She will be king!", "大楚兴~ 陈胜王~~", "大楚興~ 陳勝王~~", false), JB_WHAT_DOES_THE_FOX_SAY(ModSoundRegister.getJukeboxSongTranslateKey("what_does_the_fox_say"), ModPartEnum.DESCRIPTION, "What does the fox say?", "狐狸是怎么叫的?", "狐狸是怎麽叫的?", false), diff --git a/src/main/java/com/r3944realms/leashedplayer/datagen/provider/ModItemModelProvider.java b/src/main/java/com/r3944realms/leashedplayer/datagen/provider/ModItemModelProvider.java index 1b9388a..9ffe535 100644 --- a/src/main/java/com/r3944realms/leashedplayer/datagen/provider/ModItemModelProvider.java +++ b/src/main/java/com/r3944realms/leashedplayer/datagen/provider/ModItemModelProvider.java @@ -49,6 +49,18 @@ public class ModItemModelProvider extends ItemModelProvider { getBuilder("bow_lra_pulling_2") .parent(new ModelFile.UncheckedModelFile("item/bow")) .texture("layer0", ResourceLocation.fromNamespaceAndPath(LeashedPlayer.MOD_ID, "item/bow_lra_pulling_2")); + getBuilder("crossbow_nestle_rope_arrow") + .parent(new ModelFile.UncheckedModelFile("item/crossbow")) + .texture("layer0", ResourceLocation.fromNamespaceAndPath(LeashedPlayer.MOD_ID, "item/crossbow_nestle_rope_arrow")); + getBuilder("bow_nra_pulling_0") + .parent(new ModelFile.UncheckedModelFile("item/bow")) + .texture("layer0", ResourceLocation.fromNamespaceAndPath(LeashedPlayer.MOD_ID, "item/bow_nra_pulling_0")); + getBuilder("bow_nra_pulling_1") + .parent(new ModelFile.UncheckedModelFile("item/bow")) + .texture("layer0", ResourceLocation.fromNamespaceAndPath(LeashedPlayer.MOD_ID, "item/bow_nra_pulling_1")); + getBuilder("bow_nra_pulling_2") + .parent(new ModelFile.UncheckedModelFile("item/bow")) + .texture("layer0", ResourceLocation.fromNamespaceAndPath(LeashedPlayer.MOD_ID, "item/bow_nra_pulling_2")); getBuilder("tipped_leash_rope_arrow") .parent(new ModelFile.UncheckedModelFile("item/generated")) .texture("layer0", ResourceLocation.withDefaultNamespace("item/tipped_arrow_head")) diff --git a/src/main/java/com/r3944realms/leashedplayer/datagen/provider/ModItemTagProvider.java b/src/main/java/com/r3944realms/leashedplayer/datagen/provider/ModItemTagProvider.java index 77b3235..936dc18 100644 --- a/src/main/java/com/r3944realms/leashedplayer/datagen/provider/ModItemTagProvider.java +++ b/src/main/java/com/r3944realms/leashedplayer/datagen/provider/ModItemTagProvider.java @@ -6,7 +6,6 @@ import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.data.tags.ItemTagsProvider; import net.minecraft.tags.ItemTags; -import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; import net.neoforged.neoforge.common.Tags; @@ -26,7 +25,8 @@ public class ModItemTagProvider extends ItemTagsProvider { this.tag(ItemTags.ARROWS) .add(ModItemRegister.LEASH_ROPE_ARROW.get()) .add(ModItemRegister.SPECTRAL_LEASH_ROPE_ARROW.get()) - .add(ModItemRegister.TIPPED_LEASH_ROPE_ARROW.get()); + .add(ModItemRegister.TIPPED_LEASH_ROPE_ARROW.get()) + .add(ModItemRegister.NESTLE_ROPE_ARROW.get()); this.tag(ItemTags.HEAD_ARMOR) .add(ModItemRegister.NEOFORGE.get()) .add(Items.LEAD); diff --git a/src/main/java/com/r3944realms/leashedplayer/integration/jei/JEIPlugin.java b/src/main/java/com/r3944realms/leashedplayer/integration/jei/JEIPlugin.java index baad532..ae80722 100644 --- a/src/main/java/com/r3944realms/leashedplayer/integration/jei/JEIPlugin.java +++ b/src/main/java/com/r3944realms/leashedplayer/integration/jei/JEIPlugin.java @@ -1,7 +1,6 @@ package com.r3944realms.leashedplayer.integration.jei; import com.r3944realms.leashedplayer.LeashedPlayer; - import mezz.jei.api.IModPlugin; import mezz.jei.api.JeiPlugin; import mezz.jei.api.registration.IRecipeRegistration; diff --git a/src/main/java/com/r3944realms/leashedplayer/network/client/IGameRuleValueChangeData.java b/src/main/java/com/r3944realms/leashedplayer/network/client/IGameRuleValueChangeData.java index 77a8f59..3911513 100644 --- a/src/main/java/com/r3944realms/leashedplayer/network/client/IGameRuleValueChangeData.java +++ b/src/main/java/com/r3944realms/leashedplayer/network/client/IGameRuleValueChangeData.java @@ -1,6 +1,5 @@ package com.r3944realms.leashedplayer.network.client; -import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import org.jetbrains.annotations.NotNull; diff --git a/src/main/resources/assets/leashedplayer/textures/entity/projectiles/nestle_rope_arrow.png b/src/main/resources/assets/leashedplayer/textures/entity/projectiles/nestle_rope_arrow.png new file mode 100644 index 0000000..dabad0f Binary files /dev/null and b/src/main/resources/assets/leashedplayer/textures/entity/projectiles/nestle_rope_arrow.png differ diff --git a/src/main/resources/assets/leashedplayer/textures/item/bow_nra_pulling_0.png b/src/main/resources/assets/leashedplayer/textures/item/bow_nra_pulling_0.png new file mode 100644 index 0000000..bca19ac Binary files /dev/null and b/src/main/resources/assets/leashedplayer/textures/item/bow_nra_pulling_0.png differ diff --git a/src/main/resources/assets/leashedplayer/textures/item/bow_nra_pulling_1.png b/src/main/resources/assets/leashedplayer/textures/item/bow_nra_pulling_1.png new file mode 100644 index 0000000..aaab486 Binary files /dev/null and b/src/main/resources/assets/leashedplayer/textures/item/bow_nra_pulling_1.png differ diff --git a/src/main/resources/assets/leashedplayer/textures/item/bow_nra_pulling_2.png b/src/main/resources/assets/leashedplayer/textures/item/bow_nra_pulling_2.png new file mode 100644 index 0000000..c7ebd51 Binary files /dev/null and b/src/main/resources/assets/leashedplayer/textures/item/bow_nra_pulling_2.png differ diff --git a/src/main/resources/assets/leashedplayer/textures/item/crossbow_nestle_rope_arrow.png b/src/main/resources/assets/leashedplayer/textures/item/crossbow_nestle_rope_arrow.png new file mode 100644 index 0000000..0d6b9ad Binary files /dev/null and b/src/main/resources/assets/leashedplayer/textures/item/crossbow_nestle_rope_arrow.png differ diff --git a/src/main/resources/assets/leashedplayer/textures/item/nestle_rope_arrow.png b/src/main/resources/assets/leashedplayer/textures/item/nestle_rope_arrow.png new file mode 100644 index 0000000..c70ebab Binary files /dev/null and b/src/main/resources/assets/leashedplayer/textures/item/nestle_rope_arrow.png differ diff --git a/src/main/resources/assets/minecraft/models/item/bow.json b/src/main/resources/assets/minecraft/models/item/bow.json index 301bbd3..e320c82 100644 --- a/src/main/resources/assets/minecraft/models/item/bow.json +++ b/src/main/resources/assets/minecraft/models/item/bow.json @@ -65,6 +65,26 @@ "pull": 0.9 }, "model": "leashedplayer:item/bow_lra_pulling_2" + }, + { + "predicate": { + "nestle_rope_arrow_pulling": 1 + }, + "model": "leashedplayer:item/bow_nra_pulling_0" + }, + { + "predicate": { + "nestle_rope_arrow_pulling": 1, + "pull": 0.65 + }, + "model": "leashedplayer:item/bow_nra_pulling_1" + }, + { + "predicate": { + "nestle_rope_arrow_pulling": 1, + "pull": 0.9 + }, + "model": "leashedplayer:item/bow_nra_pulling_2" } ] } diff --git a/src/main/resources/assets/minecraft/models/item/crossbow.json b/src/main/resources/assets/minecraft/models/item/crossbow.json index e0d0ef9..d4a8f46 100644 --- a/src/main/resources/assets/minecraft/models/item/crossbow.json +++ b/src/main/resources/assets/minecraft/models/item/crossbow.json @@ -65,6 +65,13 @@ "leash_rope_arrow": 1 }, "model": "leashedplayer:item/crossbow_leash_rope_arrow" + }, + { + "predicate": { + "charged": 1, + "nestle_rope_arrow": 1 + }, + "model": "leashedplayer:item/crossbow_nestle_rope_arrow" } ] }