70 lines
2.7 KiB
Java
70 lines
2.7 KiB
Java
|
package net.minecraft.world.entity.projectile;
|
||
|
|
||
|
import net.minecraft.core.BlockPos;
|
||
|
import net.minecraft.server.level.ServerLevel;
|
||
|
import net.minecraft.world.damagesource.DamageSource;
|
||
|
import net.minecraft.world.entity.Entity;
|
||
|
import net.minecraft.world.entity.EntityType;
|
||
|
import net.minecraft.world.entity.LivingEntity;
|
||
|
import net.minecraft.world.entity.Mob;
|
||
|
import net.minecraft.world.item.enchantment.EnchantmentHelper;
|
||
|
import net.minecraft.world.level.GameRules;
|
||
|
import net.minecraft.world.level.Level;
|
||
|
import net.minecraft.world.level.block.BaseFireBlock;
|
||
|
import net.minecraft.world.phys.BlockHitResult;
|
||
|
import net.minecraft.world.phys.EntityHitResult;
|
||
|
import net.minecraft.world.phys.HitResult;
|
||
|
import net.minecraft.world.phys.Vec3;
|
||
|
|
||
|
public class SmallFireball extends Fireball {
|
||
|
public SmallFireball(EntityType<? extends SmallFireball> p_37364_, Level p_37365_) {
|
||
|
super(p_37364_, p_37365_);
|
||
|
}
|
||
|
|
||
|
public SmallFireball(Level p_37367_, LivingEntity p_342424_, Vec3 p_344527_) {
|
||
|
super(EntityType.SMALL_FIREBALL, p_342424_, p_344527_, p_37367_);
|
||
|
}
|
||
|
|
||
|
public SmallFireball(Level p_37375_, double p_37377_, double p_37378_, double p_37379_, Vec3 p_343728_) {
|
||
|
super(EntityType.SMALL_FIREBALL, p_37377_, p_37378_, p_37379_, p_343728_, p_37375_);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected void onHitEntity(EntityHitResult p_37386_) {
|
||
|
super.onHitEntity(p_37386_);
|
||
|
if (this.level() instanceof ServerLevel serverlevel) {
|
||
|
Entity entity1 = p_37386_.getEntity();
|
||
|
Entity $$4 = this.getOwner();
|
||
|
int $$5 = entity1.getRemainingFireTicks();
|
||
|
entity1.igniteForSeconds(5.0F);
|
||
|
DamageSource $$6 = this.damageSources().fireball(this, $$4);
|
||
|
if (!entity1.hurtServer(serverlevel, $$6, 5.0F)) {
|
||
|
entity1.setRemainingFireTicks($$5);
|
||
|
} else {
|
||
|
EnchantmentHelper.doPostAttackEffects(serverlevel, entity1, $$6);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected void onHitBlock(BlockHitResult p_37384_) {
|
||
|
super.onHitBlock(p_37384_);
|
||
|
if (this.level() instanceof ServerLevel serverlevel) {
|
||
|
Entity entity = this.getOwner();
|
||
|
if (!(entity instanceof Mob) || serverlevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||
|
BlockPos blockpos = p_37384_.getBlockPos().relative(p_37384_.getDirection());
|
||
|
if (this.level().isEmptyBlock(blockpos)) {
|
||
|
this.level().setBlockAndUpdate(blockpos, BaseFireBlock.getState(this.level(), blockpos));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected void onHit(HitResult p_37388_) {
|
||
|
super.onHit(p_37388_);
|
||
|
if (!this.level().isClientSide) {
|
||
|
this.discard();
|
||
|
}
|
||
|
}
|
||
|
}
|