Search in sources :

Example 31 with Level

use of net.minecraft.world.level.Level in project MyPet by xXKeyleXx.

the class RangedAttack method shootProjectile.

public void shootProjectile(LivingEntity target, float damage, Projectile projectile) {
    Level world = target.level;
    double minY = this.target.getBoundingBox().minY;
    switch(projectile) {
        case Snowball:
            {
                MyPetSnowball snowball = new MyPetSnowball(world, entityMyPet);
                double distanceX = target.getX() - entityMyPet.getX();
                double distanceY = target.getY() + target.getEyeHeight() - 1.100000023841858D - snowball.getY();
                double distanceZ = target.getZ() - entityMyPet.getZ();
                double distance20percent = Mth.sqrt((float) (distanceX * distanceX + distanceZ * distanceZ)) * 0.2F;
                snowball.setDamage(damage);
                snowball.shoot(distanceX, distanceY + distance20percent, distanceZ, 1.6F, 1);
                entityMyPet.makeSound("entity.arrow.shoot", 0.5F, 0.4F / (entityMyPet.getRandom().nextFloat() * 0.4F + 0.8F));
                world.addFreshEntity(snowball);
                break;
            }
        case Egg:
            {
                MyPetEgg egg = new MyPetEgg(world, entityMyPet);
                double distanceX = target.getX() - entityMyPet.getX();
                double distanceY = target.getY() + target.getEyeHeight() - 1.100000023841858D - egg.getY();
                double distanceZ = target.getZ() - entityMyPet.getZ();
                double distance20percent = Mth.sqrt((float) (distanceX * distanceX + distanceZ * distanceZ)) * 0.2F;
                egg.setDamage(damage);
                egg.shoot(distanceX, distanceY + distance20percent, distanceZ, 1.6F, 1);
                entityMyPet.makeSound("entity.arrow.shoot", 0.5F, 0.4F / (entityMyPet.getRandom().nextFloat() * 0.4F + 0.8F));
                world.addFreshEntity(egg);
                break;
            }
        case LargeFireball:
            {
                double distanceX = this.target.getX() - entityMyPet.getX();
                double distanceY = minY + (double) (this.target.getBbHeight() / 2.0F) - (0.5D + entityMyPet.getY() + (double) (entityMyPet.getBbHeight() / 2.0F));
                double distanceZ = this.target.getZ() - entityMyPet.getZ();
                MyPetLargeFireball largeFireball = new MyPetLargeFireball(world, entityMyPet, distanceX, distanceY, distanceZ);
                largeFireball.setPosRaw(largeFireball.getX(), (entityMyPet.getY() + entityMyPet.getBbHeight() / 2.0F + 0.5D), largeFireball.getZ());
                largeFireball.setDamage(damage);
                world.addFreshEntity(largeFireball);
                entityMyPet.makeSound("entity.ghast.shoot", 1.0F + entityMyPet.getRandom().nextFloat(), entityMyPet.getRandom().nextFloat() * 0.7F + 0.3F);
                break;
            }
        case SmallFireball:
            {
                double distanceX = this.target.getX() - entityMyPet.getX();
                double distanceY = minY + (this.target.getBbHeight() / 2.0F) - (0.5D + entityMyPet.getY() + (entityMyPet.getBbHeight() / 2.0F));
                double distanceZ = this.target.getZ() - entityMyPet.getZ();
                MyPetSmallFireball smallFireball = new MyPetSmallFireball(world, entityMyPet, distanceX, distanceY, distanceZ);
                smallFireball.setPosRaw(smallFireball.getX(), (entityMyPet.getY() + entityMyPet.getBbHeight() / 2.0F + 0.5D), smallFireball.getZ());
                smallFireball.setDamage(damage);
                world.addFreshEntity(smallFireball);
                entityMyPet.makeSound("entity.ghast.shoot", 1.0F + entityMyPet.getRandom().nextFloat(), entityMyPet.getRandom().nextFloat() * 0.7F + 0.3F);
                break;
            }
        case WitherSkull:
            {
                double distanceX = this.target.getX() - entityMyPet.getX();
                double distanceY = minY + (double) (this.target.getBbHeight() / 2.0F) - (0.5D + entityMyPet.getY() + (double) (entityMyPet.getBbHeight() / 2.0F));
                double distanceZ = this.target.getZ() - entityMyPet.getZ();
                MyPetWitherSkull witherSkull = new MyPetWitherSkull(world, entityMyPet, distanceX, distanceY, distanceZ);
                witherSkull.setPosRaw(witherSkull.getX(), (entityMyPet.getY() + entityMyPet.getBbHeight() / 2.0F + 0.5D), witherSkull.getZ());
                witherSkull.setDamage(damage);
                world.addFreshEntity(witherSkull);
                entityMyPet.makeSound("entity.wither.shoot", 1.0F + entityMyPet.getRandom().nextFloat(), entityMyPet.getRandom().nextFloat() * 0.7F + 0.3F);
                break;
            }
        case DragonFireball:
            {
                double distanceX = this.target.getX() - entityMyPet.getX();
                double distanceY = minY + (double) (this.target.getBbHeight() / 2.0F) - (0.5D + entityMyPet.getY() + (double) (entityMyPet.getBbHeight() / 2.0F));
                double distanceZ = this.target.getZ() - entityMyPet.getZ();
                MyPetDragonFireball dragonFireball = new MyPetDragonFireball(world, entityMyPet, distanceX, distanceY, distanceZ);
                dragonFireball.setPosRaw(dragonFireball.getX(), (entityMyPet.getY() + entityMyPet.getBbHeight() / 2.0F + 0.5D), dragonFireball.getZ());
                dragonFireball.setDamage(damage);
                world.addFreshEntity(dragonFireball);
                entityMyPet.makeSound("entity.ender_dragon.shoot", 1.0F + entityMyPet.getRandom().nextFloat(), entityMyPet.getRandom().nextFloat() * 0.7F + 0.3F);
                break;
            }
        case Trident:
            {
                MyPetTrident trident = new MyPetTrident(world, entityMyPet);
                trident.setBaseDamage(damage);
                trident.setCritArrow(false);
                entityMyPet.makeSound("item.trident.throw", 1.0F, 1.0F / (entityMyPet.getRandom().nextFloat() * 0.4F + 0.8F));
                double distanceX = target.getX() - entityMyPet.getX();
                double distanceY = target.getY() + target.getEyeHeight() - 1.100000023841858D - trident.getY();
                double distanceZ = target.getZ() - entityMyPet.getZ();
                double distance20percent = Mth.sqrt((float) (distanceX * distanceX + distanceZ * distanceZ)) * 0.2F;
                trident.shoot(distanceX, distanceY + distance20percent, distanceZ, 1.6F, 1);
                world.addFreshEntity(trident);
                break;
            }
        case EnderPearl:
            {
                MyPetEnderPearl enderPearl = new MyPetEnderPearl(world, entityMyPet);
                enderPearl.setDamage(damage);
                entityMyPet.makeSound("entity.ender_pearl.throw", 1.0F, 1.0F / (entityMyPet.getRandom().nextFloat() * 0.4F + 0.8F));
                double distanceX = target.getX() - entityMyPet.getX();
                double distanceY = target.getY() + target.getEyeHeight() - 1.100000023841858D - enderPearl.getY();
                double distanceZ = target.getZ() - entityMyPet.getZ();
                double distance20percent = Mth.sqrt((float) (distanceX * distanceX + distanceZ * distanceZ)) * 0.2F;
                enderPearl.shoot(distanceX, distanceY + distance20percent, distanceZ, 1.6F, 1);
                world.addFreshEntity(enderPearl);
                break;
            }
        case LlamaSpit:
            {
                MyPetLlamaSpit llamaSpit = new MyPetLlamaSpit(world, entityMyPet);
                llamaSpit.setDamage(damage);
                entityMyPet.makeSound("entity.llama.spit", 1.0F, 1.0F / (entityMyPet.getRandom().nextFloat() * 0.4F + 0.8F));
                double distanceX = target.getX() - entityMyPet.getX();
                double distanceY = target.getY() + (target.getEyeHeight() / 3.0F) - llamaSpit.getY();
                double distanceZ = target.getZ() - entityMyPet.getZ();
                double distance20percent = Mth.sqrt((float) (distanceX * distanceX + distanceZ * distanceZ)) * 0.2D;
                llamaSpit.shoot(distanceX, distanceY + distance20percent, distanceZ, 1.5F, 10.0F);
                world.addFreshEntity(llamaSpit);
                break;
            }
        case Arrow:
        default:
            {
                Arrow arrow = new MyPetArrow(world, entityMyPet);
                arrow.setBaseDamage(damage);
                arrow.setCritArrow(false);
                entityMyPet.makeSound("entity.arrow.shoot", 1.0F, 1.0F / (entityMyPet.getRandom().nextFloat() * 0.4F + 0.8F));
                double distanceX = target.getX() - entityMyPet.getX();
                double distanceY = target.getY() + target.getEyeHeight() - 1.100000023841858D - arrow.getY();
                double distanceZ = target.getZ() - entityMyPet.getZ();
                double distance20percent = Mth.sqrt((float) (distanceX * distanceX + distanceZ * distanceZ)) * 0.2F;
                arrow.shoot(distanceX, distanceY + distance20percent, distanceZ, 1.6F, 1);
                world.addFreshEntity(arrow);
                break;
            }
    }
}
Also used : MyPetArrow(de.Keyle.MyPet.compat.v1_17_R1.skill.skills.ranged.nms.MyPetArrow) Arrow(net.minecraft.world.entity.projectile.Arrow) MyPetDragonFireball(de.Keyle.MyPet.compat.v1_17_R1.skill.skills.ranged.nms.MyPetDragonFireball) MyPetEgg(de.Keyle.MyPet.compat.v1_17_R1.skill.skills.ranged.nms.MyPetEgg) MyPetEnderPearl(de.Keyle.MyPet.compat.v1_17_R1.skill.skills.ranged.nms.MyPetEnderPearl) MyPetArrow(de.Keyle.MyPet.compat.v1_17_R1.skill.skills.ranged.nms.MyPetArrow) MyPetLargeFireball(de.Keyle.MyPet.compat.v1_17_R1.skill.skills.ranged.nms.MyPetLargeFireball) MyPetSnowball(de.Keyle.MyPet.compat.v1_17_R1.skill.skills.ranged.nms.MyPetSnowball) MyPetTrident(de.Keyle.MyPet.compat.v1_17_R1.skill.skills.ranged.nms.MyPetTrident) Level(net.minecraft.world.level.Level) MyPetWitherSkull(de.Keyle.MyPet.compat.v1_17_R1.skill.skills.ranged.nms.MyPetWitherSkull) MyPetSmallFireball(de.Keyle.MyPet.compat.v1_17_R1.skill.skills.ranged.nms.MyPetSmallFireball) MyPetLlamaSpit(de.Keyle.MyPet.compat.v1_17_R1.skill.skills.ranged.nms.MyPetLlamaSpit)

