2024-10-06
修复了 更新的BUG
This commit is contained in:
parent
1f6e23e2a1
commit
c3a1ac8fc4
|
|
@ -1,8 +1,8 @@
|
|||
// 1.21.1 2024-10-05T22:48:57.4441437 Advancements
|
||||
// 1.21.1 2024-10-06T00:40:59.6903049 Advancements
|
||||
4d97adba079f1966090a52443bb439319f550680 data/leashedplayer/advancement/advancement_leash_arrow.json
|
||||
f16184b81ea35a0fbd8f2c49b085a96c32818c69 data/leashedplayer/advancement/dog_running_player.json
|
||||
bce12ed339b3b0fded263ba039f7a4e6fcfb84ca data/leashedplayer/advancement/follow_arrow.json
|
||||
29911bbed5a1b7ede2b08d82e6716cd9463bc061 data/leashedplayer/advancement/leashed_friend.json
|
||||
25f6b476b194a27c0fe0e75d74ac3a7ff4054789 data/leashedplayer/advancement/leashed_self.json
|
||||
3daef978c8533b3cab963642193faf7181a8f220 data/leashedplayer/advancement/leash_arrow.json
|
||||
a69a455855fb6dd8a8ac131a55099de5de45d7c4 data/leashedplayer/advancement/leash_arrow.json
|
||||
133f844ffafd37b9ba57cafa96350f035cac57f9 data/leashedplayer/advancement/leash_start.json
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
"display": {
|
||||
"announce_to_chat": false,
|
||||
"description": {
|
||||
"translate": "advancement.leashedplayer.leashed_friend.desc"
|
||||
"translate": "advancement.leashedplayer.leash_arrow.desc"
|
||||
},
|
||||
"hidden": true,
|
||||
"icon": {
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package com.r3944realms.leashedplayer.content.entities;
|
|||
import com.r3944realms.leashedplayer.config.LeashPlayerCommonConfig;
|
||||
import com.r3944realms.leashedplayer.content.gamerules.GameruleRegistry;
|
||||
import com.r3944realms.leashedplayer.content.gamerules.Server.KeepLeashNotDropTime;
|
||||
import com.r3944realms.leashedplayer.content.items.type.LeashRopeArrowItem;
|
||||
import com.r3944realms.leashedplayer.content.items.ModItemRegister;
|
||||
import com.r3944realms.leashedplayer.modInterface.ILivingEntityExtension;
|
||||
import com.r3944realms.leashedplayer.modInterface.PlayerLeashable;
|
||||
|
|
@ -34,6 +33,10 @@ public class LeashRopeArrow extends AbstractArrow {
|
|||
public LeashRopeArrow(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);
|
||||
if(serverPlayer != null && !level().isClientSide) {
|
||||
Entity leashDataEntity = PlayerLeashable.getLeashDataEntity(serverPlayer, (ServerLevel) level());
|
||||
if(leashDataEntity instanceof LeashRopeArrow leashRopeArrow) {
|
||||
leashRopeArrow.setOwner(null);
|
||||
}
|
||||
((PlayerLeashable)serverPlayer).setLeashedTo(this, true);
|
||||
}
|
||||
}
|
||||
|
|
@ -41,6 +44,10 @@ public class LeashRopeArrow extends AbstractArrow {
|
|||
public LeashRopeArrow(EntityType<? extends AbstractArrow> entityType, LivingEntity pOwner, Level pLevel, ItemStack pPickupItemStack, @Nullable ItemStack pFiredFromWeapon) {
|
||||
super(entityType, pOwner, pLevel, pPickupItemStack, pFiredFromWeapon);
|
||||
if(pOwner instanceof PlayerLeashable lPlayer && !level().isClientSide) {
|
||||
Entity leashDataEntity = PlayerLeashable.getLeashDataEntity((ServerPlayer) lPlayer, (ServerLevel) level());
|
||||
if(leashDataEntity instanceof LeashRopeArrow leashRopeArrow) {
|
||||
leashRopeArrow.setOwner(null);
|
||||
}
|
||||
lPlayer.setLeashedTo(this, true);
|
||||
}
|
||||
}
|
||||
|
|
@ -95,7 +102,7 @@ public class LeashRopeArrow extends AbstractArrow {
|
|||
if( owner != null ) {
|
||||
if(this.equals(leashDataEntity)) {
|
||||
((PlayerLeashable) owner).setLeashedTo(pPlayer, true);
|
||||
ItemEntity itemEntity = new ItemEntity(level(), getX(), getY(), getZ(), Items.ARROW.getDefaultInstance());
|
||||
ItemEntity itemEntity = new ItemEntity(level(), getX(), getY(), getZ(), getOrginalItemStack());
|
||||
level().addFreshEntity(itemEntity);
|
||||
discard();
|
||||
}
|
||||
|
|
@ -114,7 +121,7 @@ public class LeashRopeArrow extends AbstractArrow {
|
|||
if(this.equals(leashDataEntity)) {
|
||||
Entity owner = getOwner();
|
||||
((PlayerLeashable)owner).setLeashedTo(pPlayer, true);
|
||||
ItemEntity itemEntity = new ItemEntity(level(), getX(), getY(), getZ(), Items.ARROW.getDefaultInstance());
|
||||
ItemEntity itemEntity = new ItemEntity(level(), getX(), getY(), getZ(), getOrginalItemStack());
|
||||
level().addFreshEntity(itemEntity);
|
||||
discard();
|
||||
}
|
||||
|
|
@ -125,30 +132,41 @@ public class LeashRopeArrow extends AbstractArrow {
|
|||
|
||||
return super.tryPickup(pPlayer);
|
||||
}
|
||||
|
||||
protected void hitOnEntityHandler(Entity pEntity) {
|
||||
//NOOP
|
||||
}
|
||||
protected ItemStack getOrginalItemStack() {
|
||||
return Items.ARROW.getDefaultInstance();
|
||||
}
|
||||
protected ItemStack getSelfItemStack() {
|
||||
return ModItemRegister.LEASH_ROPE_ARROW.get().getDefaultInstance();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void tickDespawn() {
|
||||
this.life++;
|
||||
if (this.life >= maxLifeTime) {
|
||||
ItemEntity leash_rope_arrow = new ItemEntity(this.level(), this.position().x, this.position().y, this.position().z, ModItemRegister.LEASH_ROPE_ARROW.get().getDefaultInstance());
|
||||
ItemEntity leash_rope_arrow = new ItemEntity(this.level(), this.position().x, this.position().y, this.position().z, getOrginalItemStack());
|
||||
this.level().addFreshEntity(leash_rope_arrow);
|
||||
this.discard();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onHitBlock(@NotNull BlockHitResult pResult) {
|
||||
if(!level().isClientSide) {
|
||||
if (getOwner() instanceof PlayerLeashable pL) {
|
||||
if (this.level().getBlockState(pResult.getBlockPos()).is(BlockTags.FENCES)) {
|
||||
Entity leashDataEntity = PlayerLeashable.getLeashDataEntity((ServerPlayer) getOwner(), (ServerLevel) level());
|
||||
if(leashDataEntity != null) pL.dropLeash(true, !(leashDataEntity instanceof LeashRopeArrow));
|
||||
if(leashDataEntity != null) {
|
||||
pL.dropLeash(true, !(leashDataEntity instanceof LeashRopeArrow));
|
||||
}
|
||||
Entity leashKnotFence = PlayerLeashable.createLeashKnotFence((ServerLevel) this.level(), pResult.getBlockPos());
|
||||
ILivingEntityExtension pLL = (ILivingEntityExtension) pL;
|
||||
pLL.setKeepLeashTick(GameruleRegistry.getGameruleIntValue(level(), KeepLeashNotDropTime.ID));
|
||||
pL.setLeashedTo(leashKnotFence, true);
|
||||
ItemEntity arrow = new ItemEntity(this.level(), this.position().x, this.position().y, this.position().z, Items.ARROW.getDefaultInstance());
|
||||
ItemEntity arrow = new ItemEntity(this.level(), this.position().x, this.position().y, this.position().z, getOrginalItemStack());
|
||||
this.level().addFreshEntity(arrow);
|
||||
discard();
|
||||
}
|
||||
|
|
@ -175,7 +193,7 @@ public class LeashRopeArrow extends AbstractArrow {
|
|||
} else if (this.getOwner() instanceof PlayerLeashable pL) {
|
||||
Entity leashDataEntity = PlayerLeashable.getLeashDataEntity((ServerPlayer) getOwner(), (ServerLevel) level());
|
||||
if(leashDataEntity != null) pL.dropLeash(true, !(leashDataEntity instanceof LeashRopeArrow));
|
||||
ItemEntity arrow = new ItemEntity(this.level(), this.position().x, this.position().y, this.position().z, Items.ARROW.getDefaultInstance());
|
||||
ItemEntity arrow = new ItemEntity(this.level(), this.position().x, this.position().y, this.position().z, getSelfItemStack());
|
||||
ILivingEntityExtension pLL = (ILivingEntityExtension) pL;
|
||||
pLL.setKeepLeashTick(GameruleRegistry.getGameruleIntValue(level(), KeepLeashNotDropTime.ID));
|
||||
pL.setLeashedTo(pResult.getEntity(), true);
|
||||
|
|
@ -186,7 +204,7 @@ public class LeashRopeArrow extends AbstractArrow {
|
|||
if (getOwner() instanceof PlayerLeashable pL) {
|
||||
Entity leashDataEntity = PlayerLeashable.getLeashDataEntity((ServerPlayer) getOwner(), (ServerLevel) level());
|
||||
if(leashDataEntity != null) pL.dropLeash(true, true);
|
||||
ItemEntity arrow = new ItemEntity(this.level(), this.position().x, this.position().y, this.position().z, Items.ARROW.getDefaultInstance());
|
||||
ItemEntity arrow = new ItemEntity(this.level(), this.position().x, this.position().y, this.position().z, getOrginalItemStack());
|
||||
ILivingEntityExtension pLL = (ILivingEntityExtension) pL;
|
||||
pLL.setKeepLeashTick(GameruleRegistry.getGameruleIntValue(level(), KeepLeashNotDropTime.ID));
|
||||
pL.setLeashedTo(leashKnotFence, true);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.r3944realms.leashedplayer.content.entities;
|
||||
|
||||
import com.r3944realms.leashedplayer.content.items.ModItemRegister;
|
||||
import net.minecraft.core.particles.ParticleTypes;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
|
|
@ -9,6 +10,7 @@ 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.item.Items;
|
||||
import net.minecraft.world.level.Level;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
|
@ -58,4 +60,12 @@ public class SpectralLeashRopeArrow extends LeashRopeArrow {
|
|||
pCompound.putInt("Duration", this.duration);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ItemStack getOrginalItemStack() {
|
||||
return Items.SPECTRAL_ARROW.getDefaultInstance();
|
||||
}
|
||||
@Override
|
||||
protected ItemStack getSelfItemStack() {
|
||||
return ModItemRegister.SPECTRAL_LEASH_ROPE_ARROW.get().getDefaultInstance();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ public class ModAdvancementGenerator implements AdvancementProvider.AdvancementG
|
|||
AdvancementHolder hasLeashRopeArrow = Advancement.Builder.advancement().display(
|
||||
ModItemRegister.LEASH_ROPE_ARROW.get(),
|
||||
Component.translatable(ModAdvancementKey.LEASH_ARROW.getNameKey()),
|
||||
Component.translatable(ModAdvancementKey.LEASHED_FRIEND.getDescKey()),
|
||||
Component.translatable(ModAdvancementKey.LEASH_ARROW.getDescKey()),
|
||||
null,
|
||||
AdvancementType.TASK,
|
||||
true,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user