Her saniye configde eklediğim yerlerdeki blok değişecek nasıl ?

Krumb069

Nether Yerlisi
Mesajlar
2,151
En iyi cevaplar
1
Beğeniler
506
Puanları
1,250
Her saniye confige eklenmiş koordinatı belli blokların değişmesini istiyorum(aslında oradaki yünlerin renk değiştirmesini) bloğu confige x, y,z siyle eklemeyi yaptım ama nasıl bu blokları her saniye değiştirebilirim ? (Şimdiki kod altta)
Kod:
package com.rainbowsplus;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;


import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitScheduler;

public class Main extends JavaPlugin implements Listener{
    public static List<String> yunler = new ArrayList<String>();
    List<String> yunlist = this.getConfig().getStringList("Rainbow.Wools");
    HashMap<Player, String> kirmak = new HashMap<Player, String>();
    public static final Logger log = Logger.getLogger("Minecraft");
    public void onEnable() {  
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
        log.log(Level.INFO, "[Rainbows+]Plugin is activated!");
        BukkitScheduler scheduler1 = Bukkit.getServer().getScheduler();
        scheduler1.scheduleSyncRepeatingTask(this, new Runnable() {
            @Override
            public void run() {
                if (yunlist != null && yunlist.size() > 0){
                }
                }   
        }, 0L, 20L);
    }
    public void onDisable(){
        log.log(Level.INFO, "[Rainbows+]Plugin is deactivated!");
    }
    public boolean onCommand(CommandSender gonderen, Command komut, String label, String[] args){
        if (komut.getName().equalsIgnoreCase("rp") && ((gonderen instanceof Player))){
            Player o = (Player) gonderen;
            if ((o.hasPermission("rp.main")) && (args.length == 0)){
                 o.sendMessage("Usage:");
            }
            if ((o.hasPermission("rp.wool")) && (args.length == 1) && (args[0].equalsIgnoreCase("wool"))){
                if (!kirmak.isEmpty()) {
                     this.kirmak.clear();
                     o.sendMessage("Exited from wool add editor");
                }
                else {
                     this.kirmak.put(o, "kk1");
                     o.sendMessage("Entered wool add editor");
                }
            }       
        }
        return false;
    }
    @EventHandler
    public void blokkirilinca(BlockBreakEvent e){
        Player o = (Player) e.getPlayer();
        if (!kirmak.isEmpty()) {
            if (((String)this.kirmak.get(o)).equalsIgnoreCase("kk1")) {
                Block blok = e.getBlock();                
                Location yer = blok.getLocation();        
                int x = yer.getBlockX();
                int y = yer.getBlockY();
                int z = yer.getBlockZ();        
                String world = yer.getWorld().getName();             
                String blokyeri = world + ":" + x + ":" + y + ":" + z + ":";        
                yunlist.add(blokyeri);
                this.getConfig().set("Rainbow.Wools", yunlist);
                this.saveConfig();
                e.setCancelled(true);
            }
        }
    }
}
@GreenArrow @MegaCrafter @Javatist395
 


crafter_alperen

Kızıltaş Madencisi
Mesajlar
612
En iyi cevaplar
0
Beğeniler
128
Puanları
730
Ruh hali
Neden yapacaksin ve nasıl yapacaksin bilmiyorum. Skriptten de anlamiyorum. Ama cok lag yapar. Ne icin kullanacaksin merak ettim
 

MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
Task yapmışsın zaten. Configdeki yeri al. Orada yün varsa değiştir. Mobil olduğum için kodu yazamıyorum. Ben gelene kadar yazan çıkmazsa yazarım.
 

Krumb069

Nether Yerlisi
Mesajlar
2,151
En iyi cevaplar
1
Beğeniler
506
Puanları
1,250
Task yapmışsın zaten. Configdeki yeri al. Orada yün varsa değiştir. Mobil olduğum için kodu yazamıyorum. Ben gelene kadar yazan çıkmazsa yazarım.
Configde tek yer olsa alırım da liste olduğu için alamıyorum
Bu arada configim böyle (birkaç blok ekledim):
Kod:
Rainbow:
  Wools:
  - 'world:565:3:-768:'
  - 'world:565:3:-769:'
  - 'world:565:3:-770:'
  - 'world:563:3:-767:'
  - 'world:563:3:-766:'
 

MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
Configde tek yer olsa alırım da liste olduğu için alamıyorum
Bu arada configim böyle (birkaç blok ekledim):
Kod:
Rainbow:
  Wools:
  - 'world:565:3:-768:'
  - 'world:565:3:-769:'
  - 'world:565:3:-770:'
  - 'world:563:3:-767:'
  - 'world:563:3:-766:'
