(ÇÖZÜLDÜ) [JAVA] Ağaç algılatma ?

BadActive

Kızıltaş Madencisi
Mesajlar
496
En iyi cevaplar
0
Beğeniler
165
Puanları
480
Ruh hali
Öncelikle merhaba, konu başlığından da anlaşılabileceği üzere sunucuda odun kırıldığı zaman kırılan blok'un ağaca bağlı olup olmadığını nasıl algılatabilirim ?
TreeAssist
vb. gibi eklentileri github üzerinden inceledim fakat pek bir şey çıkartamadım, Yardımlarınız için şimdiden teşekkür ederim.

KISACA:
'Eğer kırılan blok bir ağacın parçasıysa:'
 


Son düzenleme:

AlperKTS

Elmas Madencisi
Mesajlar
861
En iyi cevaplar
7
Beğeniler
139
Puanları
720
Ruh hali
Kodlarına Bakarak. Pek Bılgım Yok Ama Bunu Söyleyebilirim.

AL AGA :D

Kod:
package com.github.club559.Timber;

import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.event.block.BlockBreakEvent;

public class Timber extends org.bukkit.plugin.java.JavaPlugin
{
  public Timber() {}
 
  public void onEnable()
  {
    getConfig().options().copyDefaults(true);
    saveConfig();
    getLogger().info("Loaded config file");
    getServer().getPluginManager().registerEvents(new org.bukkit.event.Listener() {
      @org.bukkit.event.EventHandler
      public void timberIt(BlockBreakEvent event) {
        int ih = event.getPlayer().getItemInHand().getTypeId();
        World tw = event.getPlayer().getWorld();
        int x = event.getBlock().getX();
        int y = event.getBlock().getY();
        int z = event.getBlock().getZ();
        reloadConfig();
        if ((event.getBlock().getTypeId() == 17) && (getConfig().getIntegerList("timber-items").contains(Integer.valueOf(ih)))) {
          breakChain(tw, x, y, z);
        }
      }
    }, this);
  }
 
  private Integer gb(World world, int x, int y, int z) {
    return Integer.valueOf(world.getBlockTypeIdAt(x, y, z));
  }
 
  public void breakChain(World w, int x, int y, int z)
  {
    String t = getConfig().getString("timber-type");
    String ty; if ((t.equals("classic")) || (t.equals("classic-leaves")) || (t.equals("full")) || (t.equals("full-noleaves"))) {
      ty = t;
    } else {
      return;
    }
    String ty;
    w.getBlockAt(x, y, z).breakNaturally();
    if (gb(w, x, y + 1, z).intValue() == 17) {
      breakChain(w, x, y + 1, z);
    }
    if ((ty.equals("classic-leaves")) || (ty.equals("full"))) {
      if (gb(w, x, y + 1, z).intValue() == 18) {
        breakChain(w, x, y + 1, z);
      }
      if (gb(w, x, y - 1, z).intValue() == 18) {
        breakChain(w, x, y - 1, z);
      }
      if (gb(w, x + 1, y, z).intValue() == 18) {
        breakChain(w, x + 1, y, z);
      }
      if (gb(w, x - 1, y, z).intValue() == 18) {
        breakChain(w, x - 1, y, z);
      }
      if (gb(w, x, y, z + 1).intValue() == 18) {
        breakChain(w, x, y, z + 1);
      }
      if (gb(w, x, y, z - 1).intValue() == 18) {
        breakChain(w, x, y, z - 1);
      }
    }
    if ((ty.equals("full")) || (ty.equals("full-noleaves"))) {
      if (gb(w, x, y - 1, z).intValue() == 17) {
        breakChain(w, x, y - 1, z);
      }
      if (gb(w, x + 1, y, z).intValue() == 17) {
        breakChain(w, x + 1, y, z);
      }
      if (gb(w, x - 1, y, z).intValue() == 17) {
        breakChain(w, x - 1, y, z);
      }
      if (gb(w, x, y, z + 1).intValue() == 17) {
        breakChain(w, x, y, z + 1);
      }
      if (gb(w, x, y, z - 1).intValue() == 17) {
        breakChain(w, x, y, z - 1);
      }
    }
  }
}

Timber Pluginin Kodları.
 

BadActive

Kızıltaş Madencisi
Mesajlar
496
En iyi cevaplar
0
Beğeniler
165
Puanları
480
Ruh hali
Kodlarına Bakarak. Pek Bılgım Yok Ama Bunu Söyleyebilirim.

AL AGA :D

Kod:
package com.github.club559.Timber;

import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.event.block.BlockBreakEvent;

public class Timber extends org.bukkit.plugin.java.JavaPlugin
{
  public Timber() {}
 
  public void onEnable()
  {
    getConfig().options().copyDefaults(true);
    saveConfig();
    getLogger().info("Loaded config file");
    getServer().getPluginManager().registerEvents(new org.bukkit.event.Listener() {
      @org.bukkit.event.EventHandler
      public void timberIt(BlockBreakEvent event) {
        int ih = event.getPlayer().getItemInHand().getTypeId();
        World tw = event.getPlayer().getWorld();
        int x = event.getBlock().getX();
        int y = event.getBlock().getY();
        int z = event.getBlock().getZ();
        reloadConfig();
        if ((event.getBlock().getTypeId() == 17) && (getConfig().getIntegerList("timber-items").contains(Integer.valueOf(ih)))) {
          breakChain(tw, x, y, z);
        }
      }
    }, this);
  }
 
  private Integer gb(World world, int x, int y, int z) {
    return Integer.valueOf(world.getBlockTypeIdAt(x, y, z));
  }
 
