2024/12/07

修复发射器发射拴绳类箭矢拾取时数量直接copy发射器里的数量的BUG
This commit is contained in:
叁玖领域 2024-12-07 17:10:55 +08:00
parent 0ecfe88683
commit 8b759259ad
10 changed files with 106 additions and 68 deletions

View File

@ -1,2 +1,2 @@
// 1.21 2024-11-27T00:15:38.1934553 Languages: en_us for mod: leashedplayer
d32d19599105d6c5575757a7f0344f066445bd15 assets/leashedplayer/lang/en_us.json
// 1.21 2024-12-07T16:59:56.8625511 Languages: en_us for mod: leashedplayer
b307f81b4c4d1f4ab0e3520c4028c9addd42b840 assets/leashedplayer/lang/en_us.json

View File

@ -1,2 +1,2 @@
// 1.21 2024-11-27T00:15:38.1929375 Languages: zh_cn for mod: leashedplayer
be8f599c80c4ea7e7f6de238f6acf213fe9827d2 assets/leashedplayer/lang/zh_cn.json
// 1.21 2024-12-07T16:59:56.8605492 Languages: zh_cn for mod: leashedplayer
4099d0ec30ba8cf765f5e9d492644b2fb8a60b30 assets/leashedplayer/lang/zh_cn.json

View File

@ -1,2 +1,2 @@
// 1.21 2024-11-27T00:15:38.1846441 Languages: zh_tw for mod: leashedplayer
73006b0556ae8066c61837a9ff35a1b50126f510 assets/leashedplayer/lang/zh_tw.json
// 1.21 2024-12-07T16:59:56.8583125 Languages: zh_tw for mod: leashedplayer
b031b47a2ec98923235e85b63310b71e5f2b0d86 assets/leashedplayer/lang/zh_tw.json

View File

@ -58,6 +58,11 @@
"item.minecraft.potion.effect.no_leash": "No Leash Potion",
"item.minecraft.splash_potion.effect.no_leash": "Splash No Leash Potion",
"item.minecraft.tipped_arrow.effect.no_leash": "Arrow of No Leash",
"item.nestle_rope_arrow.desc.1": "§7This arrow will carry the owner along with its flight:",
"item.nestle_rope_arrow.desc.2": "§c1.§r If it hits an entity, it will leash the owner with the entity and drop as a normal arrow.",
"item.nestle_rope_arrow.desc.3": "",
"item.nestle_rope_arrow.desc.4": "",
"item.nestle_rope_arrow.desc.5": "",
"item.spectral_leash_rope_arrow.desc": "§c2.§r Strike the entity to give it a §e§lGlowing§r effect.",
"item.tipped_leash_rope_arrow.desc": "§c2.§rStrike the entity to give it a Potion effect.",
"item.tipped_leash_rope_arrow.name": "Tipped Leash Rope Arrow Soaked By %1$s",

View File

@ -58,6 +58,11 @@
"item.minecraft.potion.effect.no_leash": "禁拴药水",
"item.minecraft.splash_potion.effect.no_leash": "喷溅型禁拴药水",
"item.minecraft.tipped_arrow.effect.no_leash": "禁拴之箭",
"item.nestle_rope_arrow.desc.1": "§7该箭将会携带拥有者随其飞行",
"item.nestle_rope_arrow.desc.2": "§c1.§r 若击中生物时,将持有者与其拴在一起并已普通箭形式掉落;",
"item.nestle_rope_arrow.desc.3": "",
"item.nestle_rope_arrow.desc.4": "",
"item.nestle_rope_arrow.desc.5": "",
"item.spectral_leash_rope_arrow.desc": "§c2.§r 击中实体给与其§e§l发光§7(§e§lGlowing§7)§r效果",
"item.tipped_leash_rope_arrow.desc": "§c2.§r 击中实体给与其药水效果",
"item.tipped_leash_rope_arrow.name": "用%1$s浸泡过的拴绳箭",

View File

@ -58,6 +58,11 @@
"item.minecraft.potion.effect.no_leash": "禁拴藥水",
"item.minecraft.splash_potion.effect.no_leash": "噴濺型禁拴藥水",
"item.minecraft.tipped_arrow.effect.no_leash": "禁拴之箭",
"item.nestle_rope_arrow.desc.1": "§7該箭將會攜帶擁有者隨其飛行",
"item.nestle_rope_arrow.desc.2": "§c1.§r 若擊中生物時,將持有者與其拴在一起其上並以普通箭的形式掉落;",
"item.nestle_rope_arrow.desc.3": "",
"item.nestle_rope_arrow.desc.4": "",
"item.nestle_rope_arrow.desc.5": "",
"item.spectral_leash_rope_arrow.desc": "擊中實體給予其§e§l發光§7(§e§lGlowing§7)§r效果",
"item.tipped_leash_rope_arrow.desc": "擊中實體給予其药水效果",
"item.tipped_leash_rope_arrow.name": "蘸有%1$s的拴繩箭",