Foreach kullan?
for (String s : this.getConfig() vs. Yani. Tam olarak stringList çekme kodunu hatırlamıyorum. Sen bulursun kendin.
 

SFKY

Kızıltaş Madencisi
Mesajlar
667
En iyi cevaplar
0
Beğeniler
296
Puanları
0
bu iş konfig ile olacak iş değil o yüzden, LinkedList kullanmanı öneririm.
 

efe2002ozyay

Obsidyen Madencisi
Mesajlar
1,321
En iyi cevaplar
0
Beğeniler
547
Puanları
0
Güzel ama scriptççe
Hala benim gözdem COMMAND BLOCK
 

Krumb069

Nether Yerlisi
Mesajlar
2,151
En iyi cevaplar
1
Beğeniler
506
Puanları
1,250
Güzel ama scriptççe
Hala benim gözdem COMMAND BLOCK
scripttçe değil[DOUBLEPOST=1430338829,1430338715][/DOUBLEPOST]
bu iş konfig ile olacak iş değil o yüzden, LinkedList kullanmanı öneririm.
Nasıl olacağını bilmiyorum bir pluginde gördüğüm için config yapmıştım nasıl kullanacağım LinkedList'i ?
Not: Scoreboardlu birşeyse diğer scoreboard pluginlerini bozarmı ?
 
Son düzenleme:

Krumb069

Nether Yerlisi
Mesajlar
2,151
En iyi cevaplar
1
Beğeniler
506
Puanları
1,250
Linked List'i nasıl kullanırım configden tek bloğu alabiliyorum da tüm listeyi nasıl alacağım ?[DOUBLEPOST=1430417523,1430387763][/DOUBLEPOST]
Foreach kullan?
for (String s : this.getConfig() vs. Yani. Tam olarak stringList çekme kodunu hatırlamıyorum. Sen bulursun kendin.
java.lang.ClassCastException: java.util.ArrayList cannot be cast to org.bukkit.block.Block
 

SFKY

Kızıltaş Madencisi
Mesajlar
667
En iyi cevaplar
0
Beğeniler
296
Puanları
0
Tam olarak ne yapmak istiyorsan ?
ve bu işler böyle olmaz java bilmeden plugin yazmaya kalkışman, yürümeyi öğrenmeden koşmaya çalışıyorsun gibi :)
 

Krumb069

Nether Yerlisi
Mesajlar
2,151
En iyi cevaplar
1
Beğeniler
506
Puanları
1,250
ArrayList'in içinde 20 eleman var diyelim,bu 20 elemanı bir tane blok değişkeninin içine tepemezsin.
Bir değişken bir veri alır.
Enhanced loop yaparak bir arraylist'in içindeki verileri sırasıyla geçebilirsin
for(Block blk: arraylistesi){
//Bloklarla yapılacak işlemler.
}
Yaptım bloklarla ilgili bir arraylist eklemeyi ve sunucu kapanana kadar çalışıyor, ama kaydetme işini yapamadım
Kod:
Kod:
package com.rainbowsplus;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitScheduler;

public class Main extends JavaPlugin implements Listener{
    public static List<Block> yunler = new ArrayList<Block>();
    public static List<Location> yunyer = new ArrayList<Location>();
    List<String> yunlist = this.getConfig().getStringList("Rainbow.Wools");
    HashMap<Player, String> kirmak = new HashMap<Player, String>();
    public static final Logger log = Logger.getLogger("Minecraft");
    public void onEnable() {  
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
        log.log(Level.INFO, "[Rainbows+]Plugin is activated!");
        BukkitScheduler scheduler1 = Bukkit.getServer().getScheduler();
        scheduler1.scheduleSyncRepeatingTask(this, new Runnable() {
            @Override
            public void run() {
                if (yunlist != null && yunlist.size() > 0){
                    for(Block yun: yunler){
                        yun.setType(Material.WOOL);                       
                }
                }
                }   
        }, 0L, 20L);
    }
    public void onDisable(){
        log.log(Level.INFO, "[Rainbows+]Plugin is deactivated!");
    }
    public boolean onCommand(CommandSender gonderen, Command komut, String label, String[] args){
        if (komut.getName().equalsIgnoreCase("rp") && ((gonderen instanceof Player))){
            Player o = (Player) gonderen;
            if ((o.hasPermission("rp.main")) && (args.length == 0)){
                 o.sendMessage("Usage:");
            }
            if ((o.hasPermission("rp.wool")) && (args.length == 1) && (args[0].equalsIgnoreCase("wool"))){
                if (!kirmak.isEmpty()) {
                     this.kirmak.clear();
                     o.sendMessage("Exited from wool add editor");
                }
                else {
                     this.kirmak.put(o, "kk1");
                     o.sendMessage("Entered wool add editor");
                }
            }       
        }
        return false;
    }
    @EventHandler
    public void blokkirilinca(BlockBreakEvent e){
        Player o = (Player) e.getPlayer();
        if (!kirmak.isEmpty()) {
            if (((String)this.kirmak.get(o)).equalsIgnoreCase("kk1")) {
                Block blok = e.getBlock();                
                Location yer = blok.getLocation();        
                int x = yer.getBlockX();
                int y = yer.getBlockY();
                int z = yer.getBlockZ();        
                String world = yer.getWorld().getName();             
                String blokyeri = world + ":" + x + ":" + y + ":" + z + ":";        
                yunlist.add(blokyeri);
                yunler.add(blok);
                this.getConfig().set("Rainbow.Wools", yunlist);
                this.saveConfig();
                e.setCancelled(true);
                o.sendMessage("Block added.");
            }
        }
    }
}
 

Üst