hytale-server/com/hypixel/hytale/builtin/adventure/farming/states/FarmingBlock.java

169 lines
5.4 KiB
Java

package com.hypixel.hytale.builtin.adventure.farming.states;
import com.hypixel.hytale.builtin.adventure.farming.FarmingPlugin;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.component.Component;
import com.hypixel.hytale.component.ComponentType;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import java.time.Instant;
import javax.annotation.Nullable;
public class FarmingBlock implements Component<ChunkStore> {
public static final String DEFAULT_STAGE_SET = "Default";
public static final BuilderCodec<FarmingBlock> CODEC = BuilderCodec.builder(FarmingBlock.class, FarmingBlock::new)
.append(
new KeyedCodec<>("CurrentStageSet", Codec.STRING),
(farmingBlock, currentStageSet) -> farmingBlock.currentStageSet = currentStageSet,
farmingBlock -> "Default".equals(farmingBlock.currentStageSet) ? null : "Default"
)
.add()
.append(
new KeyedCodec<>("GrowthProgress", Codec.FLOAT),
(farmingBlock, growthProgress) -> farmingBlock.growthProgress = growthProgress,
farmingBlock -> farmingBlock.growthProgress == 0.0F ? null : farmingBlock.growthProgress
)
.add()
.append(
new KeyedCodec<>("LastTickGameTime", Codec.INSTANT),
(farmingBlock, lastTickGameTime) -> farmingBlock.lastTickGameTime = lastTickGameTime,
farmingBlock -> farmingBlock.lastTickGameTime
)
.add()
.append(
new KeyedCodec<>("Generation", Codec.INTEGER),
(farmingBlock, generation) -> farmingBlock.generation = generation,
farmingBlock -> farmingBlock.generation == 0 ? null : farmingBlock.generation
)
.add()
.append(
new KeyedCodec<>("PreviousBlockType", Codec.STRING),
(farmingBlock, previousBlockType) -> farmingBlock.previousBlockType = previousBlockType,
farmingBlock -> farmingBlock.previousBlockType
)
.add()
.append(
new KeyedCodec<>("SpreadRate", Codec.FLOAT),
(farmingBlock, spreadRate) -> farmingBlock.spreadRate = spreadRate,
farmingBlock -> farmingBlock.spreadRate == 1.0F ? null : farmingBlock.spreadRate
)
.add()
.append(
new KeyedCodec<>("Executions", Codec.INTEGER),
(farmingBlock, executions) -> farmingBlock.executions = executions,
farmingBlock -> farmingBlock.executions == 0 ? null : farmingBlock.executions
)
.add()
.build();
private String currentStageSet = "Default";
private float growthProgress;
private Instant lastTickGameTime;
private int generation;
private String previousBlockType;
private float spreadRate = 1.0F;
private int executions = 0;
public static ComponentType<ChunkStore, FarmingBlock> getComponentType() {
return FarmingPlugin.get().getFarmingBlockComponentType();
}
public FarmingBlock() {
}
public FarmingBlock(
String currentStageSet, float growthProgress, Instant lastTickGameTime, int generation, String previousBlockType, float spreadRate, int executions
) {
this.currentStageSet = currentStageSet;
this.growthProgress = growthProgress;
this.lastTickGameTime = lastTickGameTime;
this.generation = generation;
this.previousBlockType = previousBlockType;
this.spreadRate = spreadRate;
this.executions = executions;
}
public String getCurrentStageSet() {
return this.currentStageSet;
}
public void setCurrentStageSet(String currentStageSet) {
this.currentStageSet = currentStageSet != null ? currentStageSet : "Default";
}
public float getGrowthProgress() {
return this.growthProgress;
}
public void setGrowthProgress(float growthProgress) {
this.growthProgress = growthProgress;
}
public Instant getLastTickGameTime() {
return this.lastTickGameTime;
}
public void setLastTickGameTime(Instant lastTickGameTime) {
this.lastTickGameTime = lastTickGameTime;
}
public int getGeneration() {
return this.generation;
}
public void setGeneration(int generation) {
this.generation = generation;
}
public String getPreviousBlockType() {
return this.previousBlockType;
}
public void setPreviousBlockType(String previousBlockType) {
this.previousBlockType = previousBlockType;
}
public float getSpreadRate() {
return this.spreadRate;
}
public void setSpreadRate(float spreadRate) {
this.spreadRate = spreadRate;
}
public int getExecutions() {
return this.executions;
}
public void setExecutions(int executions) {
this.executions = executions;
}
@Nullable
@Override
public Component<ChunkStore> clone() {
return new FarmingBlock(
this.currentStageSet, this.growthProgress, this.lastTickGameTime, this.generation, this.previousBlockType, this.spreadRate, this.executions
);
}
@Override
public String toString() {
return "FarmingBlock{currentStageSet='"
+ this.currentStageSet
+ "', growthProgress="
+ this.growthProgress
+ ", lastTickGameTime="
+ this.lastTickGameTime
+ ", generation="
+ this.generation
+ ", previousBlockType='"
+ this.previousBlockType
+ "', spreadRate="
+ this.spreadRate
+ ", executions="
+ this.executions
+ "}";
}
}