mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-01-31 19:16:44 +01:00
Cleanup and replace some more references to getMaster()
This commit is contained in:
parent
bf5649a966
commit
daa508ba73
12 changed files with 62 additions and 75 deletions
|
@ -21,16 +21,6 @@ public interface Owned<E extends Entity> {
|
|||
@Nullable
|
||||
E getMaster();
|
||||
|
||||
/**
|
||||
* Gets the unique entity id of the entity that holds this object.
|
||||
* <p>
|
||||
* Since {@link Owned#getMaster()} will only return if the owner is loaded, use this to perform checks
|
||||
* in the owner's absence.
|
||||
*/
|
||||
default Optional<UUID> getMasterId() {
|
||||
return Optional.of(getMaster()).map(Entity::getUuid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the owner of this object.
|
||||
*/
|
||||
|
@ -45,6 +35,20 @@ public interface Owned<E extends Entity> {
|
|||
setMaster(sibling.getMaster());
|
||||
}
|
||||
|
||||
default boolean hasMaster() {
|
||||
return getMaster() != null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the unique entity id of the entity that holds this object.
|
||||
* <p>
|
||||
* Since {@link Owned#getMaster()} will only return if the owner is loaded, use this to perform checks
|
||||
* in the owner's absence.
|
||||
*/
|
||||
default Optional<UUID> getMasterId() {
|
||||
return Optional.of(getMaster()).map(Entity::getUuid);
|
||||
}
|
||||
|
||||
default boolean isOwnedBy(@Nullable Object owner) {
|
||||
return owner instanceof Entity e
|
||||
&& getMasterId().isPresent()
|
||||
|
|
|
@ -35,6 +35,11 @@ public interface WeaklyOwned<E extends Entity> extends Owned<E> {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
default void setMaster(E master) {
|
||||
getMasterReference().set(master);
|
||||
}
|
||||
|
||||
default World getReferenceWorld() {
|
||||
return ((Entity)this).getEntityWorld();
|
||||
}
|
||||
|
@ -45,11 +50,6 @@ public interface WeaklyOwned<E extends Entity> extends Owned<E> {
|
|||
return getMasterReference().get(getReferenceWorld());
|
||||
}
|
||||
|
||||
@Override
|
||||
default void setMaster(E master) {
|
||||
getMasterReference().set(master);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Optional<UUID> getMasterId() {
|
||||
return getMasterReference().getId();
|
||||
|
|
|
@ -87,7 +87,7 @@ public class WorldRenderDelegate {
|
|||
matrices.push();
|
||||
|
||||
if (pony.getPhysics().isGravityNegative()) {
|
||||
matrices.translate(0, -((ItemImpl) pony).getMaster().getHeight() * 1.1, 0);
|
||||
matrices.translate(0, -((ItemImpl) pony).asEntity().getHeight() * 1.1, 0);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
@ -77,6 +77,11 @@ public class CastSpellEntity extends LightEmittingEntity implements Caster<Livin
|
|||
return owner;
|
||||
}
|
||||
|
||||
@Override
|
||||
public World getReferenceWorld() {
|
||||
return WeaklyOwned.super.getReferenceWorld();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Entity getEntity() {
|
||||
return this;
|
||||
|
@ -150,9 +155,4 @@ public class CastSpellEntity extends LightEmittingEntity implements Caster<Livin
|
|||
public Packet<ClientPlayPacketListener> createSpawnPacket() {
|
||||
return Channel.SERVER_SPAWN_PROJECTILE.toPacket(new MsgSpawnProjectile(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public World getReferenceWorld() {
|
||||
return WeaklyOwned.super.getReferenceWorld();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ public class Creature extends Living<LivingEntity> implements WeaklyOwned<Living
|
|||
|
||||
private final EntityPhysics<LivingEntity> physics;
|
||||
|
||||
private final EntityReference<LivingEntity> master = new EntityReference<>();
|
||||
private final EntityReference<LivingEntity> owner = new EntityReference<>();
|
||||
|
||||
@Nullable
|
||||
private GoalSelector goals;
|
||||
|
@ -58,21 +58,21 @@ public class Creature extends Living<LivingEntity> implements WeaklyOwned<Living
|
|||
public Creature(LivingEntity entity) {
|
||||
super(entity, EFFECT);
|
||||
physics = new EntityPhysics<>(entity, GRAVITY);
|
||||
entity.getDataTracker().startTracking(MASTER, master.toNBT());
|
||||
entity.getDataTracker().startTracking(MASTER, owner.toNBT());
|
||||
entity.getDataTracker().startTracking(EATING, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMaster(LivingEntity owner) {
|
||||
master.set(owner);
|
||||
entity.getDataTracker().set(MASTER, master.toNBT());
|
||||
this.owner.set(owner);
|
||||
entity.getDataTracker().set(MASTER, this.owner.toNBT());
|
||||
if (targets != null && owner != null) {
|
||||
initMinionAi();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isMinion() {
|
||||
return master.getId().isPresent();
|
||||
return owner.getId().isPresent();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -84,13 +84,13 @@ public class Creature extends Living<LivingEntity> implements WeaklyOwned<Living
|
|||
@NotNull
|
||||
public LivingEntity getMaster() {
|
||||
NbtCompound data = entity.getDataTracker().get(MASTER);
|
||||
master.fromNBT(data);
|
||||
return master.getOrEmpty(getReferenceWorld()).orElse(entity);
|
||||
owner.fromNBT(data);
|
||||
return owner.getOrEmpty(getReferenceWorld()).orElse(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityReference<LivingEntity> getMasterReference() {
|
||||
return master;
|
||||
return owner;
|
||||
}
|
||||
|
||||
public Optional<GoalSelector> getTargets() {
|
||||
|
@ -116,7 +116,7 @@ public class Creature extends Living<LivingEntity> implements WeaklyOwned<Living
|
|||
goals.add(3, eatMuffinGoal);
|
||||
}
|
||||
|
||||
if (master.isPresent(getReferenceWorld())) {
|
||||
if (owner.isPresent(getReferenceWorld())) {
|
||||
initMinionAi();
|
||||
}
|
||||
|
||||
|
@ -229,7 +229,7 @@ public class Creature extends Living<LivingEntity> implements WeaklyOwned<Living
|
|||
getSpellSlot().get(true).ifPresent(effect -> {
|
||||
compound.put("effect", Spell.writeNbt(effect));
|
||||
});
|
||||
compound.put("master", master.toNBT());
|
||||
compound.put("master", owner.toNBT());
|
||||
physics.toNBT(compound);
|
||||
}
|
||||
|
||||
|
@ -240,8 +240,8 @@ public class Creature extends Living<LivingEntity> implements WeaklyOwned<Living
|
|||
getSpellSlot().put(Spell.readNbt(compound.getCompound("effect")));
|
||||
}
|
||||
if (compound.contains("master", NbtElement.COMPOUND_TYPE)) {
|
||||
master.fromNBT(compound.getCompound("master"));
|
||||
if (master.isPresent(getReferenceWorld()) && targets != null) {
|
||||
owner.fromNBT(compound.getCompound("master"));
|
||||
if (owner.isPresent(getReferenceWorld()) && targets != null) {
|
||||
initMinionAi();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,18 +2,12 @@ package com.minelittlepony.unicopia.entity;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import com.minelittlepony.unicopia.Owned;
|
||||
import com.minelittlepony.unicopia.Race;
|
||||
import com.minelittlepony.unicopia.UTags;
|
||||
import com.minelittlepony.unicopia.*;
|
||||
import com.minelittlepony.unicopia.item.enchantment.UEnchantments;
|
||||
import com.minelittlepony.unicopia.util.VecHelper;
|
||||
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.ItemEntity;
|
||||
import net.minecraft.entity.MovementType;
|
||||
import net.minecraft.entity.*;
|
||||
import net.minecraft.entity.data.DataTracker;
|
||||
import net.minecraft.entity.data.TrackedData;
|
||||
import net.minecraft.entity.data.TrackedDataHandlerRegistry;
|
||||
|
@ -28,7 +22,7 @@ import net.minecraft.util.ActionResult;
|
|||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.util.math.random.Random;
|
||||
|
||||
public class ItemImpl implements Equine<ItemEntity>, Owned<ItemEntity> {
|
||||
public class ItemImpl implements Equine<ItemEntity> {
|
||||
private static final TrackedData<String> ITEM_RACE = DataTracker.registerData(ItemEntity.class, TrackedDataHandlerRegistry.STRING);
|
||||
static final TrackedData<Float> ITEM_GRAVITY = DataTracker.registerData(ItemEntity.class, TrackedDataHandlerRegistry.FLOAT);
|
||||
|
||||
|
@ -158,17 +152,6 @@ public class ItemImpl implements Equine<ItemEntity>, Owned<ItemEntity> {
|
|||
physics.fromNBT(compound);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMaster(ItemEntity owner) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public ItemEntity getMaster() {
|
||||
return asEntity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemEntity asEntity() {
|
||||
return entity;
|
||||
|
@ -215,11 +198,11 @@ public class ItemImpl implements Equine<ItemEntity>, Owned<ItemEntity> {
|
|||
}
|
||||
|
||||
default float getFollowDistance(IItemEntity entity) {
|
||||
return 6 * (1 + EnchantmentHelper.getLevel(UEnchantments.CLINGY, entity.get().getMaster().getStack()));
|
||||
return 6 * (1 + EnchantmentHelper.getLevel(UEnchantments.CLINGY, entity.get().asEntity().getStack()));
|
||||
}
|
||||
|
||||
default float getFollowSpeed(IItemEntity entity) {
|
||||
return Math.min(1, 0.02F * (1 + EnchantmentHelper.getLevel(UEnchantments.CLINGY, entity.get().getMaster().getStack())));
|
||||
return Math.min(1, 0.02F * (1 + EnchantmentHelper.getLevel(UEnchantments.CLINGY, entity.get().asEntity().getStack())));
|
||||
}
|
||||
|
||||
default void interactWithPlayer(IItemEntity entity, PlayerEntity player) {
|
||||
|
|
|
@ -4,7 +4,6 @@ import java.util.Optional;
|
|||
import java.util.stream.Stream;
|
||||
import java.util.stream.StreamSupport;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import com.minelittlepony.unicopia.USounds;
|
||||
|
@ -99,16 +98,6 @@ public abstract class Living<T extends LivingEntity> implements Equine<T>, Caste
|
|||
return armour;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMaster(LivingEntity owner) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public LivingEntity getMaster() {
|
||||
return asEntity();
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated use asEntity()
|
||||
*/
|
||||
|
|
|
@ -42,7 +42,7 @@ public class CorruptInfluenceStatusEffect extends StatusEffect {
|
|||
}
|
||||
|
||||
if (nearby > 1) {
|
||||
if (Equine.of(entity).filter(eq -> eq instanceof Owned && ((Owned<?>)eq).getMaster() != null).isPresent()) {
|
||||
if (Equine.of(entity).filter(eq -> eq instanceof Owned<?> o && o.hasMaster()).isPresent()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -59,7 +59,9 @@ public class CorruptInfluenceStatusEffect extends StatusEffect {
|
|||
clone.copyPositionAndRotation(entity);
|
||||
|
||||
Equine.of(clone).ifPresent(eq -> {
|
||||
((Owned<Entity>)eq).setMaster(mob);
|
||||
if (eq instanceof Owned) {
|
||||
((Owned<Entity>)eq).setMaster(mob);
|
||||
}
|
||||
});
|
||||
mob.world.spawnEntity(clone);
|
||||
|
||||
|
|
|
@ -297,6 +297,14 @@ public class Pony extends Living<PlayerEntity> implements Copyable<Pony>, Update
|
|||
return asEntity();
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Pony cannot belong to other entities
|
||||
*/
|
||||
@Override
|
||||
@Deprecated
|
||||
public void setMaster(@Nullable LivingEntity owner) {
|
||||
}
|
||||
|
||||
public void onSpawn() {
|
||||
if (entity.world instanceof ServerWorld sw
|
||||
&& getObservedSpecies() == Race.BAT
|
||||
|
|
|
@ -23,7 +23,7 @@ public class AppleItem {
|
|||
}
|
||||
|
||||
private static ActionResult onGroundTick(IItemEntity item) {
|
||||
ItemEntity entity = item.get().getMaster();
|
||||
ItemEntity entity = item.get().asEntity();
|
||||
|
||||
if (!entity.isRemoved() && item.getPickupDelay() == 0 && item.getAge() > 2030 && entity.world.random.nextInt(150) < 10) {
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ public class JarItem extends ProjectileItem implements ItemImpl.GroundTickCallba
|
|||
|
||||
@Override
|
||||
public ActionResult onGroundTick(IItemEntity item) {
|
||||
ItemEntity entity = item.get().getMaster();
|
||||
ItemEntity entity = item.get().asEntity();
|
||||
|
||||
entity.setInvulnerable(true);
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ import java.util.function.Function;
|
|||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import com.minelittlepony.unicopia.Affinity;
|
||||
import com.minelittlepony.unicopia.Owned;
|
||||
import com.minelittlepony.unicopia.ability.magic.Affine;
|
||||
import com.minelittlepony.unicopia.ability.magic.Caster;
|
||||
import com.minelittlepony.unicopia.ability.magic.Levelled;
|
||||
|
@ -52,7 +53,7 @@ import net.minecraft.world.World;
|
|||
*
|
||||
* Can also carry a spell if needed.
|
||||
*/
|
||||
public class MagicProjectileEntity extends ThrownItemEntity implements Caster<LivingEntity> {
|
||||
public class MagicProjectileEntity extends ThrownItemEntity implements Caster<LivingEntity>, Owned<LivingEntity> {
|
||||
private static final TrackedData<Float> DAMAGE = DataTracker.registerData(MagicProjectileEntity.class, TrackedDataHandlerRegistry.FLOAT);
|
||||
private static final TrackedData<Float> GRAVITY = DataTracker.registerData(MagicProjectileEntity.class, TrackedDataHandlerRegistry.FLOAT);
|
||||
private static final TrackedData<Boolean> HYDROPHOBIC = DataTracker.registerData(MagicProjectileEntity.class, TrackedDataHandlerRegistry.BOOLEAN);
|
||||
|
@ -106,16 +107,16 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Caster<Li
|
|||
setOwner(owner);
|
||||
}
|
||||
|
||||
public void setHomingTarget(@Nullable Entity target) {
|
||||
homingTarget.set(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public LivingEntity getMaster() {
|
||||
return (LivingEntity)getOwner();
|
||||
}
|
||||
|
||||
public void setHomingTarget(@Nullable Entity target) {
|
||||
homingTarget.set(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LevelStore getLevel() {
|
||||
return Caster.of(getMaster()).map(Caster::getLevel).orElse(Levelled.EMPTY);
|
||||
|
|
Loading…
Reference in a new issue