2018-10-14 14:27:18 +02:00
|
|
|
package de.ellpeck.naturesaura.packet;
|
|
|
|
|
2024-03-10 10:41:34 +01:00
|
|
|
import de.ellpeck.naturesaura.NaturesAura;
|
2018-11-11 13:26:19 +01:00
|
|
|
import de.ellpeck.naturesaura.api.NaturesAuraAPI;
|
2020-01-26 15:52:16 +01:00
|
|
|
import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk;
|
2019-01-31 17:54:55 +01:00
|
|
|
import de.ellpeck.naturesaura.api.aura.type.IAuraType;
|
2018-11-07 13:33:49 +01:00
|
|
|
import de.ellpeck.naturesaura.blocks.multi.Multiblocks;
|
2020-05-20 14:55:59 +02:00
|
|
|
import de.ellpeck.naturesaura.entities.EntityStructureFinder;
|
2018-10-14 14:27:18 +02:00
|
|
|
import net.minecraft.client.Minecraft;
|
2021-12-15 16:24:53 +01:00
|
|
|
import net.minecraft.client.renderer.BiomeColors;
|
2021-12-04 15:40:09 +01:00
|
|
|
import net.minecraft.core.BlockPos;
|
2021-12-15 16:24:53 +01:00
|
|
|
import net.minecraft.core.particles.ItemParticleOption;
|
|
|
|
import net.minecraft.core.particles.ParticleTypes;
|
2021-12-04 15:40:09 +01:00
|
|
|
import net.minecraft.network.FriendlyByteBuf;
|
2024-03-10 10:41:34 +01:00
|
|
|
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
|
|
|
|
import net.minecraft.resources.ResourceLocation;
|
2021-12-04 15:40:09 +01:00
|
|
|
import net.minecraft.world.level.Level;
|
2024-03-10 10:41:34 +01:00
|
|
|
import net.neoforged.neoforge.network.handling.PlayPayloadContext;
|
2020-01-22 01:35:47 +01:00
|
|
|
|
2020-01-26 00:16:06 +01:00
|
|
|
import java.util.function.BiConsumer;
|
2018-10-14 14:27:18 +02:00
|
|
|
|
2024-03-10 10:41:34 +01:00
|
|
|
public class PacketParticles implements CustomPacketPayload {
|
2018-10-14 14:27:18 +02:00
|
|
|
|
2024-03-10 10:41:34 +01:00
|
|
|
public static final ResourceLocation ID = new ResourceLocation(NaturesAura.MOD_ID, "particles");
|
|
|
|
|
|
|
|
private final float posX;
|
|
|
|
private final float posY;
|
|
|
|
private final float posZ;
|
|
|
|
private final Type type;
|
|
|
|
private final int[] data;
|
2018-10-14 14:27:18 +02:00
|
|
|
|
2020-01-26 00:16:06 +01:00
|
|
|
public PacketParticles(float posX, float posY, float posZ, Type type, int... data) {
|
2020-01-22 23:21:52 +01:00
|
|
|
this.posX = posX;
|
|
|
|
this.posY = posY;
|
|
|
|
this.posZ = posZ;
|
|
|
|
this.type = type;
|
|
|
|
this.data = data;
|
|
|
|
}
|
|
|
|
|
2024-03-10 10:41:34 +01:00
|
|
|
public PacketParticles(FriendlyByteBuf buf) {
|
|
|
|
this.posX = buf.readFloat();
|
|
|
|
this.posY = buf.readFloat();
|
|
|
|
this.posZ = buf.readFloat();
|
|
|
|
this.type = Type.values()[buf.readByte()];
|
2020-01-22 01:35:47 +01:00
|
|
|
|
2024-03-10 10:41:34 +01:00
|
|
|
this.data = new int[buf.readByte()];
|
|
|
|
for (var i = 0; i < this.data.length; i++)
|
|
|
|
this.data[i] = buf.readInt();
|
2018-10-14 14:27:18 +02:00
|
|
|
}
|
|
|
|
|
2024-03-10 10:41:34 +01:00
|
|
|
@Override
|
|
|
|
public void write(FriendlyByteBuf buf) {
|
|
|
|
buf.writeFloat(this.posX);
|
|
|
|
buf.writeFloat(this.posY);
|
|
|
|
buf.writeFloat(this.posZ);
|
|
|
|
buf.writeByte(this.type.ordinal());
|
2018-10-28 16:21:43 +01:00
|
|
|
|
2024-03-10 10:41:34 +01:00
|
|
|
buf.writeByte(this.data.length);
|
|
|
|
for (var i : this.data)
|
2018-10-28 16:21:43 +01:00
|
|
|
buf.writeInt(i);
|
2018-10-14 14:27:18 +02:00
|
|
|
}
|
|
|
|
|
2024-03-10 10:41:34 +01:00
|
|
|
@Override
|
|
|
|
public ResourceLocation id() {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void onMessage(PacketParticles message, PlayPayloadContext ctx) {
|
|
|
|
ctx.workHandler().execute(() -> {
|
2024-03-29 13:17:40 +01:00
|
|
|
var level = ctx.level().orElseThrow();
|
2024-03-10 10:41:34 +01:00
|
|
|
if (level != null)
|
|
|
|
message.type.action.accept(message, level);
|
2020-02-07 15:22:30 +01:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2020-01-26 00:16:06 +01:00
|
|
|
public enum Type {
|
2021-12-04 15:40:09 +01:00
|
|
|
TR_GOLD_POWDER((message, level) -> {
|
2023-07-08 12:32:27 +02:00
|
|
|
var pos = BlockPos.containing(message.posX, message.posY, message.posZ);
|
2020-01-26 00:16:06 +01:00
|
|
|
Multiblocks.TREE_RITUAL.forEach(pos, 'G', (dustPos, matcher) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var state = level.getBlockState(dustPos);
|
|
|
|
var box = state.getShape(level, dustPos).bounds();
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
dustPos.getX() + box.minX + (box.maxX - box.minX) * level.random.nextFloat(),
|
2020-01-26 00:16:06 +01:00
|
|
|
dustPos.getY() + 0.1F,
|
2021-12-15 16:24:53 +01:00
|
|
|
dustPos.getZ() + box.minZ + (box.maxZ - box.minZ) * level.random.nextFloat(),
|
|
|
|
(float) level.random.nextGaussian() * 0.02F,
|
|
|
|
level.random.nextFloat() * 0.01F + 0.02F,
|
|
|
|
(float) level.random.nextGaussian() * 0.02F,
|
2020-01-26 00:16:06 +01:00
|
|
|
0xf4cb42, 2F, 50, 0F, false, true);
|
|
|
|
return true;
|
|
|
|
});
|
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
TR_CONSUME_ITEM((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(20) + 10; i >= 0; i--) {
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
|
|
|
message.posX + 0.5F, message.posY + 0.9F, message.posZ + 0.5F,
|
2021-12-15 16:24:53 +01:00
|
|
|
(float) level.random.nextGaussian() * 0.04F, level.random.nextFloat() * 0.04F, (float) level.random.nextGaussian() * 0.04F,
|
2020-01-26 00:16:06 +01:00
|
|
|
0x89cc37, 1.5F, 25, 0F, false, true);
|
|
|
|
}
|
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
TR_DISAPPEAR((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(5) + 3; i >= 0; i--) {
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + level.random.nextFloat(), message.posY + level.random.nextFloat(), message.posZ + level.random.nextFloat(),
|
2020-01-26 00:16:06 +01:00
|
|
|
0F, 0F, 0F,
|
|
|
|
0x33FF33, 1F, 50, 0F, false, true);
|
|
|
|
}
|
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
TR_SPAWN_RESULT((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(10) + 10; i >= 0; i--) {
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
|
|
|
message.posX, message.posY, message.posZ,
|
2021-12-15 16:24:53 +01:00
|
|
|
level.random.nextGaussian() * 0.1F, level.random.nextGaussian() * 0.1F, level.random.nextGaussian() * 0.1F,
|
2020-01-26 00:16:06 +01:00
|
|
|
0x89cc37, 2F, 100, 0F, true, true);
|
|
|
|
}
|
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
ALTAR_CONVERSION((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var color = message.data[0];
|
|
|
|
for (var i = level.random.nextInt(5) + 2; i >= 0; i--) {
|
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
|
|
|
message.posX + 0.25F + level.random.nextFloat() * 0.5F,
|
|
|
|
message.posY + 0.9F + 0.25F * level.random.nextFloat(),
|
|
|
|
message.posZ + 0.25F + level.random.nextFloat() * 0.5F,
|
|
|
|
level.random.nextGaussian() * 0.02F, level.random.nextFloat() * 0.02F, level.random.nextGaussian() * 0.02F,
|
|
|
|
color, level.random.nextFloat() * 1.5F + 0.75F, 20, 0F, false, true);
|
2020-01-26 00:16:06 +01:00
|
|
|
}
|
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
POTION_GEN((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var color = message.data[0];
|
|
|
|
var releaseAura = message.data[1] > 0;
|
|
|
|
for (var i = level.random.nextInt(5) + 5; i >= 0; i--) {
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + level.random.nextFloat(),
|
2020-01-26 00:16:06 +01:00
|
|
|
message.posY + 1.1F,
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posZ + level.random.nextFloat(),
|
|
|
|
level.random.nextGaussian() * 0.01F, level.random.nextFloat() * 0.1F, level.random.nextGaussian() * 0.01F,
|
|
|
|
color, 2F + level.random.nextFloat(), 40, 0F, true, true);
|
2020-01-26 00:16:06 +01:00
|
|
|
|
|
|
|
if (releaseAura)
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var x = -1; x <= 1; x += 2)
|
|
|
|
for (var z = -1; z <= 1; z += 2) {
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
|
|
|
message.posX + x * 3 + 0.5F,
|
|
|
|
message.posY + 2.5,
|
|
|
|
message.posZ + z * 3 + 0.5F,
|
2021-12-15 16:24:53 +01:00
|
|
|
level.random.nextGaussian() * 0.02F,
|
|
|
|
level.random.nextFloat() * 0.04F,
|
|
|
|
level.random.nextGaussian() * 0.02F,
|
|
|
|
0xd6340c, 1F + level.random.nextFloat() * 2F, 75, 0F, true, true);
|
2020-01-26 00:16:06 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
PLANT_BOOST((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(20) + 15; i >= 0; i--)
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + level.random.nextFloat(),
|
|
|
|
message.posY + 0.25F + level.random.nextFloat() * 0.5F,
|
|
|
|
message.posZ + level.random.nextFloat(),
|
|
|
|
0F, level.random.nextFloat() * 0.02F, 0F,
|
|
|
|
0x5ccc30, 1F + level.random.nextFloat() * 2F, 50, 0F, false, true);
|
2020-01-26 00:16:06 +01:00
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
FLOWER_GEN_CONSUME((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var color = message.data[0];
|
|
|
|
for (var i = level.random.nextInt(10) + 10; i >= 0; i--)
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + 0.25F + level.random.nextFloat() * 0.5F,
|
|
|
|
message.posY + 0.25F + level.random.nextFloat() * 0.5F,
|
|
|
|
message.posZ + 0.25F + level.random.nextFloat() * 0.5F,
|
|
|
|
level.random.nextGaussian() * 0.02F,
|
|
|
|
level.random.nextGaussian() * 0.02F,
|
|
|
|
level.random.nextGaussian() * 0.02F,
|
|
|
|
color, level.random.nextFloat() * 2F + 1F, 25, 0F, false, true);
|
2020-01-26 00:16:06 +01:00
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
FLOWER_GEN_AURA_CREATION((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(10) + 5; i >= 0; i--)
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + 0.25F + level.random.nextFloat() * 0.5F,
|
2020-01-26 00:16:06 +01:00
|
|
|
message.posY + 1.01F,
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posZ + 0.25F + level.random.nextFloat() * 0.5F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
level.random.nextFloat() * 0.04F + 0.02F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
0x5ccc30, 1F + level.random.nextFloat() * 1.5F, 40, 0F, false, true);
|
2021-12-04 15:40:09 +01:00
|
|
|
}),
|
|
|
|
PLACER_PLACING((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(20) + 20; i >= 0; i--) {
|
|
|
|
var side = level.random.nextBoolean();
|
|
|
|
var x = side ? level.random.nextFloat() : level.random.nextBoolean() ? 1.1F : -0.1F;
|
|
|
|
var z = !side ? level.random.nextFloat() : level.random.nextBoolean() ? 1.1F : -0.1F;
|
2021-12-04 15:40:09 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + x, message.posY + 0.1F + level.random.nextFloat() * 0.98F, message.posZ + z,
|
2020-01-26 00:16:06 +01:00
|
|
|
0F, 0F, 0F,
|
2021-12-15 16:24:53 +01:00
|
|
|
0xad7a37, level.random.nextFloat() + 1F, 50, 0F, true, true);
|
2020-01-26 00:16:06 +01:00
|
|
|
}
|
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
HOPPER_UPGRADE((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(20) + 10; i >= 0; i--)
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
|
|
|
message.posX, message.posY + 0.45F, message.posZ,
|
2021-12-15 16:24:53 +01:00
|
|
|
level.random.nextGaussian() * 0.015F,
|
|
|
|
level.random.nextGaussian() * 0.015F,
|
|
|
|
level.random.nextGaussian() * 0.015F,
|
|
|
|
0xdde7ff, level.random.nextFloat() + 1F, 30, -0.06F, true, true);
|
2020-01-26 00:16:06 +01:00
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
SHOCKWAVE_CREATOR((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = 0; i < 360; i += 2) {
|
|
|
|
var rad = Math.toRadians(i);
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
|
|
|
message.posX, message.posY + 0.01F, message.posZ,
|
|
|
|
(float) Math.sin(rad) * 0.65F,
|
|
|
|
0F,
|
|
|
|
(float) Math.cos(rad) * 0.65F,
|
|
|
|
0x911b07, 3F, 10, 0F, false, true);
|
|
|
|
}
|
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
OAK_GENERATOR((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var sapX = message.data[0];
|
|
|
|
var sapY = message.data[1];
|
|
|
|
var sapZ = message.data[2];
|
|
|
|
var releaseAura = message.data[3] > 0;
|
|
|
|
for (var i = level.random.nextInt(20) + 10; i >= 0; i--)
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnParticleStream(
|
2021-12-15 16:24:53 +01:00
|
|
|
sapX + 0.5F + (float) level.random.nextGaussian() * 3F,
|
|
|
|
sapY + 0.5F + level.random.nextFloat() * 4F,
|
|
|
|
sapZ + 0.5F + (float) level.random.nextGaussian() * 3F,
|
2020-01-26 00:16:06 +01:00
|
|
|
message.posX + 0.5F,
|
|
|
|
message.posY + 0.5F,
|
|
|
|
message.posZ + 0.5F,
|
2021-12-15 16:24:53 +01:00
|
|
|
0.6F, BiomeColors.getAverageGrassColor(level, new BlockPos(sapX, sapY, sapZ)), 1.5F);
|
2020-01-26 00:16:06 +01:00
|
|
|
if (releaseAura)
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(10) + 10; i >= 0; i--)
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + 0.25F + level.random.nextFloat() * 0.5F,
|
2020-01-26 00:16:06 +01:00
|
|
|
message.posY + 1.01F,
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posZ + 0.25F + level.random.nextFloat() * 0.5F,
|
|
|
|
level.random.nextGaussian() * 0.03F,
|
|
|
|
level.random.nextFloat() * 0.04F + 0.04F,
|
|
|
|
level.random.nextGaussian() * 0.03F,
|
|
|
|
0x5ccc30, 1F + level.random.nextFloat() * 1.5F, 60, 0F, false, true);
|
2020-01-26 00:16:06 +01:00
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
OFFERING_TABLE((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var genX = message.data[0];
|
|
|
|
var genY = message.data[1];
|
|
|
|
var genZ = message.data[2];
|
|
|
|
for (var i = level.random.nextInt(20) + 10; i >= 0; i--)
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
|
|
|
message.posX, message.posY + 0.5F, message.posZ,
|
2021-12-15 16:24:53 +01:00
|
|
|
level.random.nextGaussian() * 0.02F,
|
|
|
|
level.random.nextFloat() * 0.25F,
|
|
|
|
level.random.nextGaussian() * 0.02F,
|
2020-01-26 00:16:06 +01:00
|
|
|
0xffadfd, 1.5F, 40, 0F, false, true);
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(50) + 30; i >= 0; i--)
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
genX + 0.5F + level.random.nextGaussian() * 2.5F,
|
2020-01-26 00:16:06 +01:00
|
|
|
genY + 0.1F,
|
2021-12-15 16:24:53 +01:00
|
|
|
genZ + 0.5F + level.random.nextGaussian() * 2.5F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
level.random.nextFloat() * 0.01F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
2020-01-26 00:16:06 +01:00
|
|
|
0xd3e4ff, 1.5F, 150, 0F, false, true);
|
|
|
|
}),
|
2023-02-15 23:45:50 +01:00
|
|
|
PICKUP_STOPPER((message, level) -> NaturesAuraAPI.instance().spawnMagicParticle(
|
|
|
|
message.posX, message.posY + 0.4F, message.posZ,
|
|
|
|
level.random.nextGaussian() * 0.005F,
|
|
|
|
level.random.nextFloat() * 0.005F,
|
|
|
|
level.random.nextGaussian() * 0.005F,
|
|
|
|
0xcc3116, 1.5F, 40, 0F, false, true)),
|
2021-12-04 15:40:09 +01:00
|
|
|
SPAWN_LAMP((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(5) + 5; i >= 0; i--)
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + 0.3F + level.random.nextFloat() * 0.4F,
|
|
|
|
message.posY + 0.15F + level.random.nextFloat() * 0.5F,
|
|
|
|
message.posZ + 0.3F + level.random.nextFloat() * 0.4F,
|
2020-01-26 00:16:06 +01:00
|
|
|
0F, 0F, 0F,
|
|
|
|
0xf4a142, 1F, 30, 0F, false, true);
|
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
ANIMAL_GEN_CREATE((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(5) + 5; i >= 0; i--)
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + 0.25F + level.random.nextFloat() * 0.5F,
|
2020-01-26 00:16:06 +01:00
|
|
|
message.posY + 1.01F,
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posZ + 0.25F + level.random.nextFloat() * 0.5F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
level.random.nextFloat() * 0.04F + 0.02F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
0xd13308, 1F + level.random.nextFloat() * 1.5F, 40, 0F, false, true);
|
2020-01-26 00:16:06 +01:00
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
ANIMAL_GEN_CONSUME((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var child = message.data[0] > 0;
|
|
|
|
var height = message.data[1] / 10F;
|
|
|
|
var genX = message.data[2];
|
|
|
|
var genY = message.data[3];
|
|
|
|
var genZ = message.data[4];
|
|
|
|
for (var i = child ? level.random.nextInt(10) + 10 : level.random.nextInt(20) + 20; i >= 0; i--)
|
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
|
|
|
message.posX + level.random.nextGaussian() * 0.25F,
|
|
|
|
message.posY + height * 0.75F + level.random.nextGaussian() * 0.25F,
|
|
|
|
message.posZ + level.random.nextGaussian() * 0.25F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
level.random.nextFloat() * 0.01F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
0x42f4c8, level.random.nextFloat() * (child ? 0.5F : 2F) + 1F, level.random.nextInt(30) + 40, 0F, true, true);
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnParticleStream(
|
|
|
|
message.posX, message.posY + height * 0.75F, message.posZ,
|
|
|
|
genX + 0.5F, genY + 0.5F, genZ + 0.5F,
|
|
|
|
0.15F, 0x41c4f4, child ? 1.5F : 3F);
|
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
END_FLOWER_DECAY((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var color = message.data[0];
|
|
|
|
for (var i = level.random.nextInt(10) + 20; i >= 0; i--)
|
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
|
|
|
message.posX + level.random.nextFloat(),
|
|
|
|
message.posY + level.random.nextFloat(),
|
|
|
|
message.posZ + level.random.nextFloat(),
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
level.random.nextFloat() * 0.01F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
2020-01-26 00:16:06 +01:00
|
|
|
color, 1.5F, 80, 0F, true, true);
|
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
ANIMAL_SPAWNER((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(20) + 10; i >= 0; i--)
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
|
|
|
message.posX, message.posY + 0.5F, message.posZ,
|
2021-12-15 16:24:53 +01:00
|
|
|
level.random.nextGaussian() * 0.02F,
|
|
|
|
level.random.nextFloat() * 0.02F,
|
|
|
|
level.random.nextGaussian() * 0.02F,
|
2020-01-26 00:16:06 +01:00
|
|
|
0x16b7b2, 1.5F, 40, 0F, false, true);
|
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
RF_CONVERTER((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(5) + 2; i >= 0; i--)
|
2023-07-08 12:32:27 +02:00
|
|
|
Multiblocks.RF_CONVERTER.forEach(BlockPos.containing(message.posX, message.posY, message.posZ), 'R', (blockPos, matcher) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
if (level.random.nextFloat() < 0.35F) {
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnParticleStream(
|
2021-12-15 16:24:53 +01:00
|
|
|
blockPos.getX() + level.random.nextFloat(),
|
|
|
|
blockPos.getY() + level.random.nextFloat(),
|
|
|
|
blockPos.getZ() + level.random.nextFloat(),
|
|
|
|
message.posX + level.random.nextFloat(),
|
|
|
|
message.posY + level.random.nextFloat(),
|
|
|
|
message.posZ + level.random.nextFloat(),
|
2020-01-26 00:16:06 +01:00
|
|
|
0.05F, 0xff1a05, 1.5F);
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
});
|
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
END_FLOWER_CONSUME((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var color = message.data[0];
|
|
|
|
for (var i = level.random.nextInt(20) + 10; i >= 0; i--)
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
|
|
|
message.posX, message.posY + 0.5F, message.posZ,
|
2021-12-15 16:24:53 +01:00
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
level.random.nextFloat() * 0.01F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
2020-01-26 00:16:06 +01:00
|
|
|
color, 1.5F, 40, 0F, false, true);
|
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
MOVER_CART((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var motionX = message.data[0] / 100F;
|
|
|
|
var motionY = message.data[1] / 100F;
|
|
|
|
var motionZ = message.data[2] / 100F;
|
|
|
|
for (var i = level.random.nextInt(60) + 30; i >= 0; i--)
|
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
|
|
|
message.posX + level.random.nextGaussian() * 10F,
|
|
|
|
message.posY + level.random.nextGaussian() * 10F,
|
|
|
|
message.posZ + level.random.nextGaussian() * 10F,
|
2020-01-26 00:16:06 +01:00
|
|
|
motionX * 0.2F, motionY * 0.2F, motionZ * 0.2F,
|
2021-12-04 15:40:09 +01:00
|
|
|
IAuraType.forLevel(level).getColor(), 2F, 30, 0F, false, true);
|
2020-01-26 00:16:06 +01:00
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
MOSS_GENERATOR((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(30) + 30; i >= 0; i--) {
|
|
|
|
var side = level.random.nextInt(3);
|
|
|
|
var x = side != 0 ? level.random.nextFloat() : level.random.nextBoolean() ? 1.1F : -0.1F;
|
|
|
|
var y = side != 1 ? level.random.nextFloat() : level.random.nextBoolean() ? 1.1F : -0.1F;
|
|
|
|
var z = side != 2 ? level.random.nextFloat() : level.random.nextBoolean() ? 1.1F : -0.1F;
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
|
|
|
message.posX + x,
|
|
|
|
message.posY + y,
|
|
|
|
message.posZ + z,
|
|
|
|
0F, 0F, 0F,
|
2021-12-15 16:24:53 +01:00
|
|
|
0x184c0d, level.random.nextFloat() + 1F, 30, 0F, true, true);
|
2020-01-26 00:16:06 +01:00
|
|
|
}
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(20) + 10; i >= 0; i--)
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + level.random.nextFloat(),
|
2020-01-26 00:16:06 +01:00
|
|
|
message.posY + 1F,
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posZ + level.random.nextFloat(),
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
level.random.nextFloat() * 0.04F + 0.02F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
0x5ccc30, 1F + level.random.nextFloat() * 1.5F, 40, 0F, true, true);
|
2020-01-26 00:16:06 +01:00
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
FIREWORK_GEN((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var goalX = message.data[0];
|
|
|
|
var goalY = message.data[1];
|
|
|
|
var goalZ = message.data[2];
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().setParticleSpawnRange(64);
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(30) + 30; i >= 0; i--)
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnParticleStream(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + (float) level.random.nextGaussian(),
|
|
|
|
message.posY + (float) level.random.nextGaussian(),
|
|
|
|
message.posZ + (float) level.random.nextGaussian(),
|
|
|
|
goalX + 0.25F + level.random.nextFloat() * 0.5F,
|
|
|
|
goalY + 0.25F + level.random.nextFloat() * 0.5F,
|
|
|
|
goalZ + 0.25F + level.random.nextFloat() * 0.5F,
|
|
|
|
0.65F, message.data[3 + level.random.nextInt(message.data.length - 3)], 1F);
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().setParticleSpawnRange(32);
|
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
DIMENSION_RAIL((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var width = message.data[0] / 100F;
|
|
|
|
var height = message.data[1] / 100F;
|
|
|
|
var depth = message.data[2] / 100F;
|
|
|
|
for (var i = level.random.nextInt(100) + 50; i >= 0; i--)
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + level.random.nextFloat() * width,
|
|
|
|
message.posY + level.random.nextFloat() * height,
|
|
|
|
message.posZ + level.random.nextFloat() * depth,
|
|
|
|
0F, 0F, 0F, 0xd60cff, 1F + level.random.nextFloat(), 60, 0F, false, true);
|
2020-01-26 00:16:06 +01:00
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
PROJECTILE_GEN((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var x = message.data[0];
|
|
|
|
var y = message.data[1];
|
|
|
|
var z = message.data[2];
|
|
|
|
for (var i = level.random.nextInt(10) + 5; i >= 0; i--)
|
2020-01-26 00:16:06 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
x + 0.25F + level.random.nextFloat() * 0.5F,
|
2020-01-26 00:16:06 +01:00
|
|
|
y + 1.01F,
|
2021-12-15 16:24:53 +01:00
|
|
|
z + 0.25F + level.random.nextFloat() * 0.5F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
level.random.nextFloat() * 0.04F + 0.02F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
0x5ccc30, 1F + level.random.nextFloat() * 1.5F, 40, 0F, false, true);
|
|
|
|
for (var i = level.random.nextInt(10) + 10; i >= 0; i--)
|
2021-12-04 15:40:09 +01:00
|
|
|
level.addParticle(ParticleTypes.FIREWORK,
|
2020-01-26 00:16:06 +01:00
|
|
|
message.posX, message.posY, message.posZ,
|
2021-12-15 16:24:53 +01:00
|
|
|
level.random.nextGaussian() * 0.03F,
|
|
|
|
level.random.nextGaussian() * 0.03F,
|
|
|
|
level.random.nextGaussian() * 0.03F);
|
2020-01-26 15:52:16 +01:00
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
BLAST_FURNACE_BOOSTER((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var worked = message.data[0] > 0;
|
|
|
|
for (var i = level.random.nextInt(10) + 5; i >= 0; i--)
|
2021-12-04 15:40:09 +01:00
|
|
|
level.addParticle(ParticleTypes.CAMPFIRE_COSY_SMOKE,
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + 5 / 16F + level.random.nextInt(6) / 16F,
|
2020-01-26 15:52:16 +01:00
|
|
|
message.posY + 0.6F,
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posZ + 5 / 16F + level.random.nextInt(6) / 16F,
|
|
|
|
level.random.nextGaussian() * 0.005F,
|
|
|
|
level.random.nextFloat() * 0.02F + 0.01F,
|
|
|
|
level.random.nextGaussian() * 0.005F);
|
2020-01-26 15:52:16 +01:00
|
|
|
|
|
|
|
if (worked) {
|
2023-07-08 12:32:27 +02:00
|
|
|
var pos = BlockPos.containing(message.posX, message.posY, message.posZ);
|
2021-12-15 16:24:53 +01:00
|
|
|
var color = IAuraChunk.getAuraChunk(level, pos).getType().getColor();
|
|
|
|
for (var i = level.random.nextInt(10) + 10; i >= 0; i--)
|
2020-01-26 15:52:16 +01:00
|
|
|
NaturesAuraAPI.instance().spawnParticleStream(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + (float) level.random.nextGaussian() * 5,
|
|
|
|
message.posY + level.random.nextFloat() * 5,
|
|
|
|
message.posZ + (float) level.random.nextGaussian() * 5,
|
2020-01-26 15:52:16 +01:00
|
|
|
message.posX + 0.5F, message.posY + 0.5F, message.posZ + 0.5F,
|
2021-12-15 16:24:53 +01:00
|
|
|
0.25F, color, 0.5F + level.random.nextFloat()
|
2020-01-26 15:52:16 +01:00
|
|
|
);
|
|
|
|
}
|
2020-02-02 19:43:40 +01:00
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
ANIMAL_CONTAINER((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(2) + 1; i > 0; i--)
|
2020-02-02 19:43:40 +01:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + level.random.nextGaussian() * 0.15F,
|
|
|
|
message.posY - level.random.nextFloat() * 0.5F,
|
|
|
|
message.posZ + level.random.nextGaussian() * 0.15F,
|
|
|
|
0, 0, 0, 0x42e9f5, 1 + level.random.nextFloat() * 2, 40, 0, false, true
|
2020-02-02 19:43:40 +01:00
|
|
|
);
|
2020-02-02 22:50:02 +01:00
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
SNOW_CREATOR((message, level) -> {
|
2023-07-08 12:32:27 +02:00
|
|
|
var pos = BlockPos.containing(message.posX, message.posY, message.posZ);
|
2021-12-15 16:24:53 +01:00
|
|
|
var color = IAuraChunk.getAuraChunk(level, pos).getType().getColor();
|
|
|
|
for (var i = level.random.nextInt(3) + 1; i > 0; i--)
|
2020-02-02 22:50:02 +01:00
|
|
|
NaturesAuraAPI.instance().spawnParticleStream(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + (float) level.random.nextGaussian() * 5,
|
|
|
|
message.posY + level.random.nextFloat() * 5,
|
|
|
|
message.posZ + (float) level.random.nextGaussian() * 5,
|
2020-02-02 22:50:02 +01:00
|
|
|
message.posX + 0.5F, message.posY + 0.5F, message.posZ + 0.5F,
|
2021-12-15 16:24:53 +01:00
|
|
|
0.25F, color, 0.5F + level.random.nextFloat()
|
2020-02-02 22:50:02 +01:00
|
|
|
);
|
2020-05-04 23:39:57 +02:00
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
CHORUS_GENERATOR((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var chorusX = message.data[0];
|
|
|
|
var chorusY = message.data[1];
|
|
|
|
var chorusZ = message.data[2];
|
|
|
|
for (var i = level.random.nextInt(5) + 3; i >= 0; i--)
|
2020-05-04 23:39:57 +02:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
chorusX + level.random.nextFloat(), chorusY + level.random.nextFloat(), chorusZ + level.random.nextFloat(),
|
2020-05-04 23:39:57 +02:00
|
|
|
0F, 0F, 0F,
|
2021-12-15 16:24:53 +01:00
|
|
|
0xbb0be3, 1F + level.random.nextFloat(), 50, 0F, false, true);
|
|
|
|
for (var i = level.random.nextInt(5) + 5; i >= 0; i--)
|
2020-05-04 23:39:57 +02:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + 0.25F + level.random.nextFloat() * 0.5F,
|
2020-05-04 23:39:57 +02:00
|
|
|
message.posY + 1.01F,
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posZ + 0.25F + level.random.nextFloat() * 0.5F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
level.random.nextFloat() * 0.04F + 0.02F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
IAuraType.forLevel(level).getColor(), 1F + level.random.nextFloat() * 1.5F, 40, 0F, false, true);
|
2020-05-05 19:43:27 +02:00
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
TIMER_RESET((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var color = message.data[0];
|
|
|
|
for (var i = level.random.nextInt(10) + 15; i >= 0; i--)
|
2020-05-05 19:43:27 +02:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + 5 / 16F + level.random.nextFloat() * 6 / 16F,
|
|
|
|
message.posY + 2 / 16F + level.random.nextFloat() * 8 / 16F,
|
|
|
|
message.posZ + 5 / 16F + level.random.nextFloat() * 6 / 16F,
|
|
|
|
0, 0, 0, color, 2, 40 + level.random.nextInt(20), 0, false, true);
|
2020-05-20 14:55:59 +02:00
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
STRUCTURE_FINDER((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var entity = (EntityStructureFinder) level.getEntity(message.data[0]);
|
|
|
|
var renderer = Minecraft.getInstance().levelRenderer;
|
2020-05-20 14:55:59 +02:00
|
|
|
|
2021-12-15 16:24:53 +01:00
|
|
|
var d0 = message.posX + 0.5D;
|
2020-05-20 14:55:59 +02:00
|
|
|
double d13 = message.posY;
|
2021-12-15 16:24:53 +01:00
|
|
|
var d18 = message.posZ + 0.5D;
|
|
|
|
for (var j2 = 0; j2 < 8; ++j2)
|
|
|
|
renderer.addParticle(new ItemParticleOption(ParticleTypes.ITEM, entity.getItem()), false, d0, d13, d18, level.random.nextGaussian() * 0.15D, level.random.nextDouble() * 0.2D, level.random.nextGaussian() * 0.15D);
|
2020-05-20 14:55:59 +02:00
|
|
|
|
2021-12-15 16:24:53 +01:00
|
|
|
int color = entity.getEntityData().get(EntityStructureFinder.COLOR);
|
2022-06-27 15:24:04 +02:00
|
|
|
for (var d24 = 0.0D; d24 < Math.PI * 2D; d24 += 0.15707963267948966D) {
|
2020-05-20 14:55:59 +02:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(d0 + Math.cos(d24) * 5.0D, d13 - 0.4D, d18 + Math.sin(d24) * 5.0D, Math.cos(d24) * -2, 0.0D, Math.sin(d24) * -2, color, 2, 60, 0, false, true);
|
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(d0 + Math.cos(d24) * 5.0D, d13 - 0.4D, d18 + Math.sin(d24) * 5.0D, Math.cos(d24) * -2.5, 0.0D, Math.sin(d24) * -2.5, color, 2, 60, 0, false, true);
|
|
|
|
}
|
2020-09-28 16:45:37 +02:00
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
SLIME_SPLIT_GEN_CREATE((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(5) + 5; i >= 0; i--)
|
2020-09-28 16:45:37 +02:00
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + 0.25F + level.random.nextFloat() * 0.5F,
|
2020-09-28 16:45:37 +02:00
|
|
|
message.posY + 1.01F,
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posZ + 0.25F + level.random.nextFloat() * 0.5F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
level.random.nextFloat() * 0.04F + 0.02F,
|
|
|
|
level.random.nextGaussian() * 0.01F,
|
|
|
|
message.data[0], 1F + level.random.nextFloat() * 1.5F, 40, 0F, false, true);
|
2020-09-28 16:45:37 +02:00
|
|
|
}),
|
2021-12-04 15:40:09 +01:00
|
|
|
SLIME_SPLIT_GEN_START((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
var x = message.data[0];
|
|
|
|
var y = message.data[1];
|
|
|
|
var z = message.data[2];
|
|
|
|
var color = message.data[3];
|
|
|
|
for (var i = level.random.nextInt(10) + 5; i >= 0; i--)
|
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
|
|
|
message.posX + (float) level.random.nextGaussian() * 0.5F,
|
|
|
|
message.posY + (float) level.random.nextGaussian() * 0.5F,
|
|
|
|
message.posZ + (float) level.random.nextGaussian() * 0.5F,
|
|
|
|
level.random.nextGaussian() * 0.02F,
|
|
|
|
level.random.nextFloat() * 0.04F + 0.02F,
|
|
|
|
level.random.nextGaussian() * 0.02F,
|
|
|
|
color, level.random.nextFloat() + 1, level.random.nextInt(20) + 20, 0, false, true);
|
|
|
|
for (var i = level.random.nextInt(10) + 5; i >= 0; i--)
|
2020-09-28 16:45:37 +02:00
|
|
|
NaturesAuraAPI.instance().spawnParticleStream(
|
2021-12-15 16:24:53 +01:00
|
|
|
message.posX + (float) level.random.nextGaussian() * 0.5F,
|
|
|
|
message.posY + (float) level.random.nextGaussian() * 0.5F,
|
|
|
|
message.posZ + (float) level.random.nextGaussian() * 0.5F,
|
|
|
|
x + 0.5F, y + 0.5F, z + 0.5F, 0.2F, color, level.random.nextFloat() + 1);
|
2021-12-04 15:40:09 +01:00
|
|
|
}),
|
|
|
|
PET_REVIVER((message, level) -> {
|
2021-12-15 16:24:53 +01:00
|
|
|
for (var i = level.random.nextInt(50) + 150; i >= 0; i--)
|
|
|
|
NaturesAuraAPI.instance().spawnMagicParticle(
|
|
|
|
message.posX + (float) level.random.nextGaussian() * 0.4F,
|
|
|
|
message.posY + (float) level.random.nextGaussian() * 0.4F,
|
|
|
|
message.posZ + (float) level.random.nextGaussian() * 0.4F,
|
|
|
|
level.random.nextGaussian() * 0.002F,
|
|
|
|
level.random.nextFloat() * 0.001F + 0.002F,
|
|
|
|
level.random.nextGaussian() * 0.002F,
|
|
|
|
message.data[0], level.random.nextFloat() * 2 + 1, level.random.nextInt(50) + 50, 0, false, true);
|
2020-01-26 00:16:06 +01:00
|
|
|
});
|
|
|
|
|
2021-12-04 15:40:09 +01:00
|
|
|
public final BiConsumer<PacketParticles, Level> action;
|
2020-01-26 00:16:06 +01:00
|
|
|
|
2021-12-04 15:40:09 +01:00
|
|
|
Type(BiConsumer<PacketParticles, Level> action) {
|
2020-01-26 00:16:06 +01:00
|
|
|
this.action = action;
|
|
|
|
}
|
|
|
|
}
|
2024-03-10 10:41:34 +01:00
|
|
|
|
2020-01-22 01:35:47 +01:00
|
|
|
}
|