[İSTEK] BLOK OLUŞTUĞUNDA....

darqanqel123

Zombi Katili
En iyi cevaplar
0
S.a Arkadaşlar Benim Bir İsteğim Olacaktı.
Bu İsteğimi Skriptle Yapmayı Denedim Olmuyor En Azından Eventi Çalışmıyor.
Benim İstediğim Şey Şu;
Cobblestone Oluştuğunda (Oyuncu Koyduğunda Değil Jeneratörden [Generator] Çıktığı Anda);
%60 İhtimalle Kömür Cevheri (Coal Ore)
%50 İhtimalle Demir Cevheri (Iron Ore)
%40 İhtimalle Lapis Cevheri (Lapis Lazuli Ore)
%30 İhtimalle Kızıltaş Cevheri (Redstone Ore)
%20 İhtimalle Altın Cevheri (Gold Ore)
%15 İhtimalle Zümrüt Cevheri (Emerald Ore)
%10 İhtimalle de Elmas Cevherine (Diamond Ore)
DÖNÜŞMESİNİ İstiyorum Ancak Bunun Ayarlanabilir Olması Lazım Yani Şansları Arttırıp Azaltmam Ve Yeni Boklar Eklemem Gerekebilir.
 

IRFN

Sonoyuncu.Network
En iyi cevaplar
0
Aşağıdaki kodu deneyebilirsin. İş yerinde olduğumdan hata var mı yok mu göremedim, importları yaparsın, ardından onEnable içerisindeki materialleri ayarlarsın, şu an hangi materialin adının ne olduğunu hatırlayamadım, özellikle lapis bloğunun.

PHP:
public class ChanceList<K> extends HashMap<K,Integer>{
    private int total;
    @Override
    public Integer put(K a, Integer b){
        Integer i=super.put(a,b);
        total=0;
        for(Integer in:values()){
            total+=in;
        }
        return i;
    }
    public K get(Random rand){
        if (total<=0)return null;
        int i=rand.nextInt(total);
        for(Entry<K,Integer> entry:entrySet()){
            i-=entry.getValue();
            if (i<0)return entry.getKey();
        }
        return null;
    }
}
PHP:
    public ChanceList<Material> blockList = new WeightedList<Material>();
   
    @Override
    public void onEnable(){
        //.....
        list.put(Material.COAL_IORE,6000);            // %60 ihtimal
        list.put(Material.IRON_ORE,5000);            // %50 ihtimal
        list.put(Material.LAPIS_LAZULI_ORE,4000);    // %40 ihtimal
        list.put(Material.REDSTONE_ORE,3000);        // %30 ihtimal
        list.put(Material.GOLD_ORE,2000);            // %20 ihtimal
        list.put(Material.EMERALD_ORE,1500);        // %15 ihtimal
        list.put(Material.DIAMOND_ORE,1000);        // %10 ihtimal
        //.....
    }


    @EventHandler
    public void onFromTo(BlockFromToEvent event)
    {
        int id = event.getBlock().getTypeId();
        if(id >= 8 && id <= 11)
        {
            Block b = event.getToBlock();
            int toid = b.getTypeId();
            if(toid == 0)
            {
                if(generatesCobble(id, b))
                {
                    b.setType(blockList.get(new Random()));
                }
            }
        }
    }
    private final BlockFace[] faces = new BlockFace[]
        {
            BlockFace.SELF,
            BlockFace.UP,
            BlockFace.DOWN,
            BlockFace.NORTH,
            BlockFace.EAST,
            BlockFace.SOUTH,
            BlockFace.WEST
        };
    public boolean generatesCobble(int id, Block b)
    {
        int mirrorID1 = (id == 8 || id == 9 ? 10 : 8);
        int mirrorID2 = (id == 8 || id == 9 ? 11 : 9);
        for(BlockFace face : faces)
        {
            Block r = b.getRelative(face, 1);
            if(r.getTypeId() == mirrorID1 || r.getTypeId() == mirrorID2)
            {
                return true;
            }
        }
        return false;
    }
 

darqanqel123

Zombi Katili
En iyi cevaplar
0
Aşağıdaki kodu deneyebilirsin. İş yerinde olduğumdan hata var mı yok mu göremedim, importları yaparsın, ardından onEnable içerisindeki materialleri ayarlarsın, şu an hangi materialin adının ne olduğunu hatırlayamadım, özellikle lapis bloğunun.

PHP:
public class ChanceList<K> extends HashMap<K,Integer>{
    private int total;
    @Override
    public Integer put(K a, Integer b){
        Integer i=super.put(a,b);
        total=0;
        for(Integer in:values()){
            total+=in;
        }
        return i;
    }
    public K get(Random rand){
        if (total<=0)return null;
        int i=rand.nextInt(total);
        for(Entry<K,Integer> entry:entrySet()){
            i-=entry.getValue();
            if (i<0)return entry.getKey();
        }
        return null;
    }
}
PHP:
    public ChanceList<Material> blockList = new WeightedList<Material>();
  
    @Override
    public void onEnable(){
        //.....
        list.put(Material.COAL_IORE,6000);            // %60 ihtimal
        list.put(Material.IRON_ORE,5000);            // %50 ihtimal
        list.put(Material.LAPIS_LAZULI_ORE,4000);    // %40 ihtimal
        list.put(Material.REDSTONE_ORE,3000);        // %30 ihtimal
        list.put(Material.GOLD_ORE,2000);            // %20 ihtimal
        list.put(Material.EMERALD_ORE,1500);        // %15 ihtimal
        list.put(Material.DIAMOND_ORE,1000);        // %10 ihtimal
        //.....
    }


    @EventHandler
    public void onFromTo(BlockFromToEvent event)
    {
        int id = event.getBlock().getTypeId();
        if(id >= 8 && id <= 11)
        {
            Block b = event.getToBlock();
            int toid = b.getTypeId();
            if(toid == 0)
            {
                if(generatesCobble(id, b))
                {
                    b.setType(blockList.get(new Random()));
                }
            }
        }
    }
    private final BlockFace[] faces = new BlockFace[]
        {
            BlockFace.SELF,
            BlockFace.UP,
            BlockFace.DOWN,
            BlockFace.NORTH,
            BlockFace.EAST,
            BlockFace.SOUTH,
            BlockFace.WEST
        };
    public boolean generatesCobble(int id, Block b)
    {
        int mirrorID1 = (id == 8 || id == 9 ? 10 : 8);
        int mirrorID2 = (id == 8 || id == 9 ? 11 : 9);
        for(BlockFace face : faces)
        {
            Block r = b.getRelative(face, 1);
            if(r.getTypeId() == mirrorID1 || r.getTypeId() == mirrorID2)
            {
                return true;
            }
        }
        return false;
    }
Kardeş Yazdığın İçin Teşekkürler Ancak Ben Javadan Hiç Anlamıyorum Yani Bu Kodun Ne İşe Yaradığını Bilmiyorum Bana Bir Bütün Halinde Yollayabilir misin ? Bende Javayı Öğrenmeyi Çok İstiyorum Ancak Yazın Başlayacam Öğrenmeye Şimdi Yazılılar Falan Var. Benim İçin Acelesi Çok Yok Ancak En Fazla Yarın Gece Hazır Olması Lazım. Bide Dediğim Gibi Config Dosyası Gibi Bir Şey Olursa Daha Sevinirim Ben Bu Kodu Java Haline Getirdikten Sonra Editlerim Ancak Arkadaşa Vereceğim O Pek Bilmiyor.
 
Üst