2024/11/25
提升版本号,联动内容#1
|
|
@ -1,4 +1,4 @@
|
|||
# 版本 0.0.3.9.9.7 提前介绍c[最终版本对于0.0.4] 【注意:本解釋簡繁混寫,因爲趕時間,所以並不怎麽規範,請諒解】
|
||||
# 版本 0.0.3.9.9.8 提前介绍c[最终版本对于0.0.4] 【注意:本解釋簡繁混寫,因爲趕時間,所以並不怎麽規範,請諒解】
|
||||
## 简介
|
||||
现在开始你可以用拴绳拴住玩家,也可以拴住自己了,不如尝试拴住彼此来通关我的世界吧(
|
||||
|
||||
|
|
@ -64,3 +64,6 @@
|
|||
* `LP.OpenTOPNeededModeWhenScreenIsNotNull` - 此规则决定,是否在在打开 屏幕{除Top的NoteGui 和 聊天GUI外} 情况下改变Top的显示模式为NEEDED [默认值: true]
|
||||
|
||||
* `LP.CanCommonPlayerChangeSelfTalkArea` - 此规则决定,是否普通玩家可以修改自己的聊天可见区域 [默认值: true]
|
||||
|
||||
## 联动内容
|
||||
# 与Nestle 的 贴贴拴绳箭 (未完成)
|
||||
BIN
Resource/bow_nra_pulling_0.png
Normal file
|
After Width: | Height: | Size: 364 B |
BIN
Resource/bow_nra_pulling_1.png
Normal file
|
After Width: | Height: | Size: 382 B |
BIN
Resource/bow_nra_pulling_2.png
Normal file
|
After Width: | Height: | Size: 404 B |
|
Before Width: | Height: | Size: 475 B |
BIN
Resource/crossbow_nestle_rope_arrow.png
Normal file
|
After Width: | Height: | Size: 498 B |
|
Before Width: | Height: | Size: 243 B |
BIN
Resource/nestle-0.1.1.jar
Normal file
BIN
Resource/nestle_rope_arrow.png
Normal file
|
After Width: | Height: | Size: 273 B |
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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": "禁拴药水",
|
||||
|
|
|
|||
|
|
@ -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": "禁拴藥水",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/bow",
|
||||
"textures": {
|
||||
"layer0": "leashedplayer:item/bow_nra_pulling_0"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/bow",
|
||||
"textures": {
|
||||
"layer0": "leashedplayer:item/bow_nra_pulling_1"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/bow",
|
||||
"textures": {
|
||||
"layer0": "leashedplayer:item/bow_nra_pulling_2"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/crossbow",
|
||||
"textures": {
|
||||
"layer0": "leashedplayer:item/crossbow_nestle_rope_arrow"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "leashedplayer:item/nestle_rope_arrow"
|
||||
}
|
||||
}
|
||||
|
|
@ -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"
|
||||
]
|
||||
}
|
||||
|
|
@ -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
|
||||
));
|
||||
});
|
||||
|
||||
}
|
||||
|
|
@ -119,6 +122,7 @@ public abstract class ClientEventHandler {
|
|||
|
||||
@SubscribeEvent
|
||||
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);
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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<NestleRopeArrow> {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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<CommandSourceStack> dispatcher) {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -28,6 +28,15 @@ public class ModEntityRegister {
|
|||
.updateInterval(20)
|
||||
.build("spectral_leash_rope_arrow")
|
||||
);
|
||||
public static final DeferredHolder<EntityType<?>, EntityType<NestleRopeArrow>> NESTLE_ROPE_ARROW = ENTITY_TYPE.register(
|
||||
"nestle_rope_arrow",
|
||||
() -> EntityType.Builder.<NestleRopeArrow>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<?>, EntityType<LittlePlayer>> KID = ENTITY_TYPE.register("kid_player",
|
||||
() -> EntityType.Builder.of(LittlePlayer::new, MobCategory.MISC)
|
||||
.sized(0.6f,1.08f)
|
||||
|
|
|
|||
|
|
@ -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<? extends AbstractArrow> pEntityType, Level pLevel) {
|
||||
super(pEntityType, pLevel);
|
||||
}
|
||||
public NestleRopeArrow(EntityType<? extends AbstractArrow> 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<? extends AbstractArrow> 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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Potion> potionRegistryLookup = CommonHooks.resolveLookup(Registries.POTION);
|
||||
if(potionRegistryLookup != null) {
|
||||
|
|
|
|||
|
|
@ -34,6 +34,9 @@ public class ModItemRegister {
|
|||
public static final Supplier<Item> 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<Item> NESTLE_ROPE_ARROW = ModItemRegister.register("nestle_rope_arrow",
|
||||
() -> new NestleRopeArrowItem(new Item.Properties().stacksTo(16)));
|
||||
|
||||
public static final Supplier<Item> AMETHYST_SHEARS = ModItemRegister.register("amethyst_shears",
|
||||
() -> new LeadBreakerItem(ModToolTier.AMETHYST, new Item.Properties().component(DataComponents.TOOL, LeadBreakerItem.createToolProperties())
|
||||
.stacksTo(1)));
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Component> pTooltipComponents, @NotNull TooltipFlag pTooltipFlag) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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"))
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 273 B |
|
After Width: | Height: | Size: 364 B |
|
After Width: | Height: | Size: 382 B |
|
After Width: | Height: | Size: 404 B |
|
After Width: | Height: | Size: 498 B |
|
After Width: | Height: | Size: 301 B |
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||