PlayerInteractEvent.java

 avatar
unknown
java
3 years ago
2.8 kB
2
Indexable
        @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);
        }
    }