// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.builtin.blockspawner.state;

import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.Codec;
import javax.annotation.Nullable;
import javax.annotation.Nonnull;
import com.hypixel.hytale.builtin.blockspawner.BlockSpawnerPlugin;
import com.hypixel.hytale.component.ComponentType;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.component.Component;

public class BlockSpawner implements Component<ChunkStore>
{
    public static final BuilderCodec<BlockSpawner> CODEC;
    private String blockSpawnerId;
    
    public static ComponentType<ChunkStore, BlockSpawner> getComponentType() {
        return BlockSpawnerPlugin.get().getBlockSpawnerComponentType();
    }
    
    public BlockSpawner() {
    }
    
    public BlockSpawner(final String blockSpawnerId) {
        this.blockSpawnerId = blockSpawnerId;
    }
    
    public String getBlockSpawnerId() {
        return this.blockSpawnerId;
    }
    
    public void setBlockSpawnerId(final String blockSpawnerId) {
        this.blockSpawnerId = blockSpawnerId;
    }
    
    @Nonnull
    @Override
    public String toString() {
        return "BlockSpawnerState{blockSpawnerId='" + this.blockSpawnerId + "'} " + super.toString();
    }
    
    @Nullable
    @Override
    public Component<ChunkStore> clone() {
        return new BlockSpawner(this.blockSpawnerId);
    }
    
    static {
        CODEC = BuilderCodec.builder(BlockSpawner.class, BlockSpawner::new).addField(new KeyedCodec<String>("BlockSpawnerId", Codec.STRING), (state, s) -> state.blockSpawnerId = s, state -> state.blockSpawnerId).build();
    }
}