Example 32 with Level

use of net.minecraft.world.level.Level in project MyPet by xXKeyleXx.

the class CustomInventory method dropContentAt.

@Override
public void dropContentAt(Location loc) {
    Level world = ((CraftWorld) loc.getWorld()).getHandle();
    for (int i = 0; i < this.getContainerSize(); i++) {
        ItemStack is = this.removeItemNoUpdate(i);
        if (is != null && !is.isEmpty()) {
            is = is.copy();
            ItemEntity itemEntity = new ItemEntity(world, loc.getX(), loc.getY(), loc.getZ(), is);
            itemEntity.pickupDelay = 20;
            world.addFreshEntity(itemEntity);
        }
    }
}
Also used : ItemEntity(net.minecraft.world.entity.item.ItemEntity) Level(net.minecraft.world.level.Level) ItemStack(net.minecraft.world.item.ItemStack) CraftItemStack(org.bukkit.craftbukkit.v1_17_R1.inventory.CraftItemStack) CraftWorld(org.bukkit.craftbukkit.v1_17_R1.CraftWorld)

Example 33 with Level

use of net.minecraft.world.level.Level in project MyPet by xXKeyleXx.

the class CustomInventory method dropContentAt.

@Override
public void dropContentAt(Location loc) {
    Level world = ((CraftWorld) loc.getWorld()).getHandle();
    for (int i = 0; i < this.getContainerSize(); i++) {
        ItemStack is = this.removeItemNoUpdate(i);
        if (is != null && !is.isEmpty()) {
            is = is.copy();
            ItemEntity itemEntity = new ItemEntity(world, loc.getX(), loc.getY(), loc.getZ(), is);
            itemEntity.pickupDelay = 20;
            world.addFreshEntity(itemEntity);
        }
    }
}
Also used : ItemEntity(net.minecraft.world.entity.item.ItemEntity) Level(net.minecraft.world.level.Level) CraftItemStack(org.bukkit.craftbukkit.v1_18_R1.inventory.CraftItemStack) ItemStack(net.minecraft.world.item.ItemStack) CraftWorld(org.bukkit.craftbukkit.v1_18_R1.CraftWorld)

