fixed effect powders being weird

This commit is contained in:
Ell 2021-12-19 16:26:31 +01:00
parent 2b6b42e091
commit f8d3d022fd

View file

@ -19,14 +19,15 @@ import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.damagesource.EntityDamageSource; import net.minecraft.world.damagesource.EntityDamageSource;
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.player.Player;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.AABB;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.NetworkHooks;
import org.jetbrains.annotations.Nullable;
// TODO these behave very weirdly in-world
public class EntityEffectInhibitor extends Entity implements IVisualizable { public class EntityEffectInhibitor extends Entity implements IVisualizable {
private static final EntityDataAccessor<String> INHIBITED_EFFECT = SynchedEntityData.defineId(EntityEffectInhibitor.class, EntityDataSerializers.STRING); private static final EntityDataAccessor<String> INHIBITED_EFFECT = SynchedEntityData.defineId(EntityEffectInhibitor.class, EntityDataSerializers.STRING);
@ -108,11 +109,6 @@ public class EntityEffectInhibitor extends Entity implements IVisualizable {
} }
} }
@Override
public boolean canBeCollidedWith() {
return true;
}
@Override @Override
protected void readAdditionalSaveData(CompoundTag compound) { protected void readAdditionalSaveData(CompoundTag compound) {
this.setInhibitedEffect(new ResourceLocation(compound.getString("effect"))); this.setInhibitedEffect(new ResourceLocation(compound.getString("effect")));
@ -132,14 +128,32 @@ public class EntityEffectInhibitor extends Entity implements IVisualizable {
return NetworkHooks.getEntitySpawningPacket(this); return NetworkHooks.getEntitySpawningPacket(this);
} }
@Override
public boolean skipAttackInteraction(Entity entity) {
return entity instanceof Player player && (!this.level.mayInteract(player, this.blockPosition()) || this.hurt(DamageSource.playerAttack(player), 0.0F));
}
@Override @Override
public boolean hurt(DamageSource source, float amount) { public boolean hurt(DamageSource source, float amount) {
if (source instanceof EntityDamageSource && !this.level.isClientSide) { if (source instanceof EntityDamageSource && !this.level.isClientSide) {
this.kill(); this.kill();
this.spawnAtLocation(this.getDrop(), 0F); this.spawnAtLocation(this.getDrop(), 0F);
return true; return true;
} else } else {
return super.hurt(source, amount); return super.hurt(source, amount);
}
}
@Override
public boolean isPickable() {
// SOMEHOW, this actually means "is raytraceable" IN GENERAL even though getPickResult is about middle-clicking, jesus fucking christ mojang
return true;
}
@Nullable
@Override
public ItemStack getPickResult() {
return this.getDrop();
} }
public ItemStack getDrop() { public ItemStack getDrop() {