mockup plugin.yml and change villager leveler
This commit is contained in:
parent
641ea24211
commit
3f45bc51c0
@ -6,7 +6,6 @@ import me.xginko.villageroptimizer.config.Config;
|
||||
import me.xginko.villageroptimizer.models.WrappedVillager;
|
||||
import me.xginko.villageroptimizer.utils.CommonUtils;
|
||||
import net.kyori.adventure.text.TextReplacementConfig;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Villager;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@ -15,7 +14,6 @@ import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
@ -23,6 +21,7 @@ public class LevelVillagers implements VillagerOptimizerModule, Listener {
|
||||
|
||||
private final VillagerOptimizer plugin;
|
||||
private final VillagerManager villagerManager;
|
||||
private final boolean shouldNotify;
|
||||
private final long cooldown;
|
||||
|
||||
public LevelVillagers() {
|
||||
@ -34,9 +33,11 @@ public class LevelVillagers implements VillagerOptimizerModule, Listener {
|
||||
Temporarily enables the villagers AI to allow it to level up and then disables it again.
|
||||
""");
|
||||
this.cooldown = config.getInt("optimization.villager-leveling.level-check-cooldown-seconds", 5, """
|
||||
Cooldown in seconds the level of a villager will be checked and updated again. \s
|
||||
Cooldown in seconds until the level of a villager will be checked and updated again. \s
|
||||
Recommended to leave as is.
|
||||
""") * 1000L;
|
||||
this.shouldNotify = config.getBoolean("optimization.villager-leveling.notify-player", true,
|
||||
"Tell players to wait when a villager is leveling up.");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -62,35 +63,27 @@ public class LevelVillagers implements VillagerOptimizerModule, Listener {
|
||||
&& event.getInventory().getHolder() instanceof Villager villager
|
||||
) {
|
||||
WrappedVillager wVillager = villagerManager.getOrAdd(villager);
|
||||
if (
|
||||
wVillager.isOptimized()
|
||||
&& wVillager.canLevelUp(cooldown)
|
||||
&& wVillager.calculateLevel() > villager.getVillagerLevel()
|
||||
) {
|
||||
villager.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, (int) (20 + (cooldown / 50L)), 120, false, false));
|
||||
villager.getScheduler().run(VillagerOptimizer.getInstance(), enableAI -> villager.setAware(true), null);
|
||||
villager.getScheduler().runDelayed(plugin, disableAI -> {
|
||||
villager.setAware(false);
|
||||
wVillager.saveLastLevelUp();
|
||||
}, null, 100L);
|
||||
if (!wVillager.isOptimized()) return;
|
||||
|
||||
if (wVillager.canLevelUp(cooldown)) {
|
||||
if (wVillager.calculateLevel() > villager.getVillagerLevel()) {
|
||||
villager.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, (int) (20 + (cooldown / 50L)), 120, false, false));
|
||||
villager.getScheduler().run(plugin, enableAI -> villager.setAware(true), null);
|
||||
villager.getScheduler().runDelayed(plugin, disableAI -> {
|
||||
villager.setAware(false);
|
||||
wVillager.saveLastLevelUp();
|
||||
}, null, 100L);
|
||||
}
|
||||
} else {
|
||||
wVillager.villager().shakeHead();
|
||||
if (shouldNotify) {
|
||||
Player player = (Player) event.getPlayer();
|
||||
final String timeLeft = CommonUtils.formatTime(wVillager.getLevelCooldownMillis(cooldown));
|
||||
VillagerOptimizer.getLang(player.locale()).villager_leveling_up.forEach(line -> player.sendMessage(line
|
||||
.replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(timeLeft).build())
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||
private void onInteract(PlayerInteractEntityEvent event) {
|
||||
if (!event.getRightClicked().getType().equals(EntityType.VILLAGER)) return;
|
||||
|
||||
WrappedVillager wVillager = villagerManager.getOrAdd((Villager) event.getRightClicked());
|
||||
|
||||
if (wVillager.isOptimized() && !wVillager.canLevelUp(cooldown)) {
|
||||
event.setCancelled(true);
|
||||
wVillager.villager().shakeHead();
|
||||
Player player = event.getPlayer();
|
||||
final String timeLeft = CommonUtils.formatTime(wVillager.getLevelCooldownMillis(cooldown));
|
||||
VillagerOptimizer.getLang(player.locale()).villager_leveling_up.forEach(line -> player.sendMessage(line
|
||||
.replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(timeLeft).build())
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,27 @@
|
||||
name: VillagerOptimizer
|
||||
version: '${project.version}'
|
||||
main: me.xginko.villageroptimizer.VillagerOptimizer
|
||||
authors: [ xGinko ]
|
||||
description: ${project.description}
|
||||
website: ${project.url}
|
||||
api-version: '1.19'
|
||||
folia-supported: true
|
||||
folia-supported: true
|
||||
commands:
|
||||
villageroptimizer:
|
||||
usage: /villageroptimizer [ reload, version ]
|
||||
description: VillagerOptimizer admin commands
|
||||
optimizevillagers:
|
||||
usage: /optimizevillagers <blockradius>
|
||||
description: Optmize villagers in a radius around you
|
||||
unoptmizevillagers:
|
||||
usage: /unoptimizevillagers <blockradius>
|
||||
description: Unoptmize villagers in a radius around you
|
||||
permissions:
|
||||
villageroptimizer.*:
|
||||
description: Admin plugin permissions
|
||||
children:
|
||||
villageroptimizer.cmd.reload: true
|
||||
villageroptimizer.cmd.version: true
|
||||
villageroptimizer.cmd.optimize: true
|
||||
villageroptimizer.cmd.unoptimize: true
|
||||
villageroptimizer.cooldownbypass: true
|
Loading…
x
Reference in New Issue
Block a user