Merge branch 'master-MC1.7.10' of github.com:MightyPirates/OpenComputers into master-MC1.8

This commit is contained in:
Florian Nücke 2015-05-28 12:51:59 +02:00
commit 887b37dd54
9 changed files with 27 additions and 19 deletions

View File

@ -97,6 +97,9 @@ opencomputers {
# range of [0, 127], where 0 means mute (the sound will not even be
# generated), and 127 means maximum amplitude / volume.
beepVolume: 32
# The radius in which computer beeps can be heard.
beepRadius: 16
}
# Computer related settings, concerns server performance and security.

View File

@ -37,6 +37,7 @@ class Settings(val config: Config) {
val fontRenderer = config.getString("client.fontRenderer")
val beepSampleRate = config.getInt("client.beepSampleRate")
val beepAmplitude = config.getInt("client.beepVolume") max 0 min Byte.MaxValue
val beepRadius = config.getDouble("client.beepRadius").toFloat max 1 min 32
// ----------------------------------------------------------------------- //
// computer

View File

@ -586,7 +586,7 @@ object PacketSender {
pb.writeShort(frequency.toShort)
pb.writeShort(duration.toShort)
pb.sendToNearbyPlayers(world, x, y, z, Option(16))
pb.sendToNearbyPlayers(world, x, y, z, Option(32))
}
def sendSound(world: World, x: Double, y: Double, z: Double, pattern: String) {
@ -599,7 +599,7 @@ object PacketSender {
pb.writeInt(blockPos.z)
pb.writeUTF(pattern)
pb.sendToNearbyPlayers(world, x, y, z, Option(16))
pb.sendToNearbyPlayers(world, x, y, z, Option(32))
}
def sendWaypointLabel(t: Waypoint): Unit = {

View File

@ -70,7 +70,7 @@ trait Agent extends traits.WorldControl with traits.InventoryControl with traits
@Callback(doc = "function():string -- Get the name of the agent.")
def name(context: Context, args: Arguments): Array[AnyRef] = result(agent.name)
@Callback
@Callback(doc = "function(side:number[, face:number=side[, sneaky:boolean=false]]):boolean, string -- Perform a 'left click' towards the specified side. The `face' allows a more precise click calibration, and is relative to the targeted blockspace.")
def swing(context: Context, args: Arguments): Array[AnyRef] = {
// Swing the equipped tool (left click).
val facing = checkSideForAction(args, 0)
@ -154,7 +154,7 @@ trait Agent extends traits.WorldControl with traits.InventoryControl with traits
result(false, reason.orNull)
}
@Callback
@Callback(doc = "function(side:number[, face:number=side[, sneaky:boolean=false[, duration:number=0]]]):boolean, string -- Perform a 'right click' towards the specified side. The `face' allows a more precise click calibration, and is relative to the targeted blockspace.")
def use(context: Context, args: Arguments): Array[AnyRef] = {
val facing = checkSideForAction(args, 0)
val sides =
@ -233,7 +233,7 @@ trait Agent extends traits.WorldControl with traits.InventoryControl with traits
result(false)
}
@Callback
@Callback(doc = "function(side:number[, face:number=side[, sneaky:boolean=false]]):boolean -- Place a block towards the specified side. The `face' allows a more precise click calibration, and is relative to the targeted blockspace.")
def place(context: Context, args: Arguments): Array[AnyRef] = {
val facing = checkSideForAction(args, 0)
val sides =

View File

@ -12,7 +12,7 @@ import net.minecraft.item.ItemBlock
import net.minecraft.util.EnumFacing
trait InventoryWorldControl extends InventoryAware with WorldAware with SideRestricted {
@Callback
@Callback(doc = "function(side:number):boolean -- Compare the block on the specified side with the one in the selected slot. Returns true if equal.")
def compare(context: Context, args: Arguments): Array[AnyRef] = {
val side = checkSideForAction(args, 0)
stackInSlot(selectedSlot) match {
@ -30,7 +30,7 @@ trait InventoryWorldControl extends InventoryAware with WorldAware with SideRest
result(false)
}
@Callback
@Callback(doc = "function(side:number[, count:number=64]):boolean -- Drops items from the selected slot towards the specified side.")
def drop(context: Context, args: Arguments): Array[AnyRef] = {
val facing = checkSideForAction(args, 0)
val count = args.optionalItemCount(1)
@ -66,7 +66,7 @@ trait InventoryWorldControl extends InventoryAware with WorldAware with SideRest
else result(false)
}
@Callback
@Callback(doc = "function(side:number[, count:number=64]):boolean -- Suck up items from the specified side.")
def suck(context: Context, args: Arguments): Array[AnyRef] = {
val facing = checkSideForAction(args, 0)
val count = args.optionalItemCount(1)

View File

@ -7,10 +7,10 @@ import li.cil.oc.util.ExtendedArguments._
import li.cil.oc.util.ResultWrapper.result
trait TankControl extends TankAware {
@Callback
@Callback(doc = "function():number -- The number of tanks installed in the device.")
def tankCount(context: Context, args: Arguments): Array[AnyRef] = result(tank.tankCount)
@Callback
@Callback(doc = "function([index:number]):number -- Select a tank and/or get the number of the currently selected tank.")
def selectTank(context: Context, args: Arguments): Array[AnyRef] = {
if (args.count > 0 && args.checkAny(0) != null) {
selectedTank = args.checkTank(tank, 0)
@ -18,7 +18,7 @@ trait TankControl extends TankAware {
result(selectedTank + 1)
}
@Callback(direct = true)
@Callback(direct = true, doc = "function([index:number]):number -- Get the fluid amount in the specified or selected tank.")
def tankLevel(context: Context, args: Arguments): Array[AnyRef] = {
val index =
if (args.count > 0 && args.checkAny(0) != null) args.checkTank(tank, 0)
@ -29,7 +29,7 @@ trait TankControl extends TankAware {
})
}
@Callback(direct = true)
@Callback(direct = true, doc = "function([index:number]):number -- Get the remaining fluid capacity in the specified or selected tank.")
def tankSpace(context: Context, args: Arguments): Array[AnyRef] = {
val index =
if (args.count > 0 && args.checkAny(0) != null) args.checkTank(tank, 0)
@ -40,7 +40,7 @@ trait TankControl extends TankAware {
})
}
@Callback
@Callback(doc = "function(index:number):boolean -- Compares the fluids in the selected and the specified tank. Returns true if equal.")
def compareFluidTo(context: Context, args: Arguments): Array[AnyRef] = {
val index = args.checkTank(tank, 0)
result((fluidInTank(selectedTank), fluidInTank(index)) match {
@ -50,7 +50,7 @@ trait TankControl extends TankAware {
})
}
@Callback
@Callback(doc = "function(index:number[, count:number=1000]):boolean -- Move the specified amount of fluid from the selected tank into the specified tank.")
def transferFluidTo(context: Context, args: Arguments): Array[AnyRef] = {
val index = args.checkTank(tank, 0)
val count = args.optionalFluidCount(1)

View File

@ -14,7 +14,7 @@ import net.minecraftforge.fluids.IFluidBlock
import net.minecraftforge.fluids.IFluidHandler
trait TankWorldControl extends TankAware with WorldAware with SideRestricted {
@Callback
@Callback(doc = "function(side:number):boolean -- Compare the fluid in the selected tank with the fluid on the specified side. Returns true if equal.")
def compareFluid(context: Context, args: Arguments): Array[AnyRef] = {
val side = checkSideForAction(args, 0)
fluidInTank(selectedTank) match {
@ -33,7 +33,7 @@ trait TankWorldControl extends TankAware with WorldAware with SideRestricted {
}
}
@Callback
@Callback(doc = "function(side:boolean[, amount:number=1000]):boolean, number or string -- Drains the specified amount of fluid from the specified side. Returns the amount drained, or an error message.")
def drain(context: Context, args: Arguments): Array[AnyRef] = {
val facing = checkSideForAction(args, 0)
val count = args.optionalFluidCount(1)
@ -94,7 +94,7 @@ trait TankWorldControl extends TankAware with WorldAware with SideRestricted {
}
}
@Callback
@Callback(doc = "function(side:number[, amount:number=1000]):boolean, number of string -- Eject the specified amount of fluid to the specified side. Returns the amount ejected or an error message.")
def fill(context: Context, args: Arguments): Array[AnyRef] = {
val facing = checkSideForAction(args, 0)
val count = args.optionalFluidCount(1)

View File

@ -6,7 +6,7 @@ import li.cil.oc.api.machine.Context
import li.cil.oc.util.ResultWrapper.result
trait WorldControl extends WorldAware with SideRestricted {
@Callback
@Callback(doc = "function(side:number):boolean, string -- Checks the contents of the block on the specified sides and returns the findings.")
def detect(context: Context, args: Arguments): Array[AnyRef] = {
val side = checkSideForAction(args, 0)
val (something, what) = blockContent(side)

View File

@ -30,6 +30,8 @@ object Audio {
private def amplitude = Settings.get.beepAmplitude
private def maxDistance = Settings.get.beepRadius
private val sources = mutable.Set.empty[Source]
private def volume = Minecraft.getMinecraft.gameSettings.getSoundLevel(SoundCategory.BLOCKS)
@ -42,7 +44,7 @@ object Audio {
def play(x: Float, y: Float, z: Float, pattern: String, frequencyInHz: Int = 1000, durationInMilliseconds: Int = 200): Unit = {
val mc = Minecraft.getMinecraft
val distanceBasedGain = math.max(0, 1 - mc.thePlayer.getDistance(x, y, z) / 12).toFloat
val distanceBasedGain = math.max(0, 1 - mc.thePlayer.getDistance(x, y, z) / maxDistance).toFloat
val gain = distanceBasedGain * volume
if (gain <= 0 || amplitude <= 0) return
@ -142,6 +144,8 @@ object Audio {
checkALError()
AL10.alSource3f(source, AL10.AL_POSITION, x, y, z)
AL10.alSourcef(source, AL10.AL_REFERENCE_DISTANCE, maxDistance)
AL10.alSourcef(source, AL10.AL_MAX_DISTANCE, maxDistance)
AL10.alSourcef(source, AL10.AL_GAIN, gain * 0.3f)
checkALError()