xxxyiğit5250
Centipat
- Katılım
- 7 Mayıs 2022
- Mesajlar
- 3
Daha fazla
- Cinsiyet
- Erkek
Arkadaşlar kod bu. Nasıl düzeltirim bilemiyorum. Hata aldığım kısım:
Kod:
İmport net. Milkbowl. Vault. Economy. Economy;
İmport org. Bukkit. Bukkit;
İmport org. Bukkit. ChatColor;
İmport org. Bukkit. Material;
İmport org. Bukkit. Block. Block;
İmport org. Bukkit. Block. BlockState;
İmport org. Bukkit. Block. Sign;
İmport org. Bukkit.command.command;
İmport org. Bukkit.command.commandExecutor;
İmport org. Bukkit.command.commandSender;
İmport org. Bukkit. Entity. Player;
İmport org. Bukkit. Event. EventHandler;
İmport org. Bukkit. Event. Listener;
İmport org. Bukkit. Event. Block. Action;
İmport org. Bukkit. Event. Player. PlayerInteractEvent;
İmport org. Bukkit. Plugin. RegisteredServiceProvider;
İmport org. Bukkit. Plugin. Java. JavaPlugin;
İmport org. Bukkit. Scheduler. BukkitRunnable;
İmport net. Milkbowl. Vault. Economy. Economy;
İmport org. Bukkit. Bukkit;
İmport org. Bukkit. ChatColor;
İmport org. Bukkit. Material;
İmport org. Bukkit. Block. Block;
İmport org. Bukkit. Block. BlockState;
İmport org. Bukkit. Block. Sign;
İmport org. Bukkit.command.command;
İmport org. Bukkit.command.commandExecutor;
İmport org. Bukkit.command.commandSender;
İmport org. Bukkit. Entity. Player;
İmport org. Bukkit. Event. EventHandler;
İmport org. Bukkit. Event. Listener;
İmport org. Bukkit. Event. Block. Action;
İmport org. Bukkit. Event. Player. PlayerInteractEvent;
İmport org. Bukkit. Plugin. RegisteredServiceProvider;
İmport org. Bukkit. Plugin. Java. JavaPlugin;
İmport org. Bukkit. Scheduler. BukkitRunnable;
İmport Java. Util. HashMap;
İmport Java. Util. Map;
İmport Java. Util. Random;
Public class ATMSoymaPlugin extends JavaPlugin implements Listener, CommandExecutor {
Private Map<Block, Boolean> ATM'ler = New HashMap<>(); // ATM tabloları ve soyulma durumu depolamak için
Private Economy economy;
@Override
Public Void onEnable() {
İf (!setupEconomy()) {
getLogger().severe("Vault ve ekonomi eklentisi bulunamadı! Eklenti devre dışı bırakılıyor...");
getServer().getPluginManager().disablePlugin(this);
Return;
}
getServer().getPluginManager().registerEvents(this, this);
GetCommand("atmolustur").setExecutor(this);
GetCommand("atmsil").setExecutor(this);
// 2 dakika (1200 tick) aralıklarla ATM'leri kontrol eden zamanlayıcıyı başlat
startATMCheckTimer();
}
Private boolean setupEconomy() {
İf (getServer().getPluginManager().getPlugin("Vault") == null) {
Return false;
}
RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
İf (rsp == null) {
Return false;
}
Economy = rsp.getProvider();
Return economy!= null;
}
@Override
Public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage("Bu komut yalnızca oyuncular tarafından kullanılabilir!");
return true;
}
Player player = (Player) sender;
if (command.getName().equalsIgnoreCase("atmolustur")) {
// atmolustur komutu ile op'nin baktığı tabela atm olucak eğer baktığı tabela zaten bir atm ise şu uyarıyı alıcak: Bu zaten bir atm
Block targetBlock = player.getTargetBlock(null, 5);
if (targetBlock == null || targetBlock.getType() != Material.WALL_SIGN) {
player.sendMessage(ChatColor.RED + "Hedeflenen yer bir tabela değil!");
return true;
}
// Tabela oluşturulacak, işlemleri yapın ve atmler map'ine ekleyin.
if (atmler.containsKey(targetBlock)) {
player.sendMessage(ChatColor.RED + "Bu zaten bir ATM!");
return true;
}
// Tabela özelliklerini burada ayarlayın (ATM yazısı, durumu vs.)
BlockState blockState = targetBlock.getState();
if (blockState instanceof Sign) {
Sign sign = (Sign) blockState;
sign.setLine(0, "ATM");
sign.setLine(1, "[✔️]");
// Soyulma durumu başlangıçta false olarak işaretlenir.
ATM'ler. Put(targetBlock, false);
sign.update();
}
Return true;
} Else if (command.getName().equalsIgnoreCase("atmsil")) {
// Atmsil komutu ile Op'nin baktığı tabela ATM olmayacak eğer baktığı tabela zaten bir ATM değil ise şu uyarıyı alacak: Bu sadece bir tabela
Block targetBlock = Player. GetTargetBlock(null, 5);
İf (targetBlock == null || targetBlock.getType() != Material.WALL_SIGN) {
Player. SendMessage(ChatColor. RED + "Hedeflenen yer bir tabela değil!");
Return true;
}
// Tabela silinecek, işlemleri yapın ve ATM'ler Map'inden kaldırın.
İf (!ATM'ler. ContainsKey(targetBlock)) {
Player. SendMessage(ChatColor. RED + "Bu sadece bir tabela!");
Return true;
}
// ATM tablosunu kaldırın ve ATM'ler Map'inden çıkarın.
ATM'ler. Remove(targetBlock);
TargetBlock. SetType(Material. Air);
Return true;
}
Return false;
}
// Oyuncu ATM'ye tıklarsa yapılacaklar için Event handler
@EventHandler
Public Void onPlayerInteract(PlayerInteractEvent Event) {
Player Player = event.getPlayer();
İf (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
Block clickedBlock = event.getClickedBlock();
İf (clickedBlock.getType() == Material.WALL_SIGN && atmler.containsKey(clickedBlock)) {
// ATM tablosu tıklanırsa ve soyulmamışsa
İf (!ATM'ler. Get(clickedBlock)) {
// Soyulma işlemleri burada yapılacak
// Rastgele bir ödül miktarı belirleyin (50 ile 100 arasında)
Random random = New Random();
Double odulMiktari = 50 + random. NextInt(51); // 50 ile 100 arasında rastgele sayı
// Para ödülü verin
Economy. DepositPlayer(Player, odulMiktari);
// Başarılı soyulma durumu için mesaj verin ve soyulmuş olarak işaretle
ATM'ler. Put(clickedBlock, true);
Sign sign = (Sign) clickedBlock.getState();
Sign. SetLine(1, "[❌]");
sign.update();
Player. SendTitle(ChatColor. Green + "ATM", "Soyuluyor!", 10, 40, 10);
} Else {
Player. SendMessage(ChatColor. RED + "Bu ATM zaten soyulmuş!");
}
}
}
}
// Soyulmuş ATM'leri belirli aralıklarla kontrol ederek tekrar dolduran zamanlayıcıyı başlatır
Private Void startATMCheckTimer() {
BukkitRunnable task = New BukkitRunnable() {
@Override
Public Void run() {
For (Map. Entry<Block, Boolean> entry: atmler.entrySet()) {
Block atmBlock = entry.getKey();
Boolean isSoyulmus = entry.getValue();
// Eğer ATM soyulmuşsa ve belirli bir süre geçmişse tekrar doldur
İf (isSoyulmus) {
// ATM'i tekrar doldur (ATM yazısı ve durumu güncellenir)
BlockState blockState = atmBlock.getState();
İf (blockState instanceof Sign) {
Sign sign = (Sign) blockState;
Sign. SetLine(0, "ATM");
Sign. SetLine(1, "[✔️]");
sign.update();
}
// Soyulma durumunu sıfırla
ATM'ler. Put(atmBlock, false);
}
}
}
};
// 2 dakika (1200 tick) aralıklarla zamanlayıcıyı çalıştır
Task. RunTaskTimer(this, 0, 1200);
}
}