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;
}
}
}
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);
}
}
}
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);
}
}
}
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);
}
}
}
}
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);
});
}
Aggregations