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

BadActive

Kızıltaş Madencisi
En iyi cevaplar
0
Ö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
En iyi cevaplar
7
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
En iyi cevaplar
0
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
 

MineKing07

Demir Madencisi
En iyi cevaplar
0
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
En iyi cevaplar
0
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
En iyi cevaplar
0
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..
En iyi cevaplar
0
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
En iyi cevaplar
0
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