View File

@ -48,7 +48,9 @@ public class LeashRopeArrow extends AbstractArrow {
}
private PotionContents getPotionContents() {
return this.getPickupItemStackOrigin().getOrDefault(DataComponents.POTION_CONTENTS, PotionContents.EMPTY);
ItemStack pickupItemStackOrigin = this.getPickupItemStackOrigin();
pickupItemStackOrigin.setCount(1);
return pickupItemStackOrigin.getOrDefault(DataComponents.POTION_CONTENTS, PotionContents.EMPTY);
}
public void addEffect(MobEffectInstance pEffectInstance) {
@ -135,14 +137,43 @@ public class LeashRopeArrow extends AbstractArrow {
if(life <= 40 ) {
return false;
}
else {
} else {
PlayerLeashable playerLeashable = (PlayerLeashable) pPlayer;
if(this.getOwner() == null) {//未有Owner始终可检
return true;
}
if(life <= 240) {
if(pPlayer.isShiftKeyDown()) {
if(this.getOwner() != null) {//未有Owner始终可检
if(life <= 240) {
if(pPlayer.isShiftKeyDown()) {
Entity leashDataEntity = this.getOwner() instanceof PlayerLeashable ? PlayerLeashable.getLeashDataEntity((ServerPlayer) this.getOwner(), (ServerLevel) level()) : this.getOwner();
if(this.ownedBy(pPlayer)) {
this.pickup = Pickup.ALLOWED;
if(this.equals(leashDataEntity)) {
pPlayer.playSound(SoundEvents.LEASH_KNOT_BREAK, 1, 1);
playerLeashable.dropLeash(true, false);
}
} else {
if(life >= 120) {
Entity owner = getOwner();
if( owner != null ) {
// if(this.equals(leashDataEntity)) {
if(owner instanceof PlayerLeashable player) {
player.setLeashedTo(pPlayer, true);
pPlayer.playSound(SoundEvents.LEASH_KNOT_PLACE, 1, 1);
} else if(owner instanceof Leashable leashable) {
leashable.setLeashedTo(pPlayer, true);
pPlayer.playSound(SoundEvents.LEASH_KNOT_PLACE, 1, 1);
}
ItemEntity itemEntity = new ItemEntity(level(), getX(), getY(), getZ(), getOrginalItemStack());
level().addFreshEntity(itemEntity);
discard();
// }
}
} else return false;
}
} else {
((ServerPlayer)pPlayer).sendSystemMessage(Component.translatable(PUSH_SHIFT_TO_PICKUP_QUICKLY), true);
return false;
}
} else {
Entity leashDataEntity = this.getOwner() instanceof PlayerLeashable ? PlayerLeashable.getLeashDataEntity((ServerPlayer) this.getOwner(), (ServerLevel) level()) : this.getOwner();
if(this.ownedBy(pPlayer)) {
this.pickup = Pickup.ALLOWED;
@ -151,53 +182,23 @@ public class LeashRopeArrow extends AbstractArrow {
playerLeashable.dropLeash(true, false);
}
} else {
if(life >= 120) {
Entity owner = getOwner();
if( owner != null ) {
// if(this.equals(leashDataEntity)) {
if(owner instanceof PlayerLeashable player) {
player.setLeashedTo(pPlayer, true);
pPlayer.playSound(SoundEvents.LEASH_KNOT_PLACE, 1, 1);
} else if(owner instanceof Leashable leashable) {
leashable.setLeashedTo(pPlayer, true);
pPlayer.playSound(SoundEvents.LEASH_KNOT_PLACE, 1, 1);
}
ItemEntity itemEntity = new ItemEntity(level(), getX(), getY(), getZ(), getOrginalItemStack());
level().addFreshEntity(itemEntity);
discard();
// }
} else return true;
} else return false;
}
} else {
((ServerPlayer)pPlayer).sendSystemMessage(Component.translatable(PUSH_SHIFT_TO_PICKUP_QUICKLY), true);
return false;
}
Entity owner = getOwner();
if(owner instanceof PlayerLeashable player) {
player.setLeashedTo(pPlayer, true);
pPlayer.playSound(SoundEvents.LEASH_KNOT_PLACE, 1, 1);
} else if(owner instanceof Leashable leashable) {
leashable.setLeashedTo(pPlayer, true);
pPlayer.playSound(SoundEvents.LEASH_KNOT_PLACE, 1, 1);
}
ItemEntity itemEntity = new ItemEntity(level(), getX(), getY(), getZ(), getOrginalItemStack());
level().addFreshEntity(itemEntity);
discard();
}
else {
Entity leashDataEntity = this.getOwner() instanceof PlayerLeashable ? PlayerLeashable.getLeashDataEntity((ServerPlayer) this.getOwner(), (ServerLevel) level()) : this.getOwner();
if(this.ownedBy(pPlayer)) {
if (this.pickup == Pickup.DISALLOWED) this.pickup = Pickup.ALLOWED;
if(this.equals(leashDataEntity)) {
pPlayer.playSound(SoundEvents.LEASH_KNOT_BREAK, 1, 1);
playerLeashable.dropLeash(true, false);
}
} else {
Entity owner = getOwner();
if(owner instanceof PlayerLeashable player) {
player.setLeashedTo(pPlayer, true);
pPlayer.playSound(SoundEvents.LEASH_KNOT_PLACE, 1, 1);
} else if(owner instanceof Leashable leashable) {
leashable.setLeashedTo(pPlayer, true);
pPlayer.playSound(SoundEvents.LEASH_KNOT_PLACE, 1, 1);
}
ItemEntity itemEntity = new ItemEntity(level(), getX(), getY(), getZ(), getOrginalItemStack());
level().addFreshEntity(itemEntity);
discard();
}
}
} else if (this.pickup != Pickup.CREATIVE_ONLY) this.pickup = Pickup.ALLOWED;
else return false;
}
return super.tryPickup(pPlayer);
@ -424,8 +425,8 @@ public class LeashRopeArrow extends AbstractArrow {
ItemEntity lead = new ItemEntity(this.level(), this.position().x, this.position().y, this.position().z, Items.LEAD.getDefaultInstance());
this.level().addFreshEntity(lead);
}
super.onHitEntity(pResult);
}
else super.onHitEntity(pResult);
}
/**
* Handles an entity event received from a {@link net.minecraft.network.protocol.game.ClientboundEntityEventPacket}.

View File

@ -87,7 +87,7 @@ public class NestleRopeArrow extends AbstractArrow {
if (life <= 40)
return false;
else {
if (this.pickup == Pickup.DISALLOWED) this.pickup = Pickup.ALLOWED;
this.pickup = Pickup.ALLOWED;
}
return super.tryPickup(pPlayer);
}
@ -96,7 +96,7 @@ public class NestleRopeArrow extends AbstractArrow {
public void tick() {
super.tick();
Entity owner = getOwner();
if(owner != null && !owner.level().isClientSide) {
if (owner != null && !owner.level().isClientSide) {
if (!inGround) {
if (owner.getVehicle() == null) owner.startRiding(this);
}
@ -105,6 +105,10 @@ public class NestleRopeArrow extends AbstractArrow {
setOwner(null);
}
}
if (this.inGround && this.inGroundTime != 0) {
this.level().broadcastEntityEvent(this, (byte)0);
this.setPickupItemStack(new ItemStack(getSelfItemStack().getItem()));
}
}
@Override

View File

@ -2,6 +2,7 @@ package com.r3944realms.leashedplayer.content.items.type;
import com.r3944realms.leashedplayer.content.entities.LeashRopeArrow;
import com.r3944realms.leashedplayer.content.entities.ModEntityRegister;
import com.r3944realms.leashedplayer.content.entities.NestleRopeArrow;
import net.minecraft.core.Direction;
import net.minecraft.core.Position;
import net.minecraft.network.chat.Component;
@ -19,7 +20,12 @@ import javax.annotation.Nullable;
import java.util.List;
public class NestleRopeArrowItem extends ArrowItem implements INestleRopeArrow {
public static final String descKey = "item.nestle_rope_arrow.description",
DESC_1 = "item.nestle_rope_arrow.desc.1",
DESC_2 = "item.nestle_rope_arrow.desc.2",
DESC_3 = "item.nestle_rope_arrow.desc.3",
DESC_4 = "item.nestle_rope_arrow.desc.4",
DESC_5 = "item.nestle_rope_arrow.desc.5";
public NestleRopeArrowItem(Item.Properties pProperties) {
super(pProperties);
}
@ -30,10 +36,18 @@ public class NestleRopeArrowItem extends ArrowItem implements INestleRopeArrow {
@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);
NestleRopeArrow arrow = new NestleRopeArrow(ModEntityRegister.NESTLE_ROPE_ARROW.get(), pPos.x(), pPos.y(), pPos.z(), pLevel, pStack, null, null);
arrow.pickup = AbstractArrow.Pickup.DISALLOWED;
return arrow;
}
public void appendHoverText(@NotNull ItemStack pStack, Item.@NotNull TooltipContext pContext, @NotNull List<Component> pTooltipComponents, @NotNull TooltipFlag pTooltipFlag) {
pTooltipComponents.addAll(List.of(
Component.translatable(DESC_1),
Component.translatable(DESC_2),
Component.translatable(DESC_3),
Component.translatable(DESC_4),
Component.translatable(DESC_5)
));
}
}

View File

@ -12,10 +12,7 @@ import com.r3944realms.leashedplayer.content.entities.ModEntityRegister;
import com.r3944realms.leashedplayer.content.gamerules.Server.*;
import com.r3944realms.leashedplayer.content.items.ModCreativeTab;
import com.r3944realms.leashedplayer.content.items.ModItemRegister;
import com.r3944realms.leashedplayer.content.items.type.LeadBreakerItem;
import com.r3944realms.leashedplayer.content.items.type.LeashRopeArrowItem;
import com.r3944realms.leashedplayer.content.items.type.SpectralLeashRopeArrowItem;
import com.r3944realms.leashedplayer.content.items.type.TippedLeashRopeArrow;
import com.r3944realms.leashedplayer.content.items.type.*;
import com.r3944realms.leashedplayer.content.sounds.ModSoundRegister;
import com.r3944realms.leashedplayer.datagen.provider.attributes.ModPaintingVariants;
import com.r3944realms.leashedplayer.network.server.Code;
@ -23,6 +20,7 @@ import com.r3944realms.leashedplayer.network.server.DecreaseLeashRopeLength;
import com.r3944realms.leashedplayer.network.server.IncreaseLeashRopeLength;
import com.r3944realms.leashedplayer.utils.Enum.LanguageEnum;
import com.r3944realms.leashedplayer.utils.Enum.ModPartEnum;
import io.github.kunosayo.nestle.item.NestleItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import org.jetbrains.annotations.NotNull;
@ -59,6 +57,12 @@ public enum ModLangKeyValue {
DESC_ITEM_S_LEASH_R_ARROW_THREE(SpectralLeashRopeArrowItem.DESC, ModPartEnum.DESCRIPTION, "§c2.§r Strike the entity to give it a §e§lGlowing§r effect.", "§c2.§r 击中实体给与其§e§l发光§7(§e§lGlowing§7)§r效果", "擊中實體給予其§e§l發光§7(§e§lGlowing§7)§r效果", false),
DESC_ITEM_T_LEASH_R_ARROW_THREE(TippedLeashRopeArrow.DESC, ModPartEnum.DESCRIPTION, "§c2.§rStrike the entity to give it a Potion effect.", "§c2.§r 击中实体给与其药水效果", "擊中實體給予其药水效果", false),
DESC_ITEM_LEAD_BREAKER(LeadBreakerItem.HOVER_KEY, ModPartEnum.DESCRIPTION, "§7can break the link of leash", "§7可以破坏拴绳链接", "§7可以破壞拴繩鏈接", false),
DESC_ITEM_NESTLE_R_ARROW_ONE(NestleRopeArrowItem.DESC_1, ModPartEnum.DESCRIPTION, "§7This arrow will carry the owner along with its flight:", "§7该箭将会携带拥有者随其飞行", "§7該箭將會攜帶擁有者隨其飛行", false),
DESC_ITEM_NESTLE_R_ARROW_TWO(NestleRopeArrowItem.DESC_2, ModPartEnum.DESCRIPTION, "§c1.§r If it hits an entity, it will leash the owner with the entity and drop as a normal arrow.", "§c1.§r 若击中生物时,将持有者与其拴在一起并已普通箭形式掉落;", "§c1.§r 若擊中生物時,將持有者與其拴在一起其上並以普通箭的形式掉落;", false),
DESC_ITEM_NESTLE_R_ARROW_THREE(NestleRopeArrowItem.DESC_3, ModPartEnum.DESCRIPTION, "", "", "", false),
DESC_ITEM_NESTLE_R_ARROW_FORE(NestleRopeArrowItem.DESC_4, ModPartEnum.DESCRIPTION, "", "", "", false),
DESC_ITEM_NESTLE_R_ARROW_FIVE(NestleRopeArrowItem.DESC_5, ModPartEnum.DESCRIPTION, "", "", "", false),
//PAINTING
GROUP_PHOTO_TITLE(ModPaintingVariants.getPaintingVariantTitleKey(ModPaintingVariants.GROUP_PHOTO),ModPartEnum.TITLE, "§dGroup Photo §7[§6memorable§7]§r", "§d集体照 §7[§6纪念§7]§r", "§d集體照 §7[§6紀念§7]§r", false),
GROUP_PHOTO_AUTHOR(ModPaintingVariants.getPaintingVariantAuthorKey(ModPaintingVariants.GROUP_PHOTO),ModPartEnum.AUTHOR, "§9Leisure §4Time §eDock§r","§9闲趣§4时§e坞§r","§9閑趣§4時§e塢§r",false),