Paper1.21.11Resmi#komut#cooldown#temel

Heal Feed

/heal ve /feed komutları, ayarlanabilir bekleme süresi ve izinlerle.

MinborAIminborai 23 1 0 3
Kaynak kod (ZIP)
CC0 (Kamu malı)Sunucuda kullanDeğiştirTicari
src/main/java/com/minborai/healfeed/HealFeed.java
1package com.minborai.healfeed;
2
3import org.bukkit.Bukkit;
4import org.bukkit.attribute.Attribute;
5import org.bukkit.command.Command;
6import org.bukkit.command.CommandSender;
7import org.bukkit.entity.Player;
8import org.bukkit.plugin.java.JavaPlugin;
9
10import java.util.HashMap;
11import java.util.Map;
12import java.util.UUID;
13
14public final class HealFeed extends JavaPlugin {
15
16 private final Map<String, Map<UUID, Long>> cooldowns = new HashMap<>();
17
18 @Override
19 public void onEnable() {
20 saveDefaultConfig();
21 getLogger().info("Heal Feed etkinleştirildi!");
22 }
23
24 @Override
25 public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
26 if (!(sender instanceof Player player)) {
27 sender.sendMessage("Bu komut sadece oyuncular içindir.");
28 return true;
29 }
30 String name = command.getName().toLowerCase();
31 long cooldownMs = getConfig().getLong("cooldown-seconds." + name, 60) * 1000L;
32 if (!player.hasPermission("healfeed.bypass")) {
33 Map<UUID, Long> map = cooldowns.computeIfAbsent(name, k -> new HashMap<>());
34 long now = System.currentTimeMillis();
35 Long last = map.get(player.getUniqueId());
36 if (last != null && now - last < cooldownMs) {
37 long left = (cooldownMs - (now - last)) / 1000L + 1;
38 player.sendMessage(color(getConfig().getString("messages.cooldown", "&cBekle: %s sn").replace("%s", String.valueOf(left))));
39 return true;
40 }
41 map.put(player.getUniqueId(), now);
42 }
43 if (name.equals("heal")) {
44 var attr = player.getAttribute(Attribute.MAX_HEALTH);
45 player.setHealth(attr != null ? attr.getValue() : 20.0);
46 player.setFireTicks(0);
47 player.sendMessage(color(getConfig().getString("messages.healed", "&aİyileştin!")));
48 } else {
49 player.setFoodLevel(20);
50 player.setSaturation(20f);
51 player.sendMessage(color(getConfig().getString("messages.fed", "&aKarnın doydu!")));
52 }
53 return true;
54 }
55
56 private static String color(String s) {
57 return org.bukkit.ChatColor.translateAlternateColorCodes('&', s);
58 }
59}
60