  public void breakChain(World w, int x, int y, int z)
  {
    String t = getConfig().getString("timber-type");
    String ty; if ((t.equals("classic")) || (t.equals("classic-leaves")) || (t.equals("full")) || (t.equals("full-noleaves"))) {
      ty = t;
    } else {
      return;
    }
    String ty;
    w.getBlockAt(x, y, z).breakNaturally();
    if (gb(w, x, y + 1, z).intValue() == 17) {
      breakChain(w, x, y + 1, z);
    }
    if ((ty.equals("classic-leaves")) || (ty.equals("full"))) {
      if (gb(w, x, y + 1, z).intValue() == 18) {
        breakChain(w, x, y + 1, z);
      }
      if (gb(w, x, y - 1, z).intValue() == 18) {
        breakChain(w, x, y - 1, z);
      }
      if (gb(w, x + 1, y, z).intValue() == 18) {
        breakChain(w, x + 1, y, z);
      }
      if (gb(w, x - 1, y, z).intValue() == 18) {
        breakChain(w, x - 1, y, z);
      }
      if (gb(w, x, y, z + 1).intValue() == 18) {
        breakChain(w, x, y, z + 1);
      }
      if (gb(w, x, y, z - 1).intValue() == 18) {
        breakChain(w, x, y, z - 1);
      }
    }
    if ((ty.equals("full")) || (ty.equals("full-noleaves"))) {
      if (gb(w, x, y - 1, z).intValue() == 17) {
        breakChain(w, x, y - 1, z);
      }
      if (gb(w, x + 1, y, z).intValue() == 17) {
        breakChain(w, x + 1, y, z);
      }
      if (gb(w, x - 1, y, z).intValue() == 17) {
        breakChain(w, x - 1, y, z);
      }
      if (gb(w, x, y, z + 1).intValue() == 17) {
        breakChain(w, x, y, z + 1);
      }
      if (gb(w, x, y, z - 1).intValue() == 17) {
        breakChain(w, x, y, z - 1);
      }
    }
  }
}
Kodlara bende baktım zaten ama ben blokların kırılmasını falan istemiyorum amacım o değil sadece ağaç mı ? yoksa değil mi ? birçok class'ı var ordan oraya gönderiyor kafam karıştı :D
 

AlperKTS

Elmas Madencisi
Mesajlar
861
En iyi cevaplar
7
Beğeniler
139
Puanları
720
Ruh hali
Kodlara bende baktım zaten ama ben blokların kırılmasını falan istemiyorum amacım o değil sadece ağaç mı ? yoksa değil mi ? birçok class'ı var ordan oraya gönderiyor kafam karıştı :D
Aga Sen Ne Yapmak Istiyosun ?
 

BadActive

Kızıltaş Madencisi
Mesajlar
496
En iyi cevaplar
0
Beğeniler
165
Puanları
480
Ruh hali
Aga Sen Ne Yapmak Istiyosun ?
şu an açık kaynak kodlu bir eklenti paylaşacağım ama son olarak bir ek yapmak istiyorum, bu paylaşacağım eklenti bloklar ile ilgili ve ekleyeceğim şey kısaca 'Eğer kırılan blok bir ağacın parçasıysa:' ihtiyacım olan bu.
 

MineKing07

Demir Madencisi
Mesajlar
332
En iyi cevaplar
0
Beğeniler
121
Puanları
340
Galiba böyle bir şey yapılması mümkün değil yapılsa bile iyi bir pluginerci lazım skriptle yapılmaz bence.
 

GodofMilker

Nether Yerlisi
Mesajlar
2,196
En iyi cevaplar
0
Beğeniler
2,562
Puanları
6,790
skript i ezdirtmez öyle biri

arkadaş yorumda kodları atmış gayet anlaşılır kırdığı bloğun yukarsını sağını solunu taratıyor ve log ve leaves var mı onu kontrol ediyor bu kadar
Aslında bu bir ağaç olmasa da yer ve yaprakları yanlara uzatırsanız bozar, tek bir ağaç şekli olduğu için çalışıyor o
 

BadActive

Kızıltaş Madencisi
Mesajlar
496
En iyi cevaplar
0
Beğeniler
165
Puanları
480
Ruh hali
Skriptle yapılabilir dostlar.

skript i ezdirtmez öyle biri

arkadaş yorumda kodları atmış gayet anlaşılır kırdığı bloğun yukarsını sağını solunu taratıyor ve log ve leaves var mı onu kontrol ediyor bu kadar

Aslında bu bir ağaç olmasa da yer ve yaprakları yanlara uzatırsanız bozar, tek bir ağaç şekli olduğu için çalışıyor o
Yani sadece ağacın şeklini kontrol ederek yapabileceğim bir şey, Yorum yapan yardım etmeye çalışan herkese teşekkür ederim !
Konu kilit, Sonuç olarak; Ağacın şekillerine göre kontrol ettirmelisiniz.
 

MrPoteyto

Is the excellence? Ok..
Mesajlar
226
En iyi cevaplar
0
Beğeniler
80
Puanları
180
Kolay dostum.

public void agacKirdiginda(BlockBreakEvent e)

Player o = e.getPlayer();
Block b = e.getBlock();
Material m = b.getType();

if(m == Material.OAK_LOG){
o.sendMessage("Blok algılandı: Bu bir meşe ağacı kütüğü!");
}
 
Son düzenleme:

Onurbey034

Zombi Katili
Mesajlar
153
En iyi cevaplar
0
Beğeniler
35
Puanları
140
Arkadaş konu kilit yazmış genede belki isteyenler için yapmak istedim sizde böyle bir şey yapacaksanız odunun üzerinde 3x3 lük bir leaves taratın
 

Üst