TheWildBackport/common/src/main/java/com/cursedcauldron/wildbackport/client/particle/SculkChargeParticleOptions.java
2023-08-29 17:39:30 +02:00

61 lines
2.1 KiB
Java

package com.cursedcauldron.wildbackport.client.particle;
import java.util.Locale;
import com.cursedcauldron.wildbackport.client.registry.WBParticleTypes;
import com.mojang.brigadier.StringReader;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.Registry;
import net.minecraft.core.particles.ParticleOptions;
import net.minecraft.core.particles.ParticleType;
import net.minecraft.network.FriendlyByteBuf;
public record SculkChargeParticleOptions(float roll) implements ParticleOptions {
public static final Codec<SculkChargeParticleOptions> CODEC
= RecordCodecBuilder.create(instance -> {
return instance
.group(Codec.FLOAT.fieldOf("roll").forGetter(options -> {
return options.roll;
}))
.apply(instance, SculkChargeParticleOptions::new);
});
public static final Deserializer<SculkChargeParticleOptions> DESERIALIZER
= new Deserializer<>() {
@Override
public SculkChargeParticleOptions fromCommand(
ParticleType<SculkChargeParticleOptions> type, StringReader reader
) throws CommandSyntaxException {
return new SculkChargeParticleOptions(reader.readFloat());
}
@Override
public SculkChargeParticleOptions fromNetwork(
ParticleType<SculkChargeParticleOptions> type, FriendlyByteBuf buf
) {
return new SculkChargeParticleOptions(buf.readFloat());
}
};
@Override
public ParticleType<?> getType() {
return WBParticleTypes.SCULK_CHARGE.get();
}
@Override
public void writeToNetwork(FriendlyByteBuf buf) {
buf.writeFloat(this.roll);
}
@Override
public String writeToString() {
return String.format(
Locale.ROOT,
"%s %.2f",
Registry.PARTICLE_TYPE.getId(this.getType()),
this.roll
);
}
}