Example 34 with Level

use of net.minecraft.world.level.Level in project Totemic by TeamTotemic.

the class StateTotemEffect method tick.

@Override
public void tick() {
    Level world = tile.getLevel();
    long gameTime = world.getGameTime();
    if (gameTime % tile.getCommonTotemEffectInterval() == 0) {
        for (Multiset.Entry<TotemEffect> entry : tile.getTotemEffects().entrySet()) {
            TotemEffect effect = entry.getElement();
            if (gameTime % effect.getInterval() == 0) {
                effect.effect(world, tile.getBlockPos(), entry.getCount(), this);
            }
        }
    }
}
Also used : Level(net.minecraft.world.level.Level) Multiset(com.google.common.collect.Multiset) TotemEffect(pokefenn.totemic.api.totem.TotemEffect)

Example 35 with Level

use of net.minecraft.world.level.Level in project SpongeCommon by SpongePowered.

the class LevelMixin_API method entityStream.

@SuppressWarnings("unchecked")
@Override
public VolumeStream<W, Entity> entityStream(final Vector3i min, final Vector3i max, final StreamOptions options) {
    VolumeStreamUtils.validateStreamArgs(Objects.requireNonNull(min, "min"), Objects.requireNonNull(max, "max"), Objects.requireNonNull(options, "options"));
    final boolean shouldCarbonCopy = options.carbonCopy();
    final Vector3i size = max.sub(min).add(1, 1, 1);
    @MonotonicNonNull final ObjectArrayMutableEntityBuffer backingVolume;
    if (shouldCarbonCopy) {
        backingVolume = new ObjectArrayMutableEntityBuffer(min, size);
    } else {
        backingVolume = null;
    }
    return VolumeStreamUtils.<W, Entity, net.minecraft.world.entity.Entity, ChunkAccess, UUID>generateStream(min, max, options, // Ref
    (W) this, // IdentityFunction
    VolumeStreamUtils.getOrCloneEntityWithVolume(shouldCarbonCopy, backingVolume, (Level) (Object) this), // ChunkAccessor
    VolumeStreamUtils.getChunkAccessorByStatus((LevelReader) (Object) this, options.loadingStyle().generateArea()), // Entity -> UniqueID
    (key, entity) -> entity.getUUID(), // Entity Accessor
    (chunk) -> chunk instanceof LevelChunk ? VolumeStreamUtils.getEntitiesFromChunk(min, max, (LevelChunk) chunk) : Stream.empty(), // Filtered Position Entity Accessor
    (entityUuid, world) -> {
        final net.minecraft.world.entity.@Nullable Entity entity = shouldCarbonCopy ? (net.minecraft.world.entity.Entity) backingVolume.entity(entityUuid).orElse(null) : (net.minecraft.world.entity.Entity) ((WorldLike) world).entity(entityUuid).orElse(null);
        if (entity == null) {
            return null;
        }
        return new Tuple<>(entity.blockPosition(), entity);
    });
}
Also used : HumanEntity(org.spongepowered.common.entity.living.human.HumanEntity) BlockEntity(org.spongepowered.api.block.entity.BlockEntity) Entity(org.spongepowered.api.entity.Entity) LevelReader(net.minecraft.world.level.LevelReader) ChunkAccess(net.minecraft.world.level.chunk.ChunkAccess) LevelChunk(net.minecraft.world.level.chunk.LevelChunk) MonotonicNonNull(org.checkerframework.checker.nullness.qual.MonotonicNonNull) Vector3i(org.spongepowered.math.vector.Vector3i) ObjectArrayMutableEntityBuffer(org.spongepowered.common.world.volume.buffer.entity.ObjectArrayMutableEntityBuffer) Level(net.minecraft.world.level.Level) UUID(java.util.UUID) Nullable(org.checkerframework.checker.nullness.qual.Nullable) Tuple(net.minecraft.util.Tuple)

Aggregations

Level (net.minecraft.world.level.Level)53 BlockPos (net.minecraft.core.BlockPos)26 ServerLevel (net.minecraft.server.level.ServerLevel)19 ItemStack (net.minecraft.world.item.ItemStack)14 BlockState (net.minecraft.world.level.block.state.BlockState)13 IOException (java.io.IOException)10 Direction (net.minecraft.core.Direction)8 ChunkPos (net.minecraft.world.level.ChunkPos)6 Path (java.nio.file.Path)5 ExecutionException (java.util.concurrent.ExecutionException)5 Nullable (javax.annotation.Nullable)5 Entity (net.minecraft.world.entity.Entity)5 Player (net.minecraft.world.entity.player.Player)5 BlockEntity (net.minecraft.world.level.block.entity.BlockEntity)5 LevelStem (net.minecraft.world.level.dimension.LevelStem)5 SubscribeEvent (net.minecraftforge.eventbus.api.SubscribeEvent)5 Map (java.util.Map)4 Set (java.util.Set)4 CompoundTag (net.minecraft.nbt.CompoundTag)4 ResourceLocation (net.minecraft.resources.ResourceLocation)4