TheWildBackport/common/src/main/java/com/cursedcauldron/wildbackport/client/particle/SculkChargeParticleOptions.java
2022-07-10 00:16:25 -04:00

48 lines
1.8 KiB
Java

package com.cursedcauldron.wildbackport.client.particle;
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;
import java.util.Locale;
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);
}
}