package com.dairymoose.entity.projectile; import com.mojang.authlib.GameProfile; import java.util.UUID; import net.minecraft.core.particles.ItemParticleOption; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.network.protocol.Packet; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; import net.minecraft.world.entity.projectile.ThrowableItemProjectile; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.util.FakePlayerFactory; import net.minecraftforge.network.NetworkHooks; /* loaded from: outputsrg.jar:com/dairymoose/entity/projectile/ThrownSeedEntity.class */ public class ThrownSeedEntity extends ThrowableItemProjectile { public static final EntityType THROWN_SEED_ENTITY = EntityType.Builder.of(ThrownSeedEntity::new, MobCategory.MISC).sized(0.25f, 0.25f).clientTrackingRange(4).updateInterval(10).build(new ResourceLocation("modernlife", "thrown_seed").toString()); ServerPlayer dummy; public ThrownSeedEntity(EntityType entityType, Level world) { super(entityType, world); this.dummy = null; } public Packet getAddEntityPacket() { return NetworkHooks.getEntitySpawningPacket(this); } public ThrownSeedEntity(Level world, double x, double y, double z) { super(THROWN_SEED_ENTITY, x, y, z, world); this.dummy = null; } protected Item getDefaultItem() { return Items.SNOWBALL; } @OnlyIn(Dist.CLIENT) private ParticleOptions getParticle() { ItemStack lvt_1_1_ = getItemRaw(); return lvt_1_1_.isEmpty() ? ParticleTypes.ITEM_SNOWBALL : new ItemParticleOption(ParticleTypes.ITEM, lvt_1_1_); } @OnlyIn(Dist.CLIENT) public void handleEntityEvent(byte p_70103_1_) { if (p_70103_1_ == 3) { ParticleOptions lvt_2_1_ = getParticle(); for (int lvt_3_1_ = 0; lvt_3_1_ < 8; lvt_3_1_++) { this.level.addParticle(lvt_2_1_, getX(), getY(), getZ(), 0.0d, 0.0d, 0.0d); } } } protected void m_8060_(BlockHitResult p_230299_1_) { super.m_8060_(p_230299_1_); ServerLevel serverLevel = this.level; BlockState state = this.level.getBlockState(p_230299_1_.getBlockPos()); BlockState aboveState = this.level.getBlockState(p_230299_1_.getBlockPos().above()); if ((state.is(Blocks.FARMLAND) || (getItem() != null && getItem().getItem() == Items.NETHER_WART && state.is(Blocks.SOUL_SAND))) && aboveState.is(Blocks.AIR)) { ItemStack itemStack = getItem(); if (itemStack != null && (serverLevel instanceof ServerLevel)) { if (this.dummy == null) { GameProfile profile = new GameProfile(UUID.randomUUID(), "[seed_spreader_player]"); this.dummy = FakePlayerFactory.get(serverLevel, profile); } this.dummy.setItemInHand(InteractionHand.MAIN_HAND, itemStack); itemStack.useOn(new UseOnContext(this.dummy, InteractionHand.MAIN_HAND, p_230299_1_)); remove(RemovalReason.DISCARDED); return; } return; } if (serverLevel instanceof ServerLevel) { spawnAtLocation(getItem()); remove(RemovalReason.DISCARDED); } } protected void m_5790_(EntityHitResult p_70227_1_) { if (!this.level.isClientSide) { spawnAtLocation(getItem()); remove(RemovalReason.DISCARDED); } } }