Interface BlockChangeFlag


  • public interface BlockChangeFlag
    A flag of sorts that determines whether a block change will perform various interactions, such as notifying neighboring blocks, performing block physics on placement, etc.
    • Method Detail

      • updateNeighbors

        boolean updateNeighbors()
        Gets whether this flag defines that a block change should notify neighboring blocks.
        Returns:
        True if this is set to notify neighboring blocks
      • notifyClients

        boolean notifyClients()
        Gets whether this flag defines that a block change should update clients to perform a rendering update
        Returns:
        True if this is set to update clients
      • performBlockPhysics

        boolean performBlockPhysics()
        Gets whether this flag defines that a block change should perform block physics checks or not. If not, no checks are performed.
        Returns:
        True if this is set to perform block physics on placement
      • updateNeighboringShapes

        boolean updateNeighboringShapes()
        Gets whether this flag will update observer blocks, different from notifying neighbors in that neighbor notifications can cause further block notification loops (like redstone), whereas this focuses on BlockTypes.OBSERVER blocks being told of updates.
        Returns:
        True if this is set to update observers.
      • updateLighting

        boolean updateLighting()
        Gets whether this flag will queue lighting updates, different blocks may affect lighting in locations, which can potentially cause other blocks to perform side effects due to the light changes (like mushrooms). It is not recommended to rely on this particular flag for any changes that can cause client-side lighting inconsistencies.
        Returns:
        True if this flag will update lighting
      • notifyPathfinding

        boolean notifyPathfinding()
        Gets whether this flag will notify pathfinders and navigators for AI on entities and potentially other entities of a block change. It may be helpful for mass block placement to bypass a notification of pathfinders within an area.
        Returns:
        True if this flag will update pathing
      • neighborDropsAllowed

        boolean neighborDropsAllowed()
        Gets whether this flag will allow blocks being destroyed as a result of updateNeighboringShapes() if the affected blocks could be considered "destroyed" and drop items.
        Returns:
        True if this flag will allow neighboring blocks to perform drops
      • movingBlocks

        boolean movingBlocks()
        Gets whether this flag is considering that blocks are being moved in the world, much like how pistons will move blocks. This has some effect on BlockEntity creation reaction or drop delays. The behaviors are dependent on the block in particular.
        Returns:
        True if the flag is considering blocks are moving
      • forceClientRerender

        boolean forceClientRerender()
        Gets whether this block change is going to request the client to re-render the block on chnge for the next client tick. This has particular usage when performing complicated block changes with extra steps, such as pistons performing a move.
        Returns:
        True if the blockchagne is requesting the client to re-render the change on the next tick
      • ignoreRender

        boolean ignoreRender()
        Gets whether the block change is requested to have no render update on the client. This is generally used only when notifyClients() is true as well as forceClientRerender() is false.
        Returns:
        True if the client is not to render te block change, usually accompanied later by a manual update after some ticks
      • withUpdateNeighbors

        BlockChangeFlag withUpdateNeighbors​(boolean updateNeighbors)
        Gets the equivalent BlockChangeFlag of this flag with all other flags while having the desired updateNeighbors as defined by the parameter.
        Parameters:
        updateNeighbors - Whether to update neighboring blocks
        Returns:
        The relative flag with the desired update neighbors
      • withNotifyClients

        BlockChangeFlag withNotifyClients​(boolean updateClients)
        Gets the equivalent BlockChangeFlag of this flag with all other flags while having the desired updateClients as defined by the parameter.
        Parameters:
        updateClients - Whether to update clients
        Returns:
        The relative flag with the desired update clients
      • withPhysics

        BlockChangeFlag withPhysics​(boolean performBlockPhysics)
        Gets the equivalent BlockChangeFlag of this flag with all other flags while having the desired performBlockPhysics as defined by the parameter.
        Parameters:
        performBlockPhysics - Whether to perform block physics
        Returns:
        The relative flag with the desired block physics
      • withNotifyObservers

        BlockChangeFlag withNotifyObservers​(boolean notifyObservers)
        Gets the equivalent BlockChangeFlag of this flag with all other flags while having the desired updateNeighboringShapes as defined by the parameter.
        Parameters:
        notifyObservers - Whether to update observer blocks
        Returns:
        The relative flag with the desired notify observers
      • withLightingUpdates

        BlockChangeFlag withLightingUpdates​(boolean lighting)
      • withPathfindingUpdates

        BlockChangeFlag withPathfindingUpdates​(boolean pathfindingUpdates)
      • withNeighborDropsAllowed

        BlockChangeFlag withNeighborDropsAllowed​(boolean dropsAllowed)
      • withIgnoreRender

        BlockChangeFlag withIgnoreRender​(boolean ignoreRender)
      • withForcedReRender

        BlockChangeFlag withForcedReRender​(boolean forcedReRender)
      • inverse

        BlockChangeFlag inverse()
        Gets the inverted BlockChangeFlag of this flag. Normally, this may cancel out certain interactions, such as physics, neighbor notifications, or even observer notifications. In certain circumstances, some flags may even require clients to rejoin the world or restart their connections to the server.
        Returns:
        The inverted flag
      • andFlag

        BlockChangeFlag andFlag​(BlockChangeFlag flag)
        Gets the equivalent BlockChangeFlag of this flag with the trues set for this flag and the provided flag, such that only if both flags have the same true flags set will persist.

        For example, if this flag has updateNeighboringShapes() and the incoming flag has updateNeighboringShapes() returning true, the resulting flag will have updateNeighboringShapes() return true as well. The inverse is also true. If either has differing flags for any of the above methods, the resulting flag will have a false value.

        Parameters:
        flag - The incoming flag to and with this flag
        Returns:
        The resulting flag with matched values
      • andNotFlag

        BlockChangeFlag andNotFlag​(BlockChangeFlag flag)
        Gets the equivalent BlockChangeFlag of this flag with the trues set for this flag and the provided flag, such that only if both flags have the same true flags set will persist.

        For example, if this flag has updateNeighboringShapes() and the incoming flag has updateNeighboringShapes() returning true, the resulting flag will have updateNeighboringShapes() return true as well. The inverse is also true. If either has differing flags for any of the above methods, the resulting flag will have a false value.

        Parameters:
        flag - The incoming flag to and with this flag
        Returns:
        The resulting flag with matched values