Centeglassered
Kızıltaş Madencisi
- En iyi cevaplar
- 0
Merhaba, uğraştığım bir eklentide amacım oyuncuların elmas çapa ile bir bloğa vurarak o bloğu ve onun altındaki 4 bloğu katman kayası veya boşluk yoksa kazması ve kazdığı bloğu düşürmesi. Fakat yalnızca vurduğum bloğun 4 blok altındaki bloğu kırıyor geri kalan 4 blok yerinde kalıyor ve kırılan blok düşmüyor. Biraz karmaşık ama koda bakınca anlarsınız sanırım.
Bana göre kod gereğinden fazla doğru ama çalışmıyor işte... Şimdiden teşekkürler!
[DOUBLEPOST=1421257634,1421257332][/DOUBLEPOST]Boş yere kullandığım 2 for döngüsünü kaldırıp içlerindeki kodları ilkinin içine koydum. Çalıştı.
Boş yere vaktinizi aldıysam özür dilerim! [DOUBLEPOST=1421258044][/DOUBLEPOST]Ayrıca şunu unutmuşum :
Kod:
package taskuredelici.centeglassered.main;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
public class PlayerListeners implements Listener {
@EventHandler
public void onLeftClick(PlayerInteractEvent event) {
Player player = event.getPlayer();
Inventory playerInv = player.getInventory();
Action action = event.getAction();
Material material = player.getItemInHand().getType();
if (material == Material.DIAMOND_HOE && action == Action.LEFT_CLICK_BLOCK) {
Block block = event.getClickedBlock();
Block drilledBlock[] = new Block[5];
Location blockLocation = block.getLocation();
Location drilledBlockLocation[] = new Location[5];
int count = 0;
for (int i = 0; i < 5; i++) {
if (i == 0) {
drilledBlockLocation[0] = blockLocation;
} else {
Location lastBlockLocation = drilledBlockLocation[i - 1];
double blockY = lastBlockLocation.getBlockY();
if (blockY == 1) {
drilledBlockLocation = drilledBlockLocation[i - 1];
player.sendMessage(ChatColor.RED + "Dünyanın altını kazamazsın!..");
} else {
lastBlockLocation.setY(blockY - 1);
drilledBlockLocation = lastBlockLocation;
}
}
}
for (int i = 0; i < 5; i++) {
drilledBlock = drilledBlockLocation.getBlock();
}
for (int i = 0; i < 5; i++) {
if (drilledBlock.getType() == Material.BEDROCK) {
player.sendMessage(ChatColor.RED + "Katman kayasını kazamazsın!..");
} else {
Material dropedItem = drilledBlock.getType();
drilledBlock.setType(Material.AIR);
count++;
playerInv.addItem(new ItemStack(dropedItem));
}
}
player.sendMessage(ChatColor.GREEN + "" + count +" blokluk yer kazıldı...");
}
}
}
Bana göre kod gereğinden fazla doğru ama çalışmıyor işte... Şimdiden teşekkürler!
Kod:
player.updateInventory();
Son düzenleme: