コード例 #1
0
  @Override
  public void updateContainingBlockInfo() { // Allow data being sync on game loading
    worldObj.markBlockForUpdate(
        xCoord, yCoord, zCoord); // Makes the server call getDescriptionPacket for a full data sync
    markDirty();

    super.updateContainingBlockInfo();
  }
コード例 #2
0
  public boolean myChunkSBIDWMT(Chunk c, int x, int y, int z, int blockId, int blockMeta) {
    int j1 = z << 4 | x;

    if (y >= c.precipitationHeightMap[j1] - 1) {
      c.precipitationHeightMap[j1] = -999;
    }

    // int k1 = c.heightMap[j1];
    int l1 = c.getBlockID(x, y, z);
    int i2 = c.getBlockMetadata(x, y, z);

    if (l1 == blockId && i2 == blockMeta) {
      return false;
    } else {
      ExtendedBlockStorage[] storageArrays = c.getBlockStorageArray();
      ExtendedBlockStorage extendedblockstorage = storageArrays[y >> 4];

      if (extendedblockstorage == null) {
        if (blockId == 0) {
          return false;
        }

        extendedblockstorage =
            storageArrays[y >> 4] =
                new ExtendedBlockStorage(y >> 4 << 4, !c.worldObj.provider.hasNoSky);
      }

      int j2 = c.xPosition * 16 + x;
      int k2 = c.zPosition * 16 + z;
      extendedblockstorage.setExtBlockID(x, y & 15, z, blockId);

      if (l1 != 0) {
        if (!c.worldObj.isRemote) {
          Block.blocksList[l1].breakBlock(c.worldObj, j2, y, k2, l1, i2);
        } else if (Block.blocksList[l1] != null && Block.blocksList[l1].hasTileEntity(i2)) {
          TileEntity te = worldObj.getBlockTileEntity(j2, y, k2);

          if (te != null && te.shouldRefresh(l1, blockId, i2, blockMeta, worldObj, j2, y, k2)) {
            c.worldObj.removeBlockTileEntity(j2, y, k2);
          }
        }
      }

      if (extendedblockstorage.getExtBlockID(x, y & 15, z) != blockId) {
        return false;
      } else {
        extendedblockstorage.setExtBlockMetadata(x, y & 15, z, blockMeta);
        // Removed light recalculations
        /*if (flag)
        {
        	c.generateSkylightMap();
        }
        else
        {
        	if (c.getBlockLightOpacity(par1, par2, par3) > 0)
        	{
        		if (par2 >= k1)
        		{
        			c.relightBlock(par1, par2 + 1, par3);
        		}
        	}
        	else if (par2 == k1 - 1)
        	{
        		c.relightBlock(par1, par2, par3);
        	}

        	c.propagateSkylightOcclusion(par1, par3);
        }*/
        TileEntity tileentity;

        if (blockId != 0) {
          if (Block.blocksList[blockId] != null
              && Block.blocksList[blockId].hasTileEntity(blockMeta)) {
            tileentity = c.getChunkBlockTileEntity(x, y, z);

            if (tileentity == null) {
              tileentity = Block.blocksList[blockId].createTileEntity(c.worldObj, blockMeta);
              c.worldObj.setBlockTileEntity(j2, y, k2, tileentity);
            }

            if (tileentity != null) {
              tileentity.updateContainingBlockInfo();
              tileentity.blockMetadata = blockMeta;
            }
          }
        }

        c.isModified = true;
        return true;
      }
    }
  }
コード例 #3
0
 /**
  * Causes the TileEntity to reset all it's cached values for it's container block, blockID,
  * metaData and in the case of chests, the adjcacent chest check
  */
 public void updateContainingBlockInfo() {
   super.updateContainingBlockInfo();
   this.adjacentChestChecked = true;
 }
コード例 #4
0
 @Override
 public void updateContainingBlockInfo() {
   super.updateContainingBlockInfo();
   haveBlockBounds = false;
 }