105 lines
3.6 KiB
Java
105 lines
3.6 KiB
Java
package me.xginko.villageroptimizer.wrapper;
|
|
|
|
import me.xginko.villageroptimizer.VillagerOptimizer;
|
|
import me.xginko.villageroptimizer.enums.OptimizationType;
|
|
import org.bukkit.entity.Villager;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
public interface VillagerDataHandler {
|
|
|
|
static VillagerDataHandler[] forVillager(Villager villager) {
|
|
if (VillagerOptimizer.getConfiguration().support_other_plugins) {
|
|
return new VillagerDataHandler[]{
|
|
new MainVillagerDataHandlerImpl(villager),
|
|
new AVLVillagerDataHandlerImpl(villager)
|
|
};
|
|
} else {
|
|
return new VillagerDataHandler[]{ new MainVillagerDataHandlerImpl(villager) };
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return True if the DataHandle is this plugin's implementation.
|
|
*/
|
|
boolean isMain();
|
|
|
|
/**
|
|
* @return True if the villager is optimized by plugin, otherwise false.
|
|
*/
|
|
boolean isOptimized();
|
|
|
|
/**
|
|
* @param cooldown_millis The configured cooldown in millis until the next optimization is allowed to occur.
|
|
* @return True if villager can be optimized again, otherwise false.
|
|
*/
|
|
boolean canOptimize(long cooldown_millis);
|
|
|
|
/**
|
|
* @param type OptimizationType the villager should be set to.
|
|
*/
|
|
void setOptimizationType(OptimizationType type);
|
|
|
|
/**
|
|
* @return The current OptimizationType of the villager.
|
|
*/
|
|
@NotNull OptimizationType getOptimizationType();
|
|
|
|
/**
|
|
* Saves the system time when the villager was last optimized.
|
|
*/
|
|
void saveOptimizeTime();
|
|
|
|
/**
|
|
* For convenience so the remaining millis since the last stored optimize time
|
|
* can be easily calculated.
|
|
* This enables new configured cooldowns to instantly apply instead of them being persistent.
|
|
*
|
|
* @param cooldown_millis The configured cooldown in milliseconds you want to check against.
|
|
* @return The time left in millis until the villager can be optimized again.
|
|
*/
|
|
long getOptimizeCooldownMillis(long cooldown_millis);
|
|
|
|
/**
|
|
* For convenience so the remaining millis since the last stored restock time
|
|
* can be easily calculated.
|
|
*
|
|
* @param cooldown_millis The configured cooldown in milliseconds you want to check against.
|
|
* @return True if the villager has been loaded long enough.
|
|
*/
|
|
boolean canRestock(long cooldown_millis);
|
|
|
|
/**
|
|
* Saves the time of when the entity was last restocked.
|
|
*/
|
|
void saveRestockTime();
|
|
|
|
/**
|
|
* For convenience so the remaining millis since the last stored restock time
|
|
* can be easily calculated.
|
|
* This enables new configured cooldowns to instantly apply instead of them being persistent.
|
|
*
|
|
* @param cooldown_millis The configured cooldown in milliseconds you want to check against.
|
|
* @return The time left in millis until the villager can be restocked again.
|
|
*/
|
|
long getRestockCooldownMillis(long cooldown_millis);
|
|
|
|
/**
|
|
* @param cooldown_millis The configured cooldown in milliseconds you want to check against.
|
|
* @return Whether the villager can be leveled up or not with the checked milliseconds
|
|
*/
|
|
boolean canLevelUp(long cooldown_millis);
|
|
|
|
/**
|
|
* Saves the time of the in-game world when the entity was last leveled up.
|
|
*/
|
|
void saveLastLevelUp();
|
|
|
|
/**
|
|
* Here for convenience so the remaining millis since the last stored level-up time
|
|
* can be easily calculated.
|
|
*
|
|
* @return The time of the in-game world when the entity was last leveled up.
|
|
*/
|
|
long getLevelCooldownMillis(long cooldown_millis);
|
|
}
|