77 lines
1.8 KiB
Java
77 lines
1.8 KiB
Java
package com.hypixel.hytale.server.spawning.jobs;
|
|
|
|
import com.hypixel.hytale.logger.HytaleLogger;
|
|
import com.hypixel.hytale.server.spawning.ISpawnableWithModel;
|
|
import com.hypixel.hytale.server.spawning.SpawningContext;
|
|
import com.hypixel.hytale.server.spawning.SpawningPlugin;
|
|
import javax.annotation.Nonnull;
|
|
import javax.annotation.Nullable;
|
|
|
|
public abstract class SpawnJob {
|
|
protected static final HytaleLogger LOGGER = SpawningPlugin.get().getLogger();
|
|
private static int jobIdCounter;
|
|
protected final int jobId;
|
|
protected final SpawningContext spawningContext = new SpawningContext();
|
|
protected int columnBudget;
|
|
protected int budgetUsed;
|
|
protected boolean terminated;
|
|
|
|
public SpawnJob() {
|
|
this.jobId = jobIdCounter++;
|
|
}
|
|
|
|
public int getJobId() {
|
|
return this.jobId;
|
|
}
|
|
|
|
public int getBudgetUsed() {
|
|
return this.budgetUsed;
|
|
}
|
|
|
|
public void setBudgetUsed(int budgetUsed) {
|
|
this.budgetUsed = budgetUsed;
|
|
}
|
|
|
|
public int getColumnBudget() {
|
|
return this.columnBudget;
|
|
}
|
|
|
|
public void setColumnBudget(int columnBudget) {
|
|
this.columnBudget = columnBudget;
|
|
}
|
|
|
|
@Nonnull
|
|
public SpawningContext getSpawningContext() {
|
|
return this.spawningContext;
|
|
}
|
|
|
|
protected void beginProbing() {
|
|
this.reset();
|
|
this.terminated = false;
|
|
}
|
|
|
|
public void reset() {
|
|
this.spawningContext.releaseFull();
|
|
}
|
|
|
|
public boolean budgetAvailable() {
|
|
return this.budgetUsed < this.columnBudget;
|
|
}
|
|
|
|
public boolean isTerminated() {
|
|
return this.terminated;
|
|
}
|
|
|
|
public void setTerminated(boolean terminated) {
|
|
this.terminated = terminated;
|
|
}
|
|
|
|
@Nullable
|
|
public abstract ISpawnableWithModel getSpawnable();
|
|
|
|
public abstract boolean shouldTerminate();
|
|
|
|
@Nullable
|
|
public abstract String getSpawnableName();
|
|
}
|