private void registerBlock(Block block, RegisteredState newState) { if (block.getId() != UNKNOWN_ID) { logger.info("Registered Block {} with id {}", block, block.getId()); newState.blocksById.put(block.getId(), block); newState.idByUri.put(block.getURI(), block.getId()); } else { logger.info("Failed to register block {} - no id", block); } newState.blocksByUri.put(block.getURI(), block); }
@Override public Block setBlock(int x, int y, int z, Block block) { if (blockData == blockDataSnapshot) { blockData = blockData.copy(); } int oldValue = blockData.set(x, y, z, block.getId()); return blockManager.getBlock((short) oldValue); }
@Override public void onBlockChanged(Vector3i pos, Block newBlock, Block originalBlock) { Vector3i chunkPos = ChunkMath.calcChunkPos(pos); if (relevantChunks.contains(chunkPos)) { queuedOutgoingBlockChanges.add(NetData.BlockChangeMessage.newBuilder() .setPos(NetMessageUtil.convert(pos)) .setNewBlock(newBlock.getId()) .build()); } }
private void sendRegisteredBlocks(NetData.NetMessage.Builder message) { synchronized (newlyRegisteredFamilies) { for (BlockFamily family : newlyRegisteredFamilies) { NetData.BlockFamilyRegisteredMessage.Builder blockRegMessage = NetData.BlockFamilyRegisteredMessage.newBuilder(); for (Block block : family.getBlocks()) { blockRegMessage.addBlockUri(block.getURI().toString()); blockRegMessage.addBlockId(block.getId()); } message.addBlockFamilyRegistered(blockRegMessage); } newlyRegisteredFamilies.clear(); } }
private TShortObjectMap<TIntList> createBatchBlockEventMappings(Chunk chunk) { TShortObjectMap<TIntList> batchBlockMap = new TShortObjectHashMap<>(); blockManager.listRegisteredBlocks().stream().filter(Block::isLifecycleEventsRequired).forEach(block -> batchBlockMap.put(block.getId(), new TIntArrayList())); ChunkBlockIterator i = chunk.getBlockIterator(); while (i.next()) { if (i.getBlock().isLifecycleEventsRequired()) { TIntList positionList = batchBlockMap.get(i.getBlock().getId()); positionList.add(i.getBlockPos().x); positionList.add(i.getBlockPos().y); positionList.add(i.getBlockPos().z); } } return batchBlockMap; }