gpt4 book ai didi

java - 打破自定义 block

转载 作者:行者123 更新时间:2023-11-29 03:14:12 25 4
gpt4 key购买 nike

我正在尝试打破我在键入命令“/customblock”时收到的自定义 block

@EventHandler
public void onBlockBreak(BlockBreakEvent broke){




Player player = broke.getPlayer();
PlayerInventory inventory = broke.getPlayer().getInventory();
World world = player.getWorld();
Material block = broke.getBlock().getType();


if(block.equals(CustomBlock)){

player.sendMessage("Test");

}

忽略其他变量,如 World 和 PlayerInventory

所以...我收到了正确的 block ,但是当我破坏它时...什么都不做

最佳答案

什么是CustomBlock?它是变量还是类?2 件事:

  1. 一个 Block 只是一个位置,你不能序列化它,或者检查它是否等于另一个 block 。
  2. block.equals() 是原生Object 的 方法,不会被bukkit 覆盖。它只会检查一个对象是否等于另一个对象。

检查方 block 的最佳方法是您的“自定义方 block ”,即简单地记录每个自定义方 block 的位置,并检查该方 block 是否位于这些位置之一。例如:

public List<Location> customBlocks = new ArrayList<Location>();

//... in the block place event add the block's location to the list

@EventHandler
public void onBlockBreak(BlockBreakEvent broke){

Player player = broke.getPlayer();
PlayerInventory inventory = broke.getPlayer().getInventory();
World world = player.getWorld();
Material block = broke.getBlock().getType();


if(customBlocks.contains(block.getLocation())){
//custom block
block.setType(Material.AIR); //destroy the block
}

}

关于java - 打破自定义 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27596778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com