safer and better logic
This commit is contained in:
parent
ff0ba445fd
commit
b5522121ba
@ -118,6 +118,10 @@ public final class WrappedVillager {
|
|||||||
return dataContainer.has(Keys.LAST_RESTOCK.key(), PersistentDataType.LONG) ? dataContainer.get(Keys.LAST_RESTOCK.key(), PersistentDataType.LONG) : 0L;
|
return dataContainer.has(Keys.LAST_RESTOCK.key(), PersistentDataType.LONG) ? dataContainer.get(Keys.LAST_RESTOCK.key(), PersistentDataType.LONG) : 0L;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getRestockCooldownMillis(final long cooldown_millis) {
|
||||||
|
return dataContainer.has(Keys.LAST_RESTOCK.key(), PersistentDataType.LONG) ? (villager.getWorld().getFullTime() - (dataContainer.get(Keys.LAST_RESTOCK.key(), PersistentDataType.LONG) + cooldown_millis)) : cooldown_millis;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return The level between 1-5 calculated from the villagers experience.
|
* @return The level between 1-5 calculated from the villagers experience.
|
||||||
*/
|
*/
|
||||||
@ -157,6 +161,6 @@ public final class WrappedVillager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public long getLevelCooldownMillis(final long cooldown_millis) {
|
public long getLevelCooldownMillis(final long cooldown_millis) {
|
||||||
return dataContainer.has(Keys.LAST_LEVELUP.key(), PersistentDataType.LONG) ? (villager.getWorld().getFullTime() - (dataContainer.get(Keys.LAST_OPTIMIZE.key(), PersistentDataType.LONG) + cooldown_millis)) : cooldown_millis;
|
return dataContainer.has(Keys.LAST_LEVELUP.key(), PersistentDataType.LONG) ? (villager.getWorld().getFullTime() - (dataContainer.get(Keys.LAST_LEVELUP.key(), PersistentDataType.LONG) + cooldown_millis)) : cooldown_millis;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,9 +110,9 @@ public class BlockOptimization implements VillagerOptimizerModule, Listener {
|
|||||||
wVillager.villager().shakeHead();
|
wVillager.villager().shakeHead();
|
||||||
if (shouldNotifyPlayer) {
|
if (shouldNotifyPlayer) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
final long optimizeCoolDown = wVillager.getOptimizeCooldownMillis(cooldown);
|
final String timeLeft = CommonUtils.formatTime(wVillager.getOptimizeCooldownMillis(cooldown));
|
||||||
VillagerOptimizer.getLang(player.locale()).block_on_optimize_cooldown.forEach(line -> player.sendMessage(line
|
VillagerOptimizer.getLang(player.locale()).block_on_optimize_cooldown.forEach(line -> player.sendMessage(line
|
||||||
.replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(CommonUtils.formatTime(optimizeCoolDown)).build())));
|
.replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(timeLeft).build())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -178,9 +178,9 @@ public class BlockOptimization implements VillagerOptimizerModule, Listener {
|
|||||||
wVillager.villager().shakeHead();
|
wVillager.villager().shakeHead();
|
||||||
if (shouldNotifyPlayer) {
|
if (shouldNotifyPlayer) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
final long optimizeCoolDown = wVillager.getOptimizeCooldownMillis(cooldown);
|
final String timeLeft = CommonUtils.formatTime(wVillager.getOptimizeCooldownMillis(cooldown));
|
||||||
VillagerOptimizer.getLang(player.locale()).block_on_optimize_cooldown.forEach(line -> player.sendMessage(line
|
VillagerOptimizer.getLang(player.locale()).block_on_optimize_cooldown.forEach(line -> player.sendMessage(line
|
||||||
.replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(CommonUtils.formatTime(optimizeCoolDown)).build()))
|
.replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(timeLeft).build()))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ package me.xginko.villageroptimizer.modules;
|
|||||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||||
import me.xginko.villageroptimizer.cache.VillagerManager;
|
import me.xginko.villageroptimizer.cache.VillagerManager;
|
||||||
import me.xginko.villageroptimizer.config.Config;
|
import me.xginko.villageroptimizer.config.Config;
|
||||||
import me.xginko.villageroptimizer.enums.OptimizationType;
|
|
||||||
import me.xginko.villageroptimizer.models.WrappedVillager;
|
import me.xginko.villageroptimizer.models.WrappedVillager;
|
||||||
import me.xginko.villageroptimizer.utils.CommonUtils;
|
import me.xginko.villageroptimizer.utils.CommonUtils;
|
||||||
import net.kyori.adventure.text.TextReplacementConfig;
|
import net.kyori.adventure.text.TextReplacementConfig;
|
||||||
@ -69,10 +68,9 @@ public class LevelVillagers implements VillagerOptimizerModule, Listener {
|
|||||||
&& wVillager.calculateLevel() > villager.getVillagerLevel()
|
&& wVillager.calculateLevel() > villager.getVillagerLevel()
|
||||||
) {
|
) {
|
||||||
villager.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, (int) (20 + (cooldown / 50L)), 120, false, false));
|
villager.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, (int) (20 + (cooldown / 50L)), 120, false, false));
|
||||||
final OptimizationType previousOptimization = wVillager.getOptimizationType();
|
villager.setAware(true);
|
||||||
wVillager.setOptimization(OptimizationType.OFF);
|
|
||||||
villager.getScheduler().runDelayed(plugin, reOptimize -> {
|
villager.getScheduler().runDelayed(plugin, reOptimize -> {
|
||||||
wVillager.setOptimization(previousOptimization);
|
villager.setAware(false);
|
||||||
wVillager.saveLastLevelUp();
|
wVillager.saveLastLevelUp();
|
||||||
}, null, 100L);
|
}, null, 100L);
|
||||||
}
|
}
|
||||||
@ -82,11 +80,14 @@ public class LevelVillagers implements VillagerOptimizerModule, Listener {
|
|||||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
private void onInteract(PlayerInteractEntityEvent event) {
|
private void onInteract(PlayerInteractEntityEvent event) {
|
||||||
if (!event.getRightClicked().getType().equals(EntityType.VILLAGER)) return;
|
if (!event.getRightClicked().getType().equals(EntityType.VILLAGER)) return;
|
||||||
|
|
||||||
WrappedVillager wVillager = villagerManager.getOrAdd((Villager) event.getRightClicked());
|
WrappedVillager wVillager = villagerManager.getOrAdd((Villager) event.getRightClicked());
|
||||||
|
|
||||||
if (wVillager.isOptimized() && !wVillager.canLevelUp(cooldown)) {
|
if (wVillager.isOptimized() && !wVillager.canLevelUp(cooldown)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
wVillager.villager().shakeHead();
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
String timeLeft = CommonUtils.formatTime(wVillager.getLevelCooldownMillis(cooldown));
|
final String timeLeft = CommonUtils.formatTime(wVillager.getLevelCooldownMillis(cooldown));
|
||||||
VillagerOptimizer.getLang(player.locale()).villager_leveling_up.forEach(line -> player.sendMessage(line
|
VillagerOptimizer.getLang(player.locale()).villager_leveling_up.forEach(line -> player.sendMessage(line
|
||||||
.replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(timeLeft).build())
|
.replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(timeLeft).build())
|
||||||
));
|
));
|
||||||
|
@ -62,8 +62,9 @@ public class RestockTrades implements VillagerOptimizerModule, Listener {
|
|||||||
wVillager.saveRestockTime();
|
wVillager.saveRestockTime();
|
||||||
if (notifyPlayer) {
|
if (notifyPlayer) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
final String timeLeft = CommonUtils.formatTime(wVillager.getRestockCooldownMillis(restock_delay_millis));
|
||||||
VillagerOptimizer.getLang(player.locale()).trades_restocked.forEach(line -> player.sendMessage(line
|
VillagerOptimizer.getLang(player.locale()).trades_restocked.forEach(line -> player.sendMessage(line
|
||||||
.replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(CommonUtils.formatTime(restock_delay_millis)).build()))
|
.replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(timeLeft).build()))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (shouldLog)
|
if (shouldLog)
|
||||||
|
@ -121,9 +121,9 @@ public class WorkstationOptimization implements VillagerOptimizerModule, Listene
|
|||||||
closestOptimizableVillager.villager().shakeHead();
|
closestOptimizableVillager.villager().shakeHead();
|
||||||
if (shouldNotifyPlayer) {
|
if (shouldNotifyPlayer) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
final long optimizeCoolDown = closestOptimizableVillager.getOptimizeCooldownMillis(cooldown);
|
final String timeLeft = CommonUtils.formatTime(closestOptimizableVillager.getOptimizeCooldownMillis(cooldown));
|
||||||
VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown.forEach(line -> player.sendMessage(line
|
VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown.forEach(line -> player.sendMessage(line
|
||||||
.replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(CommonUtils.formatTime(optimizeCoolDown)).build())
|
.replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(timeLeft).build())
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user