Class FarmlandWaterManager

java.lang.Object
net.minecraftforge.common.FarmlandWaterManager

public class FarmlandWaterManager extends Object
  • Field Details

    • DEBUG

      private static final boolean DEBUG
    • customWaterHandler

      private static final Map<LevelReader,​Map<ChunkPos,​ChunkTicketManager<Vec3>>> customWaterHandler
    • LOGGER

      private static final org.apache.logging.log4j.Logger LOGGER
  • Constructor Details

    • FarmlandWaterManager

      public FarmlandWaterManager()
  • Method Details

    • addCustomTicket

      public static <T extends SimpleTicket<Vec3>> T addCustomTicket(Level world, T ticket, ChunkPos masterChunk, ChunkPos... additionalChunks)
      Adds a custom ticket. Use addAABBTicket(Level, AABB) if you just need a ticket that can water a certain area.
      If you don't want to water the region anymore, call SimpleTicket.invalidate(). Also call this when the region this is unloaded (e.g. your TE is unloaded or the block is removed), and validate once it is loaded
      Parameters:
      world - The world where the region should be marked. Only server-side worlds are allowed
      ticket - Your ticket you want to have registered
      masterChunk - The chunk pos that is controls when the ticket may be unloaded. The ticket should originate from here.
      additionalChunks - The chunks in that this ticket wants to operate as well.
      Returns:
      The ticket for your requested region.
    • addAABBTicket

      public static AABBTicket addAABBTicket(Level world, AABB aabb)
      Convenience method to add a ticket that is backed by an AABB.
      If you don't want to water the region anymore, call SimpleTicket.invalidate(). Also call this when the region this is unloaded (e.g. your TE is unloaded or the block is removed), and validate once it is loaded
      The AABB in the ticket is immutable
      Parameters:
      world - The world where the region should be marked. Only server-side worlds are allowed
      aabb - The region where blocks should be watered
      Returns:
      The ticket for your requested region.
    • getDistanceSq

      private static double getDistanceSq(ChunkPos pos, Vec3 vec3d)
    • hasBlockWaterTicket

      public static boolean hasBlockWaterTicket(LevelReader world, BlockPos pos)
      Tests if a block is in a region that is watered by blocks. This does not check vanilla water, see net.minecraft.world.level.block.FarmBlock#isNearWater(LevelReader, BlockPos)
      Returns:
      true if there is a ticket with an AABB that includes your block
    • removeTickets

      static void removeTickets(ChunkAccess chunk)
    • getTicketManager

      private static ChunkTicketManager<Vec3> getTicketManager(ChunkPos pos, LevelReader world)