mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-08-03 19:17:27 -04:00
Merge remote-tracking branch 'origin/OC1.7-MC1.7.10' into OC1.7-MC1.12
This commit is contained in:
commit
5413028d6a
@ -5,7 +5,7 @@ forge.version=14.23.5.2860
|
||||
|
||||
mod.name=OpenComputers
|
||||
mod.group=li.cil.oc
|
||||
mod.version=1.7.6
|
||||
mod.version=1.7.7
|
||||
|
||||
ae2.version=rv6-stable-7
|
||||
buildcraft.version=7.99.24.8
|
||||
|
92
changelog.md
92
changelog.md
@ -1,89 +1,19 @@
|
||||
## New Features/Support
|
||||
|
||||
* Added: Access to waypoint address UUIDs in the Navigation Upgrade. (hohserg1)
|
||||
* Added: [#779] Graphics Card video RAM system.
|
||||
- Graphics Cards now have multiple internal video RAM buffers, which can be allocated and freed.
|
||||
- Reads and writes to Video RAM have zero costs.
|
||||
- Writing to the text buffer outside of the viewport now has zero costs.
|
||||
* Added: More complete Unicode support!
|
||||
- Unscii has been upgraded to version 2.1 (with funscii patches).
|
||||
- Unifont 14.0.04 can now be used to fill in missing glyphs, thanks to the license change.
|
||||
- The above mean that OpenComputers now supports the near-complete Unicode Basic Multilingual Plane.
|
||||
* Added: More Upgrades now have a descriptive tooltip.
|
||||
* Added: New mod integrations:
|
||||
- GregTech: Seismic Prospector data reading. (repo-alt)
|
||||
- Thaumic Energistics: Distillation pattern aspect information. (repo-alt)
|
||||
* Changed: Block 0.0.0.0/8 from internet card by default. (divergentdave)
|
||||
* Changed: Game logs now contain the dimension when reporting a machine's position. (D-Cysteine, repo-alt)
|
||||
* Changed: Make Lua BIOS take use tail call optimisation. (skyem123)
|
||||
* Changed: [#3440] 'media()' is now implemented on Server disk drives.
|
||||
* Changed: Motion Sensor now considers both feet and eyes when checking for the visibility of an entity.
|
||||
* Changed: The default CPU architecture is now Lua 5.3.
|
||||
* Changed: When creating a new Rack, the "Relay Mode" is now disabled by default.
|
||||
* Misc: Updated the following translations:
|
||||
- Chinese (Low-power)
|
||||
- German (JakobDev)
|
||||
- Portuguese (guilherme-puida)
|
||||
- Russian (Fingercomp, Smollet777)
|
||||
* (1.7.10) Fixed: AE2 filtering by keys which are not always present.
|
||||
* Fixed: AE2 item stack sizes larger than 2^31-1.
|
||||
* Fixed: Barcode Reader upgrade crash when scanning anything that is not a valid target. (AmandaCameron)
|
||||
* Fixed: [#3509] ByteBufInputStream memory leak.
|
||||
* Fixed: [#3187] Crash with CodeChickenLib and IC2 installed.
|
||||
* Fixed: [#3247] Disassembler accepted whole stack via direct inventory access.
|
||||
* Fixed: [#3254] Edge case issues with Hologram copy().
|
||||
* Fixed: [#2999, #3225] Edge case issues with deleting computer/robot persistence data.
|
||||
* (1.12.2) Fixed: Ender IO/Project: Red wrench compatibility.
|
||||
* Fixed: [#3159] Error when calling 'debug.sendToDebugCard()'.
|
||||
* Fixed: [#3494] Errors when using block GUIs on larger/negative Y values (f.e. with Cubic Chunks).
|
||||
* Fixed: [#3391] Generator upgrade destroys fuel containers.
|
||||
* Fixed: Inconsistent 3D print item stacking (Quant1um).
|
||||
* Fixed: [#2911] Inconsistent values used by getGameType() and setGameType() in Debug Card.
|
||||
* (1.12.2) Fixed: [#3472] Incorrect 3D print lighting.
|
||||
* Fixed: [#3226] Incorrect Hard Drive reported maximum stack size when formatted.
|
||||
* Fixed: [#3084] Incorrect parsing of the 'maxSignalQueueSize' configuration option.
|
||||
* Fixed: [#3184] Incorrect redstone card sides inside racks and computers.
|
||||
* Fixed: [#3182] Incorrect reporting of entity inventory names in Transposer, plus other Transposer interaction issues.
|
||||
* Fixed: Missing null check for Blood Magic integration.
|
||||
* Fixed: [#3336] Missing null check for GregTech data stick NBTs.
|
||||
* Fixed: [#3249] NullPointerException when remote terminal is missing.
|
||||
* Fixed: Potential edge case crash with the Tank Controller Upgrade.
|
||||
* Fixed: [#3401] 'rawSetForeground', 'rawSetBackground' not working correctly.
|
||||
* Fixed: [#3265] Relay 'setStrength' unlimited upper bound. (JamesOrdner)
|
||||
* (1.7.10) Fixed: [#3540] Server-side crash with Motion Sensor
|
||||
* Fixed: [#1999] 'string.gsub' patterns now allow numbers.
|
||||
* Fixed: [#3195] Tier 1 Wireless Cards not receiving messages.
|
||||
* (1.7.10) Fixed: [#3239] Unnecessary/unwanted canEntityDestroy check in OpenComputers fake player.
|
||||
* Fixed: Update issues in the Floppy Drive GUI.
|
||||
* Fixed: Adjusted version check to support the newer GitHub tag format.
|
||||
* Fixed: [#2883] Allowing any domain through if a whitelisted domain failed to resolve.
|
||||
* (1.12.2) Fixed: Block/item color regression (introduced in OpenComputers 1.7.6).
|
||||
* Fixed: [#3547] Character glyph regressions (introduced in OpenComputers 1.7.6).
|
||||
* Fixed: [#3004] Incorrect damage/metadata values on Cable items.
|
||||
* (1.12.2) Fixed: [#3546] Incorrect version number reported by mod.
|
||||
* (1.12.2) Fixed: Reflection call regression (introduced in OpenComputers 1.7.6).
|
||||
* (1.12.2) Fixed: [#2902] Thread race condition crash when rendering some blocks.
|
||||
|
||||
## OpenOS fixes/improvements
|
||||
|
||||
* Changed: Added binary support to 'text.internal.reader'.
|
||||
* Changed: Errors are now passed back to 'shell.execute'.
|
||||
* Changed: 'install' no longer clobbers '/etc/rc.cfg' nor '/home/.shrc'.
|
||||
* Changed: If /home is read-only, a helpful message is displayed to tell the user to run 'install'.
|
||||
* Changed: Removed '-i' from 'cp' alias.
|
||||
* Changed: [#3320] VT ABCD should move 1 character by default.
|
||||
* Changed: [#3305] 'wget' now passes a default user agent.
|
||||
* Fixed: [#3423] Can't yield from an orphan coroutine.
|
||||
* Fixed: Crash when calling 'tty.setViewport' without arguments.
|
||||
* Fixed: [#3499] 'edit' crashing once clicking somewhere.
|
||||
* Fixed: [#3196] Env pass in 'sh' command.
|
||||
* Fixed: [#3201] 'io.input' implementation inconsistency.
|
||||
* Fixed: [#1207] I/O buffer reading splitting UTF-8 sequences.
|
||||
* Fixed: Minor issues in the OpenOS manpage for 'ls'. (avevad)
|
||||
* Fixed: [#3308] Out of memory error isn't reported in the shell in certain conditions.
|
||||
* Fixed: Shift+Backspace handling in '/bin/edit'.
|
||||
* Numerous small improvements to the codebase.
|
||||
* Fixed: /bin/edit not working on Lua 5.2 (introduced in OpenOS 1.7.6).
|
||||
* Fixed: Reverted "[#3196] Env pass in 'sh' command." due to a regression.
|
||||
|
||||
## List of contributors
|
||||
|
||||
payonel, asie,
|
||||
AmandaCameron, avevad,
|
||||
D-Cysteine,
|
||||
divergentdave, hohserg1,
|
||||
JamesOrdner, repo-alt,
|
||||
Fingercomp, guilherme-puida,
|
||||
JakobDev, Low-power,
|
||||
Quant1um, skyem123,
|
||||
Smollet777
|
||||
payonel, asie
|
||||
|
@ -1 +1 @@
|
||||
rootProject.name = "OpenComputers"
|
||||
rootProject.name = "opencomputers-1.12.2-forge"
|
||||
|
@ -41,5 +41,5 @@ if #args == 0 then
|
||||
end
|
||||
else
|
||||
-- execute command.
|
||||
return sh.execute(_ENV, ...)
|
||||
return sh.execute(...)
|
||||
end
|
||||
|
@ -1,7 +1,7 @@
|
||||
-- called from /init.lua
|
||||
local raw_loadfile = ...
|
||||
|
||||
_G._OSVERSION = "OpenOS 1.7.6"
|
||||
_G._OSVERSION = "OpenOS 1.7.7"
|
||||
|
||||
-- luacheck: globals component computer unicode _OSVERSION
|
||||
local component = component
|
||||
|
@ -10,8 +10,8 @@ function shell.execute(command, env, ...)
|
||||
if not sh then
|
||||
return false, reason
|
||||
end
|
||||
local proc = process.load(sh, env, nil, command)
|
||||
local result = table.pack(process.internal.continue(proc, command, ...))
|
||||
local proc = process.load(sh, nil, nil, command)
|
||||
local result = table.pack(process.internal.continue(proc, env, command, ...))
|
||||
if result.n == 0 then return true end
|
||||
return table.unpack(result, 1, result.n)
|
||||
end
|
||||
|
@ -21,6 +21,8 @@ object OpenComputers {
|
||||
|
||||
final val Name = "OpenComputers"
|
||||
|
||||
final val McVersion = "1.12.2-forge"
|
||||
|
||||
final val Version = "@VERSION@"
|
||||
|
||||
def log: Logger = logger.getOrElse(LogManager.getLogger(Name))
|
||||
|
@ -598,25 +598,25 @@ object Settings {
|
||||
val cidrPattern = """(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?:/(\d{1,2}))""".r
|
||||
|
||||
class AddressValidator(val value: String) {
|
||||
val validator = try cidrPattern.findFirstIn(value) match {
|
||||
val validator: (InetAddress, String) => Option[Boolean] = try cidrPattern.findFirstIn(value) match {
|
||||
case Some(cidrPattern(address, prefix)) =>
|
||||
val addr = InetAddresses.coerceToInteger(InetAddresses.forString(address))
|
||||
val mask = 0xFFFFFFFF << (32 - prefix.toInt)
|
||||
val min = addr & mask
|
||||
val max = min | ~mask
|
||||
(inetAddress: InetAddress, host: String) => inetAddress match {
|
||||
(inetAddress: InetAddress, host: String) => Some(inetAddress match {
|
||||
case v4: Inet4Address =>
|
||||
val numeric = InetAddresses.coerceToInteger(v4)
|
||||
min <= numeric && numeric <= max
|
||||
case _ => true // Can't check IPv6 addresses so we pass them.
|
||||
}
|
||||
})
|
||||
case _ =>
|
||||
val address = InetAddress.getByName(value)
|
||||
(inetAddress: InetAddress, host: String) => host == value || inetAddress == address
|
||||
(inetAddress: InetAddress, host: String) => Some(host == value || inetAddress == address)
|
||||
} catch {
|
||||
case t: Throwable =>
|
||||
OpenComputers.log.warn("Invalid entry in internet blacklist / whitelist: " + value, t)
|
||||
(inetAddress: InetAddress, host: String) => true
|
||||
(inetAddress: InetAddress, host: String) => None
|
||||
}
|
||||
|
||||
def apply(inetAddress: InetAddress, host: String) = validator(inetAddress, host)
|
||||
|
@ -360,10 +360,10 @@ object InternetCard {
|
||||
}
|
||||
|
||||
def checkLists(inetAddress: InetAddress, host: String) {
|
||||
if (Settings.get.httpHostWhitelist.length > 0 && !Settings.get.httpHostWhitelist.exists(_ (inetAddress, host))) {
|
||||
if (Settings.get.httpHostWhitelist.length > 0 && !Settings.get.httpHostWhitelist.exists(i => i.apply(inetAddress, host).getOrElse(false))) {
|
||||
throw new FileNotFoundException("address is not whitelisted")
|
||||
}
|
||||
if (Settings.get.httpHostBlacklist.length > 0 && Settings.get.httpHostBlacklist.exists(_ (inetAddress, host))) {
|
||||
if (Settings.get.httpHostBlacklist.length > 0 && Settings.get.httpHostBlacklist.exists(i => i.apply(inetAddress, host).getOrElse(true))) {
|
||||
throw new FileNotFoundException("address is blacklisted")
|
||||
}
|
||||
}
|
||||
|
@ -119,6 +119,20 @@ object PackedColor {
|
||||
private val greens = 8
|
||||
private val blues = 5
|
||||
|
||||
private val staticPalette = new Array[Int](240)
|
||||
|
||||
{
|
||||
for (index <- staticPalette.indices) {
|
||||
val idxB = index % blues
|
||||
val idxG = (index / blues) % greens
|
||||
val idxR = (index / blues / greens) % reds
|
||||
val r = (idxR * 0xFF / (reds - 1.0) + 0.5).toInt
|
||||
val g = (idxG * 0xFF / (greens - 1.0) + 0.5).toInt
|
||||
val b = (idxB * 0xFF / (blues - 1.0) + 0.5).toInt
|
||||
staticPalette(index) = (r << rShift32) | (g << gShift32) | (b << bShift32)
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize palette to grayscale, excluding black and white, because
|
||||
// those are already contained in the normal color cube.
|
||||
for (i <- palette.indices) {
|
||||
@ -130,16 +144,7 @@ object PackedColor {
|
||||
|
||||
override def inflate(value: Int) =
|
||||
if (isFromPalette(value)) super.inflate(value)
|
||||
else {
|
||||
val index = value - palette.length
|
||||
val idxB = index % blues
|
||||
val idxG = (index / blues) % greens
|
||||
val idxR = (index / blues / greens) % reds
|
||||
val r = (idxR * 0xFF / (reds - 1.0) + 0.5).toInt
|
||||
val g = (idxG * 0xFF / (greens - 1.0) + 0.5).toInt
|
||||
val b = (idxB * 0xFF / (blues - 1.0) + 0.5).toInt
|
||||
(r << rShift32) | (g << gShift32) | (b << bShift32)
|
||||
}
|
||||
else staticPalette((value - palette.length) % 240)
|
||||
|
||||
override def deflate(value: Color) = {
|
||||
val paletteIndex = super.deflate(value)
|
||||
|
@ -2,7 +2,6 @@ package li.cil.oc.util
|
||||
|
||||
import java.io.InputStreamReader
|
||||
import java.net.URL
|
||||
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.stream.JsonReader
|
||||
import li.cil.oc.OpenComputers
|
||||
@ -10,6 +9,7 @@ import li.cil.oc.Settings
|
||||
import net.minecraftforge.fml.common.Loader
|
||||
import net.minecraftforge.fml.common.versioning.ComparableVersion
|
||||
|
||||
import java.util.Objects
|
||||
import scala.collection.mutable
|
||||
import scala.concurrent.ExecutionContext.Implicits.global
|
||||
import scala.concurrent.Future
|
||||
@ -32,9 +32,20 @@ object UpdateCheck {
|
||||
while (reader.hasNext) {
|
||||
val release: Release = new Gson().fromJson(reader, classOf[Release])
|
||||
if (!release.prerelease) {
|
||||
// Handle the newer version format: mcVersion/release
|
||||
var versionMatch = true
|
||||
if (release.tag_name.contains("/")) {
|
||||
val tagNameParts = release.tag_name.split("/", 2)
|
||||
if (tagNameParts.length >= 2) {
|
||||
release.tag_name = tagNameParts(1)
|
||||
versionMatch = Objects.equals(OpenComputers.McVersion, tagNameParts(0))
|
||||
}
|
||||
}
|
||||
if (versionMatch) {
|
||||
candidates += release
|
||||
}
|
||||
}
|
||||
}
|
||||
reader.endArray()
|
||||
if (candidates.nonEmpty) {
|
||||
val latest = candidates.maxBy(release => new ComparableVersion(release.tag_name.stripPrefix("v")))
|
||||
|
Loading…
x
Reference in New Issue
Block a user