@SubscribeEvent
public void onPlayerInteract(PlayerInteractEvent.RightClickBlock event) {
EntityPlayer player = event.getEntityPlayer();
World world = event.getWorld();
ItemStack item = player.getHeldItem(event.getHand());
if (item == ItemStack.EMPTY || item.getItem() == Items.AIR)
return;
List<String> blocks = config.getStringList("blocks", "index");
if (blocks.isEmpty())
return;
ResourceLocation itemResource = Item.REGISTRY.getNameForObject(item.getItem());
if (itemResource == null || !blocks.contains(itemResource.toString()))
return;
Chunk chunk = world.getChunk(player.getPosition());
List<Block> check = Lists.newArrayList();
for (int x = 0; x < 16; x++) {
for (int z = 0; z < 16; z++) {
for (int y = 0; y < 257; y++) {
IBlockState blockState = chunk.getBlockState(chunk.getPos().getBlock(x, y, z));
Block block = blockState.getBlock();
if (blockState.getMaterial() == Material.AIR)
continue;
String name = "";
Item itemBlock = ItemRedstone.getItemFromBlock(block);
player.sendMessage(new TextComponentString("itemBlock: "
+ (itemBlock == Items.AIR ? "Air" : "No air")));
if (itemBlock == Items.AIR)
name = Block.REGISTRY.getNameForObject(block).toString();
else {
ResourceLocation resource = itemBlock.getRegistryName();
if (resource != null)
name = resource.toString();
}
player.sendMessage(new TextComponentString("Name: " + (name.isEmpty() ? "Null" : name)));
if (name.isEmpty())
continue;
if (blocks.contains(name) && itemResource.toString().equalsIgnoreCase(name))
check.add(block);
}
}
}
player.sendMessage(new TextComponentString("Collected blocks: " + check.size()));
if (check.isEmpty())
return;
int amount = config.getInt("blocks", "amount");
player.sendMessage(new TextComponentString("Amount: " + amount));
if (check.size() < amount)
return;
event.setCanceled(true);
}
}