commit
a0e2b95167
|
|
@ -32,7 +32,7 @@ mod_name=Leashed Player
|
||||||
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
|
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
|
||||||
mod_license=MIT
|
mod_license=MIT
|
||||||
# The mod version. See https://semver.org/
|
# The mod version. See https://semver.org/
|
||||||
mod_version=0.0.3.9.1
|
mod_version=0.0.3.9.2
|
||||||
# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository.
|
# 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.
|
# This should match the base package used for the mod sources.
|
||||||
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
|
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||||
|
|
|
||||||
|
|
@ -10,14 +10,11 @@ import com.r3944realms.leashedplayer.content.entities.LeashRopeArrow;
|
||||||
import com.r3944realms.leashedplayer.content.items.ModItemRegister;
|
import com.r3944realms.leashedplayer.content.items.ModItemRegister;
|
||||||
import com.r3944realms.leashedplayer.modInterface.PlayerLeashable;
|
import com.r3944realms.leashedplayer.modInterface.PlayerLeashable;
|
||||||
import net.minecraft.commands.CommandSourceStack;
|
import net.minecraft.commands.CommandSourceStack;
|
||||||
import net.minecraft.world.effect.MobEffect;
|
|
||||||
import net.minecraft.world.effect.MobEffectInstance;
|
import net.minecraft.world.effect.MobEffectInstance;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.Leashable;
|
import net.minecraft.world.entity.Leashable;
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
import net.minecraft.world.entity.player.Player;
|
|
||||||
import net.minecraft.world.item.Items;
|
import net.minecraft.world.item.Items;
|
||||||
import net.minecraft.world.item.alchemy.Potion;
|
|
||||||
import net.minecraft.world.item.alchemy.PotionBrewing;
|
import net.minecraft.world.item.alchemy.PotionBrewing;
|
||||||
import net.minecraft.world.item.alchemy.Potions;
|
import net.minecraft.world.item.alchemy.Potions;
|
||||||
import net.minecraft.world.level.block.DispenserBlock;
|
import net.minecraft.world.level.block.DispenserBlock;
|
||||||
|
|
@ -26,7 +23,6 @@ import net.neoforged.fml.common.EventBusSubscriber;
|
||||||
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent;
|
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||||
import net.neoforged.neoforge.event.RegisterCommandsEvent;
|
import net.neoforged.neoforge.event.RegisterCommandsEvent;
|
||||||
import net.neoforged.neoforge.event.brewing.RegisterBrewingRecipesEvent;
|
import net.neoforged.neoforge.event.brewing.RegisterBrewingRecipesEvent;
|
||||||
import net.neoforged.neoforge.event.entity.living.MobEffectEvent;
|
|
||||||
import net.neoforged.neoforge.event.tick.EntityTickEvent;
|
import net.neoforged.neoforge.event.tick.EntityTickEvent;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -55,16 +51,22 @@ public class CommonEventHandler {
|
||||||
MobEffectInstance effect = living.getEffect(ModEffectRegister.NO_LEASH_EFFECT);
|
MobEffectInstance effect = living.getEffect(ModEffectRegister.NO_LEASH_EFFECT);
|
||||||
if(effect != null && effect.getDuration() > 0){
|
if(effect != null && effect.getDuration() > 0){
|
||||||
if (entity instanceof PlayerLeashable player) {
|
if (entity instanceof PlayerLeashable player) {
|
||||||
if (player.getLeashHolder() != null)
|
if (player.getLeashHolder() != null) {
|
||||||
|
if (player.getLeashHolder() instanceof LeashRopeArrow arrow)
|
||||||
|
arrow.setOwner(null);
|
||||||
player.dropLeash(true, !(player.getLeashHolder() instanceof LeashRopeArrow));
|
player.dropLeash(true, !(player.getLeashHolder() instanceof LeashRopeArrow));
|
||||||
|
}
|
||||||
} else if (entity instanceof Leashable leashable) {
|
} else if (entity instanceof Leashable leashable) {
|
||||||
if (leashable.getLeashHolder() != null)
|
if (leashable.getLeashHolder() != null) {
|
||||||
|
if (leashable.getLeashHolder() instanceof LeashRopeArrow arrow)
|
||||||
|
arrow.setOwner(null);
|
||||||
leashable.dropLeash(true, !(leashable.getLeashHolder() instanceof LeashRopeArrow));
|
leashable.dropLeash(true, !(leashable.getLeashHolder() instanceof LeashRopeArrow));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
@EventBusSubscriber(modid = LeashedPlayer.MOD_ID, bus = EventBusSubscriber.Bus.MOD)
|
@EventBusSubscriber(modid = LeashedPlayer.MOD_ID, bus = EventBusSubscriber.Bus.MOD)
|
||||||
public static class Mod extends CommonEventHandler {
|
public static class Mod extends CommonEventHandler {
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.r3944realms.leashedplayer.content.entities;
|
package com.r3944realms.leashedplayer.content.entities;
|
||||||
|
|
||||||
import com.r3944realms.leashedplayer.config.LeashPlayerCommonConfig;
|
import com.r3944realms.leashedplayer.config.LeashPlayerCommonConfig;
|
||||||
|
import com.r3944realms.leashedplayer.content.effects.ModEffectRegister;
|
||||||
import com.r3944realms.leashedplayer.content.gamerules.GameruleRegistry;
|
import com.r3944realms.leashedplayer.content.gamerules.GameruleRegistry;
|
||||||
import com.r3944realms.leashedplayer.content.gamerules.Server.KeepLeashNotDropTime;
|
import com.r3944realms.leashedplayer.content.gamerules.Server.KeepLeashNotDropTime;
|
||||||
import com.r3944realms.leashedplayer.content.items.ModItemRegister;
|
import com.r3944realms.leashedplayer.content.items.ModItemRegister;
|
||||||
|
|
@ -9,8 +10,10 @@ import com.r3944realms.leashedplayer.modInterface.PlayerLeashable;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.tags.BlockTags;
|
import net.minecraft.tags.BlockTags;
|
||||||
|
import net.minecraft.world.effect.MobEffectInstance;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
|
import net.minecraft.world.entity.Leashable;
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
import net.minecraft.world.entity.decoration.LeashFenceKnotEntity;
|
import net.minecraft.world.entity.decoration.LeashFenceKnotEntity;
|
||||||
import net.minecraft.world.entity.item.ItemEntity;
|
import net.minecraft.world.entity.item.ItemEntity;
|
||||||
|
|
@ -59,8 +62,10 @@ public class LeashRopeArrow extends AbstractArrow {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setOwner(@Nullable Entity pEntity) {
|
public void setOwner(@Nullable Entity pEntity) {
|
||||||
super.setOwner(pEntity);
|
// super.setOwner(pEntity);
|
||||||
|
boolean isNull = pEntity == null;
|
||||||
|
this.ownerUUID = isNull ? null : pEntity.getUUID();
|
||||||
|
this.cachedOwner = isNull ? null : pEntity;
|
||||||
this.pickup = this.pickup == Pickup.CREATIVE_ONLY ? this.pickup : Pickup.DISALLOWED;
|
this.pickup = this.pickup == Pickup.CREATIVE_ONLY ? this.pickup : Pickup.DISALLOWED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -92,7 +97,7 @@ public class LeashRopeArrow extends AbstractArrow {
|
||||||
}
|
}
|
||||||
if(life <= 240) {
|
if(life <= 240) {
|
||||||
if(pPlayer.isShiftKeyDown()) {
|
if(pPlayer.isShiftKeyDown()) {
|
||||||
Entity leashDataEntity = PlayerLeashable.getLeashDataEntity((ServerPlayer) this.getOwner(), (ServerLevel) level());
|
Entity leashDataEntity = this.getOwner() instanceof PlayerLeashable ? PlayerLeashable.getLeashDataEntity((ServerPlayer) this.getOwner(), (ServerLevel) level()) : this.getOwner();
|
||||||
if(this.ownedBy(pPlayer)) {
|
if(this.ownedBy(pPlayer)) {
|
||||||
this.pickup = Pickup.ALLOWED;
|
this.pickup = Pickup.ALLOWED;
|
||||||
if(this.equals(leashDataEntity)) playerLeashable.dropLeash(true, false);
|
if(this.equals(leashDataEntity)) playerLeashable.dropLeash(true, false);
|
||||||
|
|
@ -100,12 +105,16 @@ public class LeashRopeArrow extends AbstractArrow {
|
||||||
if(life >= 120) {
|
if(life >= 120) {
|
||||||
Entity owner = getOwner();
|
Entity owner = getOwner();
|
||||||
if( owner != null ) {
|
if( owner != null ) {
|
||||||
if(this.equals(leashDataEntity)) {
|
// if(this.equals(leashDataEntity)) {
|
||||||
((PlayerLeashable) owner).setLeashedTo(pPlayer, true);
|
if(owner instanceof PlayerLeashable player) {
|
||||||
|
player.setLeashedTo(pPlayer, true);
|
||||||
|
} else if(owner instanceof Leashable leashable) {
|
||||||
|
leashable.setLeashedTo(pPlayer, true);
|
||||||
|
}
|
||||||
ItemEntity itemEntity = new ItemEntity(level(), getX(), getY(), getZ(), getOrginalItemStack());
|
ItemEntity itemEntity = new ItemEntity(level(), getX(), getY(), getZ(), getOrginalItemStack());
|
||||||
level().addFreshEntity(itemEntity);
|
level().addFreshEntity(itemEntity);
|
||||||
discard();
|
discard();
|
||||||
}
|
// }
|
||||||
} else return true;
|
} else return true;
|
||||||
} else return false;
|
} else return false;
|
||||||
}
|
}
|
||||||
|
|
@ -113,18 +122,20 @@ public class LeashRopeArrow extends AbstractArrow {
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Entity leashDataEntity = PlayerLeashable.getLeashDataEntity((ServerPlayer) this.getOwner(), (ServerLevel) level());
|
Entity leashDataEntity = this.getOwner() instanceof PlayerLeashable ? PlayerLeashable.getLeashDataEntity((ServerPlayer) this.getOwner(), (ServerLevel) level()) : this.getOwner();
|
||||||
if(this.ownedBy(pPlayer)) {
|
if(this.ownedBy(pPlayer)) {
|
||||||
this.pickup = Pickup.ALLOWED;
|
this.pickup = Pickup.ALLOWED;
|
||||||
if(this.equals(leashDataEntity)) playerLeashable.dropLeash(true, false);
|
if(this.equals(leashDataEntity)) playerLeashable.dropLeash(true, false);
|
||||||
} else {
|
} else {
|
||||||
if(this.equals(leashDataEntity)) {
|
|
||||||
Entity owner = getOwner();
|
Entity owner = getOwner();
|
||||||
((PlayerLeashable)owner).setLeashedTo(pPlayer, true);
|
if(owner instanceof PlayerLeashable player) {
|
||||||
|
player.setLeashedTo(pPlayer, true);
|
||||||
|
} else if(owner instanceof Leashable leashable) {
|
||||||
|
leashable.setLeashedTo(pPlayer, true);
|
||||||
|
}
|
||||||
ItemEntity itemEntity = new ItemEntity(level(), getX(), getY(), getZ(), getOrginalItemStack());
|
ItemEntity itemEntity = new ItemEntity(level(), getX(), getY(), getZ(), getOrginalItemStack());
|
||||||
level().addFreshEntity(itemEntity);
|
level().addFreshEntity(itemEntity);
|
||||||
discard();
|
discard();
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -170,6 +181,18 @@ public class LeashRopeArrow extends AbstractArrow {
|
||||||
this.level().addFreshEntity(arrow);
|
this.level().addFreshEntity(arrow);
|
||||||
discard();
|
discard();
|
||||||
}
|
}
|
||||||
|
} else if(getOwner() instanceof Leashable L) {
|
||||||
|
if (this.level().getBlockState(pResult.getBlockPos()).is(BlockTags.FENCES)) {
|
||||||
|
Entity leashDataEntity = this.getOwner();
|
||||||
|
if(leashDataEntity != null) {
|
||||||
|
L.dropLeash(true, false);
|
||||||
|
}
|
||||||
|
Entity leashKnotFence = LeashFenceKnotEntity.getOrCreateKnot(this.level(), pResult.getBlockPos());
|
||||||
|
L.setLeashedTo(leashKnotFence, true);
|
||||||
|
ItemEntity arrow = new ItemEntity(this.level(), this.position().x, this.position().y, this.position().z, getOrginalItemStack());
|
||||||
|
this.level().addFreshEntity(arrow);
|
||||||
|
discard();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
super.onHitBlock(pResult);
|
super.onHitBlock(pResult);
|
||||||
|
|
@ -181,6 +204,12 @@ public class LeashRopeArrow extends AbstractArrow {
|
||||||
if(!level().isClientSide()){
|
if(!level().isClientSide()){
|
||||||
Entity entity = pResult.getEntity();
|
Entity entity = pResult.getEntity();
|
||||||
hitOnEntityHandler(entity);
|
hitOnEntityHandler(entity);
|
||||||
|
if(this.getOwner() instanceof LivingEntity livingEntity ) {
|
||||||
|
MobEffectInstance effect = livingEntity.getEffect(ModEffectRegister.NO_LEASH_EFFECT);
|
||||||
|
if(effect != null && effect.getDuration() > 0) {
|
||||||
|
this.setOwner(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
if(entity instanceof LivingEntity livingEntity) {
|
if(entity instanceof LivingEntity livingEntity) {
|
||||||
if(livingEntity.equals(this.getOwner())) return;
|
if(livingEntity.equals(this.getOwner())) return;
|
||||||
if(this.getOwner() == null && livingEntity instanceof PlayerLeashable pL) { //发射器发出或命令生成
|
if(this.getOwner() == null && livingEntity instanceof PlayerLeashable pL) { //发射器发出或命令生成
|
||||||
|
|
@ -201,10 +230,30 @@ public class LeashRopeArrow extends AbstractArrow {
|
||||||
this.level().addFreshEntity(arrow);
|
this.level().addFreshEntity(arrow);
|
||||||
discard();
|
discard();
|
||||||
} else {
|
} else {
|
||||||
|
if(entity instanceof Leashable leashable) {
|
||||||
|
if (getOwner() == null) {
|
||||||
|
Entity leashDataEntity = leashable.getLeashHolder();
|
||||||
|
if (leashDataEntity != null)
|
||||||
|
leashable.dropLeash(true, !(leashDataEntity instanceof LeashRopeArrow));
|
||||||
|
leashable.setLeashedTo(this, true);
|
||||||
|
this.setOwner(entity);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(entity instanceof LivingEntity living) {
|
||||||
|
if(this.getOwner() != null && this.getOwner()instanceof Leashable leashable) {
|
||||||
|
leashable.setLeashedTo(living, true);
|
||||||
|
ItemEntity arrow = new ItemEntity(this.level(), this.position().x, this.position().y, this.position().z, getOrginalItemStack());
|
||||||
|
this.level().addFreshEntity(arrow);
|
||||||
|
discard();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
ItemEntity lead = new ItemEntity(this.level(), this.position().x, this.position().y, this.position().z, Items.LEAD.getDefaultInstance());
|
ItemEntity lead = new ItemEntity(this.level(), this.position().x, this.position().y, this.position().z, Items.LEAD.getDefaultInstance());
|
||||||
this.level().addFreshEntity(lead);
|
this.level().addFreshEntity(lead);
|
||||||
}
|
}
|
||||||
} else if (entity instanceof LeashFenceKnotEntity leashKnotFence) {
|
}
|
||||||
|
else if (entity instanceof LeashFenceKnotEntity leashKnotFence) {
|
||||||
if (getOwner() instanceof PlayerLeashable pL) {
|
if (getOwner() instanceof PlayerLeashable pL) {
|
||||||
Entity leashDataEntity = PlayerLeashable.getLeashDataEntity((ServerPlayer) getOwner(), (ServerLevel) level());
|
Entity leashDataEntity = PlayerLeashable.getLeashDataEntity((ServerPlayer) getOwner(), (ServerLevel) level());
|
||||||
if(leashDataEntity != null) pL.dropLeash(true, true);
|
if(leashDataEntity != null) pL.dropLeash(true, true);
|
||||||
|
|
@ -223,4 +272,5 @@ public class LeashRopeArrow extends AbstractArrow {
|
||||||
}
|
}
|
||||||
super.onHitEntity(pResult);
|
super.onHitEntity(pResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ import net.minecraft.world.item.alchemy.Potion;
|
||||||
import net.minecraft.world.item.alchemy.PotionContents;
|
import net.minecraft.world.item.alchemy.PotionContents;
|
||||||
import net.neoforged.bus.api.IEventBus;
|
import net.neoforged.bus.api.IEventBus;
|
||||||
import net.neoforged.neoforge.common.CommonHooks;
|
import net.neoforged.neoforge.common.CommonHooks;
|
||||||
import net.neoforged.neoforge.common.NeoForge;
|
|
||||||
import net.neoforged.neoforge.registries.DeferredRegister;
|
import net.neoforged.neoforge.registries.DeferredRegister;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package com.r3944realms.leashedplayer.mixin.both;
|
||||||
|
|
||||||
import com.r3944realms.leashedplayer.LeashedPlayer;
|
import com.r3944realms.leashedplayer.LeashedPlayer;
|
||||||
import com.r3944realms.leashedplayer.content.commands.LeashCommand;
|
import com.r3944realms.leashedplayer.content.commands.LeashCommand;
|
||||||
|
import com.r3944realms.leashedplayer.content.effects.ModEffectRegister;
|
||||||
import com.r3944realms.leashedplayer.content.entities.LeashRopeArrow;
|
import com.r3944realms.leashedplayer.content.entities.LeashRopeArrow;
|
||||||
import com.r3944realms.leashedplayer.modInterface.ILivingEntityExtension;
|
import com.r3944realms.leashedplayer.modInterface.ILivingEntityExtension;
|
||||||
import com.r3944realms.leashedplayer.modInterface.PlayerLeashable;
|
import com.r3944realms.leashedplayer.modInterface.PlayerLeashable;
|
||||||
|
|
@ -11,6 +12,7 @@ import net.minecraft.network.syncher.EntityDataAccessor;
|
||||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||||
import net.minecraft.network.syncher.SynchedEntityData;
|
import net.minecraft.network.syncher.SynchedEntityData;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
import net.minecraft.world.effect.MobEffectInstance;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
import net.minecraft.world.entity.Leashable;
|
import net.minecraft.world.entity.Leashable;
|
||||||
|
|
@ -188,7 +190,7 @@ public abstract class MixinPlayer extends LivingEntity implements PlayerLeashabl
|
||||||
@Unique
|
@Unique
|
||||||
protected void Pl$tickLeash() {
|
protected void Pl$tickLeash() {
|
||||||
if(this.Pl$LeashData == null) return;//没有Data直接退出
|
if(this.Pl$LeashData == null) return;//没有Data直接退出
|
||||||
ILivingEntityExtension self = (ILivingEntityExtension) this;
|
ILivingEntityExtension self = this;
|
||||||
int keepLeashTick = self.getKeepLeashTick();
|
int keepLeashTick = self.getKeepLeashTick();
|
||||||
|
|
||||||
//info -> Holder整理
|
//info -> Holder整理
|
||||||
|
|
@ -198,9 +200,15 @@ public abstract class MixinPlayer extends LivingEntity implements PlayerLeashabl
|
||||||
Entity entity = this.Pl$LeashData.leashHolder;
|
Entity entity = this.Pl$LeashData.leashHolder;
|
||||||
//保存数据
|
//保存数据
|
||||||
saveLeashData(Pl$LeashData);
|
saveLeashData(Pl$LeashData);
|
||||||
ILivingEntityExtension iEntityExtension = (ILivingEntityExtension) this;//获取设定值
|
ILivingEntityExtension iEntityExtension = this;//获取设定值
|
||||||
float leashLengthSelf = iEntityExtension.getLeashLength();
|
float leashLengthSelf = iEntityExtension.getLeashLength();
|
||||||
leashLength = leashLengthSelf > LeashCommand.MIN_VALUE ? leashLengthSelf : LeashCommand.MIN_VALUE;
|
leashLength = leashLengthSelf > LeashCommand.MIN_VALUE ? leashLengthSelf : LeashCommand.MIN_VALUE;
|
||||||
|
MobEffectInstance effect = this.getEffect(ModEffectRegister.NO_LEASH_EFFECT);
|
||||||
|
if(effect != null && effect.getDuration() > 0) {
|
||||||
|
if (entity instanceof LeashRopeArrow arrow)
|
||||||
|
arrow.setOwner(null);
|
||||||
|
this.dropLeash(true, !(entity instanceof LeashRopeArrow));
|
||||||
|
}
|
||||||
if (entity != null) {
|
if (entity != null) {
|
||||||
double breakDistanceTime = (entity instanceof LeashRopeArrow) ? LeashedPlayer.M1() * LeashedPlayer.M2() : LeashedPlayer.M1();
|
double breakDistanceTime = (entity instanceof LeashRopeArrow) ? LeashedPlayer.M1() * LeashedPlayer.M2() : LeashedPlayer.M1();
|
||||||
if(!isAlive() || !entity.isAlive() ||( distanceTo(entity) > Math.max(leashLength * breakDistanceTime, LeashCommand.MIN_VALUE * breakDistanceTime) && keepLeashTick == 0)){
|
if(!isAlive() || !entity.isAlive() ||( distanceTo(entity) > Math.max(leashLength * breakDistanceTime, LeashCommand.MIN_VALUE * breakDistanceTime) && keepLeashTick == 0)){
|
||||||
|
|
|
||||||
|
|
@ -16,3 +16,6 @@ public net.minecraft.world.entity.Leashable$LeashData delayedLeashHolderId # del
|
||||||
protected net.minecraft.world.entity.projectile.AbstractArrow life # life
|
protected net.minecraft.world.entity.projectile.AbstractArrow life # life
|
||||||
#protect -> public
|
#protect -> public
|
||||||
public net.minecraft.world.effect.MobEffect <init>(Lnet/minecraft/world/effect/MobEffectCategory;I)V # MobEffect
|
public net.minecraft.world.effect.MobEffect <init>(Lnet/minecraft/world/effect/MobEffectCategory;I)V # MobEffect
|
||||||
|
#private -> protected
|
||||||
|
protected net.minecraft.world.entity.projectile.Projectile cachedOwner # cachedOwner
|
||||||
|
protected net.minecraft.world.entity.projectile.Projectile ownerUUID # ownerUUID
|
||||||
Loading…
Reference in New Issue
Block a user