Java Minecraft plugin kodlama

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);

 }

}
 

Geri
Yukarı