Tweaked nearby player check for text buffer update sending.

Should ensure remote terminals work properly at max range (assuming server rack is chunk loaded).
This commit is contained in:
Florian Nücke 2014-11-21 12:29:32 +01:00
parent 43a734e110
commit aec5457739
3 changed files with 12 additions and 12 deletions

View File

@ -44,17 +44,17 @@ abstract class PacketBuilder(stream: OutputStream) extends DataOutputStream(stre
def sendToAllPlayers() = OpenComputers.channel.sendToAll(packet) def sendToAllPlayers() = OpenComputers.channel.sendToAll(packet)
def sendToPlayersNearTileEntity(t: TileEntity, range: Double = 1024): Unit = sendToNearbyPlayers(t.getWorldObj, t.xCoord + 0.5, t.yCoord + 0.5, t.zCoord + 0.5, range) def sendToPlayersNearTileEntity(t: TileEntity, range: Option[Double] = None): Unit = sendToNearbyPlayers(t.getWorldObj, t.xCoord + 0.5, t.yCoord + 0.5, t.zCoord + 0.5, range)
def sendToPlayersNearHost(host: EnvironmentHost, range: Double = 1024): Unit = sendToNearbyPlayers(host.world, host.xPosition, host.yPosition, host.zPosition, range) def sendToPlayersNearHost(host: EnvironmentHost, range: Option[Double] = None): Unit = sendToNearbyPlayers(host.world, host.xPosition, host.yPosition, host.zPosition, range)
def sendToNearbyPlayers(world: World, x: Double, y: Double, z: Double, range: Double) { def sendToNearbyPlayers(world: World, x: Double, y: Double, z: Double, range: Option[Double]) {
val dimension = world.provider.dimensionId val dimension = world.provider.dimensionId
val server = FMLCommonHandler.instance.getMinecraftServerInstance val server = FMLCommonHandler.instance.getMinecraftServerInstance
val manager = server.getConfigurationManager val manager = server.getConfigurationManager
for (player <- manager.playerEntityList.map(_.asInstanceOf[EntityPlayerMP]) if player.dimension == dimension) { for (player <- manager.playerEntityList.map(_.asInstanceOf[EntityPlayerMP]) if player.dimension == dimension) {
val playerRenderDistance = Int.MaxValue // ObfuscationReflectionHelper.getPrivateValue(classOf[EntityPlayerMP], player, "renderDistance").asInstanceOf[Integer] val playerRenderDistance = 16 // ObfuscationReflectionHelper.getPrivateValue(classOf[EntityPlayerMP], player, "renderDistance").asInstanceOf[Integer]
val playerSpecificRange = math.min(range, (manager.getViewDistance min playerRenderDistance) * 16) val playerSpecificRange = range.getOrElse((manager.getViewDistance min playerRenderDistance) * 16.0)
if (player.getDistanceSq(x, y, z) < playerSpecificRange * playerSpecificRange) { if (player.getDistanceSq(x, y, z) < playerSpecificRange * playerSpecificRange) {
sendToPlayer(player) sendToPlayer(player)
} }

View File

@ -119,7 +119,7 @@ class TextBuffer(val host: EnvironmentHost) extends prefab.ManagedEnvironment wi
} }
this.synchronized { this.synchronized {
_pendingCommands.foreach(_.sendToPlayersNearHost(host)) _pendingCommands.foreach(_.sendToPlayersNearHost(host, Option(Settings.get.maxWirelessRange * Settings.get.maxWirelessRange)))
_pendingCommands = None _pendingCommands = None
} }
} }

View File

@ -114,7 +114,7 @@ object PacketSender {
pb.writeDouble(event.getZ) pb.writeDouble(event.getZ)
} }
pb.sendToPlayersNearHost(host, 64) pb.sendToPlayersNearHost(host, Option(64))
} }
} }
} }
@ -266,7 +266,7 @@ object PacketSender {
pb.writeTileEntity(t.proxy) pb.writeTileEntity(t.proxy)
pb.writeInt(t.animationTicksTotal) pb.writeInt(t.animationTicksTotal)
pb.sendToPlayersNearTileEntity(t, 64) pb.sendToPlayersNearTileEntity(t, Option(64))
} }
def sendRobotAnimateTurn(t: tileentity.Robot) { def sendRobotAnimateTurn(t: tileentity.Robot) {
@ -276,7 +276,7 @@ object PacketSender {
pb.writeByte(t.turnAxis) pb.writeByte(t.turnAxis)
pb.writeInt(t.animationTicksTotal) pb.writeInt(t.animationTicksTotal)
pb.sendToPlayersNearTileEntity(t, 64) pb.sendToPlayersNearTileEntity(t, Option(64))
} }
def sendRobotInventory(t: tileentity.Robot, slot: Int, stack: ItemStack) { def sendRobotInventory(t: tileentity.Robot, slot: Int, stack: ItemStack) {
@ -295,7 +295,7 @@ object PacketSender {
pb.writeTileEntity(t.proxy) pb.writeTileEntity(t.proxy)
pb.writeInt(t.selectedSlot) pb.writeInt(t.selectedSlot)
pb.sendToPlayersNearTileEntity(t, 16) pb.sendToPlayersNearTileEntity(t, Option(16))
} }
def sendRotatableState(t: Rotatable) { def sendRotatableState(t: Rotatable) {
@ -313,7 +313,7 @@ object PacketSender {
pb.writeTileEntity(t) pb.writeTileEntity(t)
pb.sendToPlayersNearTileEntity(t, 64) pb.sendToPlayersNearTileEntity(t, Option(64))
} }
def appendTextBufferColorChange(pb: PacketBuilder, foreground: PackedColor.Color, background: PackedColor.Color) { def appendTextBufferColorChange(pb: PacketBuilder, foreground: PackedColor.Color, background: PackedColor.Color) {
@ -457,6 +457,6 @@ object PacketSender {
pb.writeShort(frequency.toShort) pb.writeShort(frequency.toShort)
pb.writeShort(duration.toShort) pb.writeShort(duration.toShort)
pb.sendToNearbyPlayers(world, x, y, z, 16) pb.sendToNearbyPlayers(world, x, y, z, Option(16))
} }
} }